Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Insert multiple a partire da form html

    Ciao,
    ho la seguente esigenza: a partire dalla pagina form.html che contiene i campi: nome, articolo e quantità, posso creare più righe e tramite una submit, invio alla pagina insert.php che ha il compito di inserire nella tabella tbl_articoli le righe definite nella form.html

    Esempio:
    Nella pagina form.html posso creare dinamicamente ( a seconda delle esigenze) due o tre righe. Cliccando sul pulsante submit, invio tramite _POST i valori dei campi nome, articolo, quantità alla pagina insert.php. Quindi nella tabella mi aspetto due o tre righe.

    Il campo Codice deve essere ripetuto uguale per tutte le righe inserite.
    Attualmente, lo script sembra andare a buon fine, ma non inserisce nulla nella tabella mysql e non segnala nemmeno errori.

    Pagina form.html

    codice HTML:
    <head>
        <script type="text/javascript" src="js/script.js"></script> 
    </head>
    <body>    
        <form action="insert.php" method="POST">
    
                <p> 
                    <input type="button" value="Add Passenger" onClick="addRow('dataTable')" /> 
                    <input type="button" value="Remove Passenger" onClick="deleteRow('dataTable')"  /> 
                </p>
               <table id="dataTable" border="1">
                  <tbody>
                    <tr>
                        <td>
                            <label>Codice</label>
                            <input type="text" name="mx_codice" value="425882258">
                         </td>
                        <td>
                            <label>Nome</label>
                            <input type="text" name="mx_Nome[]">
                         </td>
                         <td>
                        <td>
                            <label>articolo</label>
                            <input type="text"  name="mx_articolo[]">
                         </td>
                        <td>
                            <label>quantità</label>
                            <input type="text"  name="mx_qta[]">
                         </td>                     
                    </tr>
                    </tbody>
                </table>
            <input class="submit" type="submit" value="Confirm" />
        </form>
    </body>
    Pagina insert.php
    Codice PHP:
    <?
    $insert 
    = array();
    for(
    $i=0$i count($_POST['mx_codice']); $i++)
    {
        
    $mx_codice = isset($_POST['mx_codice'][$i]) ? $_POST['mx_codice'][$i] : '';
        
    $mx_Nome = isset($_POST['mx_Nome'][$i]) ? $_POST['mx_Nome'][$i] : '';
        
    $mx_articolo = isset($_POST['mx_articolo'][$i]) ? $_POST['mx_articolo'][$i] : '';
        
    $mx_qta = isset($_POST['mx_qta'][$i]) ? $_POST['mx_qta'][$i] : '';
        ...
        
    $insert[] = "({$mx_codice}{$mx_Nome}{$mx_articolo}{$mx_qta})";
    }
    $values implode(', '$insert);
    $query "INSERT INTO tbl_test VALUES $values";
    //execute it
    ?>
    Come posso modificare la Insert affinchè inserisca i valori ricevuti nelle variabili _POST su più righe contemporaneamente?


    Grazie
    Ultima modifica di azocomposto; 02-08-2015 a 18:30

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    PHP non consente l'esecuzione di query multiple per ragioni di sicurezza, devi eseguire una query per ogni valore.

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    PHP non consente l'esecuzione di query multiple per ragioni di sicurezza, devi eseguire una query per ogni valore.
    Pensavo fosse più semplice, magari usando un array.
    Quindi se PHP non lo consente, come consigli di muovermi?

  4. #4
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    PHP non consente l'esecuzione di query multiple per ragioni di sicurezza, devi eseguire una query per ogni valore.
    Cercando online, ho trovato mille risposte ad altri post di utenti che presentano lo stesso problema. Tutti utilizzano array o foreach. Siccome nonsono un grande esperto, spero di avere un vostro consiglio.


    Grazie

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Il foreach serve per eseguire le singole query, non per riunire tutti i dati in una
    Codice PHP:
    foreach ( $array_dati as $dato )
    {
        
    $query "insert into tabella (colonna) values ('$dato')";
        
    mysqli_query($link$query);


  6. #6
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Il foreach serve per eseguire le singole query, non per riunire tutti i dati in una
    Codice PHP:
    foreach ( $array_dati as $dato )
    {
        
    $query "insert into tabella (colonna) values ('$dato')";
        
    mysqli_query($link$query);

    Si esatto, il mio intento non è inserirli tutti in un blocco unico con una singola query, ma bensì inserire tutti i valori presenti nel form. Il modo col quale vanno inseriti lo chiedevo appunto.

    Per cui mi sembra di capire che la soluzione migliore per inserire ciascuna riga del form in altrettante righe della tabella mysql sia il foreach. Corretto?

    Nel tuo esempio è presente solo un campo, ma nel caso ne avessi tre, come devo costruire lo script?

    foreach ( $array_dati as $dato )
    {
    $query = "insert into tabella (colonna1, colonna2, colonna3) values ('$colonna1',$colonna2, $colonna3)";
    mysqli_query($link, $query);
    }


    Corretto?
    Ultima modifica di azocomposto; 02-08-2015 a 20:35

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Si, puoi riempire tutti i campi che ti pare, basta che siano di una riga alla volta.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.