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 6 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 6 anni fa
Mario Santagiuliana
modificato 6 anni fa
X 0 X

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

risposto 6 anni fa
iTek
iTek
1
X 0 X

Comunque la mia risposta era scorretta!!!

Me ne sono accorto ora.

Scusate.

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