Insertion de plusieurs tableaux de cases à cocher
Si les valeurs des cases à cocher ne sont pas une fois inséré dans la base de données, il pourrait y avoir une différence entre les index de l'attribut name dans notre HTML et les éléments du tableau PHP. Pour résoudre ce problème, nous devons définir explicitement des index uniques pour chaque élément de case à cocher :
<code class="html"><input tabindex="1" name="checkbox[0]" type="checkbox" value="17" /> <input tabindex="1" name="checkbox[1]" type="checkbox" value="20" /></code>
Cela garantira que chaque case à cocher a son propre index unique dans le tableau $_POST['checkbox'].
Empêcher l'insertion de cases à cocher non cochées
Pour empêcher l'insertion de cases à cocher non cochées dans la base de données, nous devons explicitement vérifier si chaque case à cocher a été cochée avant d'insérer sa valeur :
<code class="php">if(isset($_POST['checkbox'])) { foreach($_POST['checkbox'] as $check) { if(!empty($check)) { $check = implode(',', $_POST['checkbox']); $name = implode(',', $_POST['item']); $quantity = implode(',', $_POST['quantity']); } }</code>
Utilisation de la méthode d'instruction préparée pour les requêtes d'insertion
Au lieu d'utiliser mysql_query, il est recommandé d'utiliser des instructions préparées pour les requêtes d'insertion afin d'éviter les attaques par injection SQL. Voici comment modifier votre méthode d'insertion :
<code class="php">$stmt = $conn->prepare("INSERT INTO purchases (Product, Quantity, Price) VALUES (?, ?, ?)"); $stmt->bind_param("sis", $name, $quantity, $price); foreach ($_POST['checkbox'] as $i => $price) { $name = $_POST['name'][$i]; $quantity = $_POST['quantity'][$i]; $stmt->execute(); }</code>
Autres considérations
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!