Inserimento loop in una INSERT query in PHP e MySQL

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Salve, ho un quesito da porre.
Brevemente…voglio inserire dei dati in un database utilizzando tre select a loro volta suddivisi per ordine alfabetico.
I valori delle select vengono estrapolati dal database come mostrato sotto per poi essere visualizzati nel form.

PHP:
//QUERY SQL FOR LINGUE FROM A-F
$richiestaSQL = "SELECT id, english FROM lingue WHERE english BETWEEN 'A' AND 'G' ORDER BY english ASC";
$resultOne = mysql_query($richiestaSQL , $connection);


 
if(!$resultOne) {
die ("I dati non sono stati inseriti nel database: <br />". mysql_error( ));
	
}





//QUERY SQL FOR LINGUE FROM G-N
$richiestaSQL = "SELECT id, english FROM lingue WHERE english BETWEEN 'G' AND 'O' ORDER BY english ASC";
$resultTwo = mysql_query($richiestaSQL , $connection);


 
if(!$resultTwo) {
die ("I dati non sono stati inseriti nel database: <br />". mysql_error( ));
	
}




//QUERY SQL FOR LINGUE FROM M-Z
$richiestaSQL = "SELECT id, english FROM lingue WHERE english > 'O' ORDER BY english ASC";
$resultThree = mysql_query($richiestaSQL , $connection);


 
if(!$resultThree) {
die ("I dati non sono stati inseriti nel database: <br />". mysql_error( ));
	
}

Fatto questo invio il form per richiamare lo script per inserire i dati. Creo quindi un array del valore proveniente dalle select (il valore è sempre uno, mai tre. L 'utente può sceglierne uno da tre select suddivisi per ordine alfabetico).
Creo quindi un loop prima della query, ma poi a video vengono visualizzate tre righe: due vuote ed una con il valore espresso dall'utente.
Domanda: come faccio ad inserire solo quel valore proveniente da uno dei tre select?

PS: la colonna interessata è lingueID.

Spero di essermi spiegato bene.

Grazie

PHP:
$form = $_POST['submit'];

//RICHIAMO I VALORI ESPRESSI DAI SELECT
$lingueOne = $_POST['lingueOne']; 
$lingueTwo = $_POST['lingueTwo']; 
$lingueThree = $_POST['lingueThree']; 


if(isset($form)) {
include 'connection.php';

$lingue = array($lingueOne, $lingueTwo, $lingueThree);
foreach($lingue as $value) {
//QUERY SQL
$richiestaSQL = "INSERT INTO collezione (nameItem, sku, opzioneOne, descrizione, lingueID, categoriaID, flagID) VALUES ('$nameItem', '$sku', '$opzione', '$descrizione', '$value', '$categoria', '$flag' )";
$result = mysql_query($richiestaSQL , $connection);
}
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, controlla che non sia vuoto prima di fare la INSERT
PHP:
if(!empty($value)) {
    // fai la insert
}
ps:
la logica della pagina php cmq non è corretta : dovresti controllare se il post è settato prima di valorizzare le variabili
il post poi è già un array potresti ciclarlo direttamente senza creare un nuovo array
 

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Ciao Ciric e grazie per la risposta e gli accorgimenti.

Ho fatto cosi.
Valido l'invio delle select e creo i valori in tre variabili


PHP:
//VERIFICO INVIO LINGUE
if(isset($_POST['lingueOne']) && isset($_POST['lingueTwo']) && isset($_POST['lingueThree'])) {

$lingueOne = $_POST['lingueOne']; 
$lingueTwo = $_POST['lingueTwo']; 
$lingueThree = $_POST['lingueThree']; 
}

Poi se nessun valore è vuoto chiamo la query insert.
Non ho creato un nuovo ciclo per i valori delle select, ma le ho raggruppate tutte in una variabile.
Non so se dal punto di vista della sintassi è giusto, ma vedo che ora funziona.

PHP:
$lingue = $lingueOne;
$lingue .= $lingueTwo;
$lingue .= $lingueThree;

if(!empty($lingue)) {
$richiestaSQL = "INSERT INTO collezione (nameItem, sku, opzioneOne, descrizione, lingueID, categoriaID, flagID) VALUES ('$nameItem', '$sku', '$opzione', '$descrizione', '$lingue', '$categoria', '$flag' )";