problema con foreach e query mysql

ciao,

ho una pagina con 3 form select multiple. I dati selezionati vengono spediti via POST al file di controllo che dovrebbe inserirli, tramite query nel DB mysql.

i nomi delle select sono:

<select name="ambito[]">

<select name="distretto[]">

<select name="comune[]">

tutti i dati contenuti in ciascuno di questi array, dovrebbero essere inseriti in un unica tabella chiamata "tbl_associazioni".

tbl_associazioni:

id_ambito

id_distretto

id_comune

com'è intuibile, si tratta degli ID di altre tabelle per creare le associazioni.

Il problema qual'è: come faccio ad inserire questi dati nella tabella tbl_associazioni.

se si trattasse di una sola select, con un semplice foreach:

if (isset($_POST['ambito'])) {
        foreach ($_POST['ambito'] as $value) {
                $strSQL = "INSERT INTO tbl_associazioni ( id_ambito ) VALUES ( '$value')";
        
       $result = dbQuery($strSQL);

oplà il gioco è fatto...MA con 3 select????

ho provato a fare 3 foreach con 3 query, ma alla seconda mi da errore.... :buck:

come posso fare per risolvere il problema??

Grazie

inviato 7 anni fa
iTek
iTek
1
X 0 X

Una cosa tipo questa? Premettendo che la lunghezza dei 3 array è uguale, giusto?

if (isset($_POST['ambito'] && $_POST['distretto'] && $_POST['comune'])) {
        // Da eseguire tutti i controlli del caso sui dati in input (evitare dunque SQL injection per esempio)
        $ambito = $_POST['ambito'];
        $distretto = $_POST['distretto'];
        $comune = $_POST['comune'];
        $lunghezza = count($_POST['ambito']); //immagino che gli array abbiano la stessa dimensione
        for($i = 0; $i <= $lunghezza; $i++){
                $strSQL = "INSERT INTO tbl_associazioni ( id_ambito, id_distretto, id_comune ) VALUES ( $ambito[$i], $distretto[$i], $comune[$i] )";
        }
        
       //ora eseguo la query
       $result = dbQuery($strSQL);

Facci sapere!!!

P.S. non chiamarle "select" le richieste al database ma query. La tua query è un insert non un select.

risposto 7 anni fa
Mario Santagiuliana
modificato 7 anni fa
X 0 X

Grazie per la risposta, ma ho risolto modificando il Database...così com'era non andava bene  O0

risposto 7 anni fa
iTek
iTek
1
X 0 X

Comunque la mia risposta era scorretta!!!

Me ne sono accorto ora.

Scusate.

risposto 7 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda