2013-11-24 11 views
8

Non riesco a trovare o capire una soluzione funzionante per inserire più valori di casella di controllo da un modulo in una tabella. Le chiusure sono arrivate sta inserendo il valore di un solo valore di spunta in una tabella. Fai notare come posso inserire più valori di spunta e non solo uno.Come inserire più valori di checkbox in una tabella?

seguito troverete quello che ho finora:

La mia forma:

<html> 
<body> 
<form method="post" action="chk123.php"> 
Flights on: <br/> 
<input type="checkbox" name="Days" value="Daily">Daily<br> 
<input type="checkbox" name="Days" value="Sunday">Sunday<br> 
<input type="checkbox" name="Days" value="Monday">Monday<br> 
<input type="checkbox" name="Days" value="Tuesday">Tuesday <br> 
<input type="checkbox" name="Days" value="Wednesday">Wednesday<br> 
<input type="checkbox" name="Days" value="Thursday">Thursday <br> 
<input type="checkbox" name="Days" value="Friday">Friday<br> 
<input type="checkbox" name="Days" value="Saturday">Saturday <br> 
<input type="submit" name="submit" value="submit"> 
</form> 
</body> 
</html> 

Il mio file php per leggere e inserire i valori in una tabella:

<?php 

// Make a MySQL Connection 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("test") or die(mysql_error()); 

$checkBox = $_POST['Days']; 

if(isset($_POST['submit'])) 
{ 
    for ($i=0; $i<sizeof($checkBox); $i++) 
     { 
      $query="INSERT INTO example (orange) VALUES ('" . $checkBox[$i] . "')";  

      mysql_query($query) or die (mysql_error()); 
     } 
    echo "Complete"; 

} 

?> 
+1

ogni chiamata a mysql_query è costosa, si consiglia di unire la query a un singolo inserto concatenando i valori() dopo i valori. come ('a'), ('b'), ('c'), ... – ohmusama

+0

Tutte le funzioni di 'mysql _ *()' sono [** ufficialmente deprecate **] (http://j.mp/ XqV7Lp) * (non più supportato/mantenuto) * e sarà [** rimosso **] (http://j.mp/11j2t6j) in futuro. Dovresti aggiornare il tuo codice usando [PDO] (http://php.net/pdo) o [MySQLi] (http://php.net/msqli) per garantire funzionalità future. Anche il tuo codice è vulnerabile all'iniezione SQL. –

risposta

20

è necessario specificare

<input type="checkbox" name="Days[]" value="Daily">Daily<br> 

come array.

Aggiungere a tutti i nomi Days e lavorare su php con questo come un array.

Dopo di esso, è possibile INSERT valori a colonne diverse in db, oppure utilizzare implode e salvare valori in una colonna.


Non testato, ma puoi provare in questo modo. Non dimenticare di sostituire mysql con mysqli.

<html> 
<body> 
<form method="post" action="chk123.php"> 
Flights on: <br/> 
<input type="checkbox" name="Days[]" value="Daily">Daily<br> 
<input type="checkbox" name="Days[]" value="Sunday">Sunday<br> 
<input type="checkbox" name="Days[]" value="Monday">Monday<br> 
<input type="checkbox" name="Days[]" value="Tuesday">Tuesday <br> 
<input type="checkbox" name="Days[]" value="Wednesday">Wednesday<br> 
<input type="checkbox" name="Days[]" value="Thursday">Thursday <br> 
<input type="checkbox" name="Days[]" value="Friday">Friday<br> 
<input type="checkbox" name="Days[]" value="Saturday">Saturday <br> 
<input type="submit" name="submit" value="submit"> 
</form> 
</body> 
</html> 

<?php 

// Make a MySQL Connection 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("test") or die(mysql_error()); 

$checkBox = implode(',', $_POST['Days']); 

if(isset($_POST['submit'])) 
{  
    $query="INSERT INTO example (orange) VALUES ('" . $checkBox . "')";  

    mysql_query($query) or die (mysql_error()); 

    echo "Complete"; 

} 

?> 
+0

Ti dispiace gentilmente mostrarmelo nel codice? – SirBT

+0

Controlla il mio aggiornamento –

+0

Meraviglioso! L'ho controllato e si risparmiano diversi giorni in una colonna. Come posso ottenere che ogni giorno venga salvato su ogni riga? – SirBT

0

penso che questo dovrebbe funzionare .. :)

<input type="checkbox" name="Days[]" value="Daily">Daily<br> 
<input type="checkbox" name="Days[]" value="Sunday">Sunday<br> 
+0

gentilmente essere un po 'più specifico. – SirBT

+0

Penso che capirai .. :( – Drudge

4

è necessario dichiarare la matrice nel codice HTML tramite

<input type="checkbox" name="Days[]" value="Daily"> 

Inoltre è possibile inserire più articoli con una query come questa

$query = "INSERT INTO example (orange) VALUES "; 
for ($i=0; $i<count($checkBox); $i++) 
    $query .= "('" . $checkBox[$i] . "'),"; 
$query = rtrim($query,','); 
mysql_query($query) or die (mysql_error()); 

Anche tenere a mente che mysql_* funzioni sono officially deprecated e quindi non devono essere utilizzati nel nuovo codice. Puoi usare PDO o MySQLi invece. Vedere this answer on SO per ulteriori informazioni.

Problemi correlati