[MySQL] copiare campo precedente

blasco46

Utente Attivo
22 Set 2016
51
0
6
32
Buongiorno, premetto che uso Mysql e phpmyadmin.....avrei la necessità di copiare in un campo della stessa tabella il valore del campo precedente in maniera automatica...praticamente quando vado ad inserire un nuova riga il valore di un campo deve copiarlo dal valore della riga precedente...qualcuno ha qualche idea di come poter fare? Ho provato con qualche trigger ma mi restituisce sempre errore :(
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prima una domanda:
questo campo, dopo che hai fatto l'insert, viene uppato per qualche ragione in qualche modo?
perchè se non viene uppato tale campo avrà in tutti i record lo stesso valore del primo record
a questo punto se non viene uppato sorge la domanda "a che ti serve un campo che abbia sempre lo stesso valore?"
se invece uppi e usi php, prova questo script
PHP:
//dati connessione
//.....
$query=mysqli_query($connessione,"SELECT campo FROM tabella ORDER BY id DESC LIMIT 1");
$riga=mysqli_fetch_assoc($query);
$campo_da_ins=$riga['campo'];
//...
$query=mysqli_query($connessione,"INSERT INTO tabella(altro_0,campo, altro_1, altro_2) VALUES('$pinco,'$campo_da_ins','$pallo','$pallino')");
//....
 
  • Like
Reactions: blasco46

blasco46

Utente Attivo
22 Set 2016
51
0
6
32
ho una tabella con 4 campi che sono seriale,commessa,codice,scatola........i campi commessa e codice sono impostati di default e ogni volta che inserisco un seriale in automatico vengono inseriti...il campo scatola invece deve cambiare.....ad esempio sparo il primo seriale e metto scatola1...quando vado a sparare il secondo seriale ricopia scatola1 nel campo di prima e la inserisce in automatico senza che inserisco di nuovo....arriverà il punto in cui sparerò un altro seriale e inserirò scatola2...quindi successivamente il seriale dopo copierà scatola2 dal precedente...e così via.....purtroppo mi da sempre errore:(
 

blasco46

Utente Attivo
22 Set 2016
51
0
6
32
per sparare intendo che prendo il seriale da una pistola ottica...ma è come se inserissi normalmente da tastiera...scusa se non sono stato chiaro
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se non ho capito male tu in pratica "spari" con la pistola ottica, il valore come viene ricevuto? con un $_POST?
poi, non so come, puoi "sparare" e inserire il valore che andra nel campo scatola (anche questo via $_POST?)
mentre i campi commessa e codice si inseriscono in automatico immagino in funzione del seriale
giusto sin qui? se è così potresti strutturare il codice in questo modo (schematizzo e metto i nomi a caso)
PHP:
//....... dati connessione...
$seriale=$_POST['seriale'];
//qui lo sai tu da dove saltano fuori i valori per commessa e codice
if(!isset($_POST['scatola'])){
    //cioè non hai inserito il valore della scatola
    //usi il codice che ti ho postato, cioè ricavi l'ultimo valore di scatola
    $query=mysqli_query($connessione,"SELECT campo FROM tabella ORDER BY id DESC LIMIT 1");//in pratica l'ultimo valore di scatola inserito
    $riga=mysqli_fetch_assoc($query);
    $scatola=$riga['scatola'];
    //...
}else{
    //oltre a sparare hai inserito la scatola
    $scatola=$_POST['scatola'];
}
//qui ilvalore di scatola o viene dall'ultimo record o da quello che hai inserito
$query=mysqli_query($connessione,"INSERT INTO tabella(seriale,commessa, codice, scatola) VALUES('$seriale,'$commessa','$codice','$scatola')");
//.....
il tutto sempre che non abbia capito male
 

blasco46

Utente Attivo
22 Set 2016
51
0
6
32
PRATICAMENTE HO FATTO QUESTO TRIGGER BEFORE INSERT:
.....
BEGIN
IF substring(NEW.seriale,1,10) <> '21000216J-' THEN // FACCIO UN CONTROLLO SULL'INIZIO DEL SERIALE
SET NEW.seriale = NULL;
END IF;
INSERT INTO (`Scatola`)
SELECT `Scatola` FROM `marini-as3236` ORDER BY `id_seriale` DESC LIMIT 1 // VORREI INSERIRE L'ULTIMA SCATOLA
END

COSì MI DA ERRORE DI SINTASSI :(
 

blasco46

Utente Attivo
22 Set 2016
51
0
6
32
L'ERRORE è QUESTO::(
Si sono verificati uno o più errori durante l'esecuzione della tua richiesta: La seguente query è fallita: "CREATE DEFINER=`root`@`localhost` TRIGGER `CONTROLLO1` BEFORE INSERT ON `marinias3236` FOR EACH ROW BEGIN IF substring(NEW.seriale,1,10) <> '21000216J' THEN SET NEW.seriale = NULL; END IF; INSERT INTO (`Scatola`) SELECT `Scatola` FROM `marinias3236` ORDER BY `id_seriale` DESC LIMIT 1 END" Messaggio di MySQL: #1064 Errore di sintassi nella query SQL vicino a '(`Scatola`) SELECT `Scatola` FROM `marinias3236` ORDER BY `id_seriale` DESC LI' linea 5
 

blasco46

Utente Attivo
22 Set 2016
51
0
6
32
avevo dimenticato il nome tabella..ora il trigger me lo prende ma quando vado a fare un inserimento mi da questo::mad:
#1442 ‐ Can't update table 'marini‐as3236' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
hai provato a modificare gli apici o a toglierli?
es. (`Scatola`) diventa ('Scatola')
vedi la differenza degli apici?
ops non avevo visto il tuo ultimo
 
  • Like
Reactions: blasco46

blasco46

Utente Attivo
22 Set 2016
51
0
6
32
si ora il trigger me l ha preso correttamente ma quando vado ad inserire mi da l'errore che avevo in precedenza, cioè questo:
#1442 ‐ Can't update table 'marini‐as3236' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
da quello che capisco non può uppare (in pratica aprire la tabella) in quanto la tabella è gia in uso, immagino dalla select.
non so se puoi dividere le istruzioni
prima la select, sbattere il risultato da qualche parte, chiudere la select e fare l'uppaggio
oggi sono impegnato, se nonpuoi risolvere così, domani chiedo a qualcuno di darci un occhio
 
  • Like
Reactions: blasco46

blasco46

Utente Attivo
22 Set 2016
51
0
6
32
ok grazie mille...resto in attesa di aggiornamenti...intanto provo altre soluzioni
 

blasco46

Utente Attivo
22 Set 2016
51
0
6
32
ciao
da quello che capisco non può uppare (in pratica aprire la tabella) in quanto la tabella è gia in uso, immagino dalla select.
non so se puoi dividere le istruzioni
prima la select, sbattere il risultato da qualche parte, chiudere la select e fare l'uppaggio
oggi sono impegnato, se nonpuoi risolvere così, domani chiedo a qualcuno di darci un occhio
approfitto per chiederti un altra cosa se magari puoi aiutarmi:
come faccio a inserire in una colonna della tabella il nome dell'utente che si collega?
ho creato diversi utenti con phpmyadmin e in base a chi si collega vorrei avere nella tabella il suo nome....esiste un modo?
grazie in anticipo...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per sapere chi si collega puoi avere alcuni metodi, ma sempre non sicuri al 100% se vuoi conoscere il nome di chi si collega
potresti usare i cookie però vieni a sapere che si collega un determinato pc e non la persona oppure potresi fare un sistema di registrazione e per collegarsi l'utente deve dare una password e username, ma anche qui c'è lo stsso difetto, posso dare i miei dati a pinco pallo ed essere lui che si collega

per il problema del trigger ho segnalato, spero che qualcuno possa darti una risposta risolutiva
 
  • Like
Reactions: blasco46
Discussioni simili
Autore Titolo Forum Risposte Data
B [MySQL] copiare campo da tabella ad altra ed eliminarlo MySQL 0
C [MySQL] Copiare campi di un record in un nuovo record MySQL 0
F Help-PDO copiare Database MySQL PHP 3
simgia [MySQL] Copiare dati tra 2 tabelle MySQL 1
A copiare dati in mysql con drag & drop jQuery 0
Monital Copiare e modificare tabelle Mysql con php PHP 3
G copiare database MySQL Database 2
K form Inserimento record mysql PHP 2
P Mysql lento a cancellare MySQL 1
P Codifica caratteri speciali mysql php PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
W MySQL ciclo in SELECT MySQL 0
L Mysql gestionale multipiattaforma MySQL 0
W MySQL SELECT list dinamica MySQL 0
M utilizzo mysql in nodejs - crea createdAt e updateAt MySQL 1
T colonne di tabelle mysql ordinate MySQL 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
A Mysql MySQL 0
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
Z Controllo giorni MYSQL PHP 0
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
Z MySql injection PHP PHP 1
D controllare valore in tabella mysql PHP 0
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
T differenza fra mysql xampp e un mysql server Database 0
R Importazione csv su mysql tramite array PHP 2
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
D problema php mysql PHP 1
D problema php mysql PHP 1
N Server mysql non raggiungibile da connessione esterna MySQL 1
B Crea pdf da tabella mysql "ultima riga modificata" MySQL 4
D evitare di inserirre duplicati in mysql PHP 4
L salvare codice html in mysql PHP 3
L Google chart php mysql PHP 2
S Gestire scelta dropdown con dati da Mysql PHP 2
K cron job mysql PHP 3
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
R Errore UPDATE tabella mysql PHP 1
R Caricamento immagine su cartella remota + mysql PHP 3

Discussioni simili