- Home
- Categorie
- Coding e Sistemistica
- PHP
- passaggio valori campo set da checkbox
-
passaggio valori campo set da checkbox
Ciao a tutti, sono nuovo del forum e novizio del php/mysql.
Il mio problema è questo, non riesco a passare correttamente i valori da una checkbox a un campo del db.
la query di inserzione è questa:$Qry = "INSERT INTO pubblicazioni ( compilatore, isbn, titolo, sottotitolo, autore, sezione ) VALUES ( '$compilatore', '$isbn', '$titolo', '$sottotitolo', '$autore', '$sezione1' )";
il campo in questione (quello dichiarato come SET è <sezione>.
poi ho il seguente costrutto che legge i valori dal form e la funzione implode() che trasforma il vettore in stringa, giusto?
<php if (isset($_POST["sezione"])) { $sezione1 = implode(",",$_POST["sezione"]); } else { $sezione1=""; } ?> <INPUT TYPE=checkbox name="sezione[]" value="ecologia"> ecologia <INPUT TYPE=checkbox name="sezione[]" value="faunistica"> faunistica <INPUT TYPE=checkbox name="sezione[]" value="conservazione"> conservazione <INPUT TYPE=checkbox name="sezione[]" value="ripristino vegetazionale"> ripristino vegetazionale
allora, niente da fare... dov'è l'errore?
se passo i valori da un campo di testo, stando bene attenti a immettere le giuste voci del campo set tutto funziona, ma vorrei utilizzare il checkbox, è molto piu' comodo..
tramite un echo mi visualizzo come prova la variabile $sezione1 che viene settata in modo corretto...
ho anche provato a trasformare il campo set in campo testuale, ma ancora niente da fare, viene memorizzato il testo ARRAY. il problema deve essere nel checkbox e nella funzione implode.
ah, dimenticavo, l'errore (che poi non è un errore per mysql) è che il campo sezione rimane vuoto.
Suggerimenti?
-
Perchè non provi con un foreach:
For Each Item In Request.Form Sezione1 = Sezione1 & Item & " " Next
so che mi vorresti strozzare ma io sò solo asp, il problema è che ti becca tutti i campi del form così.
Provo a buttarlo giù in php ma non sò se è giusto:
foreach($_POST as $nome => $val) { Sezione1 .= $nome . " " }
Spero di essere stato d'aiuto
-
Ciao
Penso che l'errore sia questo: il NAME del campo non deve essere "sezione[]" ma solamente "sezione", altrimenti quando controlli con isset() dovresti scrivere " $_POST['sezione[]"] ".
Quindi io direi così:
<php if (isset($_POST["sezione"])) { $sezione1 = implode(",",$_POST["sezione"]); } else { $sezione1=""; } ?> <INPUT TYPE=checkbox name="sezione" value="ecologia"> ecologia <INPUT TYPE=checkbox name="sezione" value="faunistica"> faunistica <INPUT TYPE=checkbox name="sezione" value="conservazione"> conservazione <INPUT TYPE=checkbox name="sezione" value="ripristino vegetazionale"> ripristino vegetazionale
Poi non so.
-
grazie per la risposta,
si , inizialmente, ma per una svista, avevo nominato il checkbox con sezione ( senza le [] ), ma in questo caso la variabile $_POST['sezione'] memorizza l'ultimo checkbox spuntato (solamente l'ultimo), non è piu' una scelta multipla, ovvero $_POST['sezione'] è una variabile e non ha piu' senso la funzione implode.invece a me serve memorizzare in $_POST['sezione'] tutti i checkbox spuntati ( il name del checkbox con le [] serve prorpio a definire un array) e quindi in questo caso $_POST['sezione'] e' un array che poi posso implodere in una stringa.
questo e' corretto infatti echo $sezione1 mi restituisce la stringa ottenuta con $sezione1= implode(",", $_POST[sezione'])
ovvero i valori spuntati nella checkbox separati dalla virgola
es. valore1,valore2e fin qui tutto bene, ma quando vado ad inserire tale variabile nel database sembra come se $sezione1 è diventato un ARRAY
AIUTO!!!
qualcuno credo abbia già affrontato un simile caso, è abbastanza comune inserire in un campo di un db valori diversi (chesso' tipo colori preferiti)
-
@vitellozzo73 said:
e fin qui tutto bene, ma quando vado ad inserire tale variabile nel database sembra come se $sezione1 è diventato un ARRAY
Puoi provare a gestirlo come un array e fare un ciclo che ti metta tutto in un'altra variabile di tipo stringa.
Per es.
foreach($sezione1 as $a){ $sezione2 .= $a.", " }
non sò se la sintassi è giusta