web-dev-qa-db-fra.com

Comment insérer plusieurs valeurs de cases à cocher dans une table?

Je n'arrive pas à trouver ou à trouver une solution efficace pour insérer plusieurs valeurs de cases à cocher d'un formulaire dans un tableau. La fermeture que je viens est d'insérer la valeur d'une simple valeur de case à cocher dans une table. Veuillez indiquer comment je peux insérer plusieurs valeurs de case à cocher et non une seule.

Trouvez ci-dessous ce que j'ai jusqu'à présent:

Ma forme:

<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>

Mon fichier php pour lire et insérer les valeurs dans un tableau:

<?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";

}

?>
10
SirBT

Vous devriez spécifier 

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

comme tableau.

Ajoutez [] à tous les noms Days et travaillez avec php avec ceci comme un tableau.

Après cela, vous pouvez INSERT valeurs dans différentes colonnes à la base de données, ou utiliser implode et enregistrer les valeurs dans une colonne.


Je ne l'ai pas testé, mais vous pouvez essayer comme ça. N'oubliez pas de remplacer mysql par 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";

}

?>
22

Vous devez déclarer le tableau dans le code HTML via

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

Aussi, vous pouvez insérer plusieurs éléments avec une requête comme celle-ci.

$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() );

Notez également que les fonctions mysql_* sont officiellement obsolètes et ne doivent donc pas être utilisées dans le nouveau code. Vous pouvez utiliser PDO ou MySQLi à la place. Voir cette réponse sur SO pour plus d'informations.

4
kero

Je pense que cela devrait fonctionner .. :)

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