Maison  >  Article  >  développement back-end  >  Comment insérer plusieurs tableaux de cases à cocher et de zones de texte dans une base de données MySQL : résoudre les problèmes courants

Comment insérer plusieurs tableaux de cases à cocher et de zones de texte dans une base de données MySQL : résoudre les problèmes courants

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 11:10:121008parcourir

  How to Insert Multiple Checkbox and Textbox Arrays into a MySQL Database: Addressing Common Issues

Insertion de plusieurs tableaux de cases à cocher et de zones de texte dans une base de données MySQL : résolution des problèmes courants

Les requêtes impliquant plusieurs tableaux de cases à cocher et de zones de texte peuvent poser des défis en PHP. Cet article aborde deux problèmes spécifiques : pourquoi les cases à cocher s'affichent comme cochées même lorsqu'elles ne le sont pas, et pourquoi les données ne parviennent pas à être insérées dans la base de données.

Problème d'affichage des cases à cocher

Le coupable est l'utilisation d'implode, qui génère une chaîne de toutes les valeurs de case à cocher séparées par des virgules. Cette approche insère incorrectement la liste entière dans chaque ligne de la base de données, qu'une case spécifique soit cochée ou non.

Pour remédier à cela, attribuez des index explicites aux noms des cases à cocher dans le code HTML du formulaire. Ce faisant, les valeurs des cases à cocher correspondantes dans le tableau $_POST['checkbox'] peuvent être facilement liées aux éléments $_POST['item'] et $_POST['quantity'] qui les accompagnent sans recourir à l'implosion.

Échec d'insertion de la base de données

Un autre problème survient en raison du fait que les cases à cocher ne soumettent que les valeurs des éléments cochés. Cela conduit à une inadéquation entre les index du tableau $_POST['checkbox'] et les éléments $_POST['item'] et $_POST['quantity'] correspondants.

Pour résoudre ce problème, utilisez les index attribués aux noms de cases à cocher sous la forme modifiée. Cela permet d'associer correctement les valeurs, garantissant que chaque ligne de la base de données contient le bon ensemble de données.

De plus, au lieu d'utiliser mysql_query, utilisez la méthode $conn->query(), qui est cohérent avec l'API MySQLi utilisée pour la connexion à la base de données.

Code PHP mis à jour :

<br>$stmt = $conn->prepare(" INSÉRER DANS les achats (Produit, Quantité, Prix) VALUES (?, ?, ?)");<br>$stmt->bind_param("sis", $name, $quantity, $price);<br>foreach ( $_POST['checkbox'] as $i => $price) {</p>
<pre class="brush:php;toolbar:false">$name = $_POST['name'][$i];
$quantity = $_POST['quantity'][$i];
$stmt->execute();

}

Mesure de sécurité supplémentaire

Par mesure de sécurité, il est généralement conseillé de récupérer les prix depuis la base de données plutôt que de les stocker dans le HTML. Cela empêche les utilisateurs de modifier les prix dans l'inspecteur Web avant de soumettre le formulaire.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn