insert multiple in simultanea

Ciao......

il mio quesito è il segunete:

utilizzando php in accoppiata con mysql riesco ad inserire tramite form un singolo record alla volta all'interno della tabella chiamata lavori. Il problema è quando voglio inserire simultaneamente due o più record della stessa tabella perchè ad esempio nello stesso lavoro ci sono due materiali diversi che vengono utilizzati...

GRAZIE:::::

inviato 5 anni fa
karbo
Dove trovi problemi, nella realizzazione del form oppure nell'esecuzione di più query di inserimento?Gianni Tomasicchio 5 anni fa
Praticamente il problema nasce già nel form perchè se inserisco solo un record non ci sono problemi \\FORM.html <form action="inseriscipersonaggio.php" method="post"> Nome:<input name="nome" id="nome" type="text" /> eta:<input name="nome" id="age" type="text" /> <input name="login" id="login" value="inserisci!" type="submit" /> </form> ma se l'utente già sul form ha la necessità di aggiungere in simultanea due record e non uno solo come faccio? Nella stessa pagina form.html devo aggiungere un altro form con altri inpu type? la pagina php che ricevkarbo 5 anni fa
X 0 X

Puoi usare una transazione:

1 - apri una transazione

2 - fai tutte le query che vuoi

3 - fai il commit della transazione, se tutto è andato bene. Se invece almeno una query è fallita, fai rollback

risposto 5 anni fa
Massimiliano Arione
X 0 X

Non è del tutto comprensibile quello che vuoi ottenere, per cui andando a tatto, è per caso un'insert multipla con singola query il risultato che vuoi ottenere?

Perché in tal caso MySQL supporta la seguente sintassi per insert multiple:

INSERT INTO `tabella` VALUES (1, 'abc'), (2, 'cde'), (3, 'efg'), ..., (n, 'xyz');

Nel manuale della INSERT di MySQL puoi trovare la documentazione su questo tipo di sintassi scorrendo un po' il testo.

risposto 5 anni fa
Andrea Turso
Andrea Turso
86
Ciao, la tua risposta mi è utile per l'applicazione che vorrei realizzare. Il punto è che sulla insert: INSERT INTO `tabella` VALUES (1, 'abc'), (2, 'cde'), (3, 'efg'), ..., (n, 'xyz'); vorrei inserire il solito nome del campo "nome" proveniente da un form dove l'utente compila gli input type che poi riprendo nella pagina php: INSERT INTO `persone` VALUES (nome, 'luca'), (nome, 'elisa'), (nome, 'efg'), ..., (n, 'xyz'); Per adesso ho aggirato  il problema mettendo sul form il campo id  (chiave primaria) come campo nascosto, lo passo come variabile e seleziono nel DB tutti i records che sono collegati a detta chiave. Saluti, LUCAkarbo 5 anni fa
@karbo Ancora non mi è del tutto chiaro quello che vuoi fare. Stai cercando di fare un'insert e poi utilzzare la chiave primaria (id) della prima insert per poi referenziare i record della seconda insert?Andrea Turso 5 anni fa
X 0 X

Ciao,

quello cho ho è questo:

1  file form.html

<form action="inserisci.php" method="post">
         <input name="lavori" id="lavori" type="text" />

    <input name="fattura" id="fattura" type="text" />
          <input name="login" id="login" value="inserisci!" type="submit" />

</form>

2 ed un file  inserisci.php che riceve le variabili, esegue una query, inserendo i records sul DB.

3 tabella lavori così articolata:

id         fattura            lavori

01           1            demolizione

02           3            pavimentazione

03           1            verniciatura

04          4             pavimentazione

quello di cui ho bisogno è questo:

in sede di input ad esempio la fattura identificata dal campo 1 la vorrei inserire insieme a due valori diversi del campo lavori in simultanea cioè: inserire demolizione e verniciatura nel record fattura  1 in simultanea.


Spero ke così sia più chiaro, Grazie...

risposto 5 anni fa
karbo
Allora è proprio la struttura delle tue tabelle ad essere errata. In pratica tu stai associando ogni lavoro ad una fattura, e questo lo fai correttamente, e poi vorresti associare uno o più tipologie di lavoro al lavoro sulla tabella lavori (passami il gioco di parole). La mia interpretazione è corretta?Andrea Turso 5 anni fa
in parte la tua interpretazione è giusta. Io vorrei inserire ogni lavoro nella fattura corrispondente. Può succedere a volte di dover inserire all'interno dello stesso form due o più lavori diversi riferiti alla solita fattura Salutikarbo 5 anni fa
Credo che dovresti ristrutturare il database, riordinando il verso delle tue associazioni. Prova a usare le regole di lettura per esplicitare le associazioni che hai disegnato, così possiamo capire innanzitutto se il database è a posto, dopo di che passiamo a capire se il programma è okay. Ad ogni modo ti consiglio di dare un'occhiata ai corsi PHP Mysql e di Progettazione dei Database nella sezione Corsi di PHPNews.it e di leggere quest'articolo sulle regole di lettura http://www.e-socrates.org/mod/page/view.php?id=1379Andrea Turso 5 anni fa
Allora leggo l'articolo che mi hai segnalato e ti faccio sapere...graziekarbo 5 anni fa
Quando hai fatto posta pure la lettura della base di dati così che sia possibile vedere se c'è qualche errore, poi possiamo andare avanti.Andrea Turso 5 anni fa
X 0 X

Allora nel mio DB ho due tabelle. La prima è quella delle fatture, ogni fattura ha una chiave primaria univoca che rende la fattura una ed una sola. La seconda tabella è quella dei lavori, anch'essi hanno un identificativo univoco ed in più un campo foreign key composto dall'id della fattura. La relazione è una fattura può avere uno o più lavori. Un lavoro può avere una ed una sola fattura.

Risolvo il problema facendo una query sulla tabella fattura attraverso una SELECT id_fattura,oggetto_fattura id_lavoro, oggett_lavoro INNER JOIN where id="ad esempio 1";

X l'INSERT stesso discorso; sul form input invio i dati per riempire la tabella fattura e il lavoro con l'id_fattura specifico della fattura stessa.

IL PROBLEMA é: come faccio in fase di input ad inserire due o più lavori appartenenti alla stessa fattura in simultanea? RIempio il form di tanti input type che ripetono l'oggetto e l'id del lavoro tante volte quanti sono i lavori che voglio inserire OPPURe esiste un metodo dinamico per far comparire tanti input type quanti sono i lavori che effettivamente di volta in volta devo inserire? A seconda dei casi i lavori possono non esserci, essercene uno solo, due, tre, quattro...

GRAZIE

risposto 5 anni fa
karbo
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda