Maison >base de données >tutoriel mysql >Comment insérer efficacement plusieurs données de tableaux de cases à cocher et de zones de texte dans une base de données MySQL ?

Comment insérer efficacement plusieurs données de tableaux de cases à cocher et de zones de texte dans une base de données MySQL ?

DDD
DDDoriginal
2024-11-28 06:37:171005parcourir

How to Efficiently Insert Multiple Checkbox and Textbox Array Data into a MySQL Database?

Insérer plusieurs tableaux de cases à cocher et de zones de texte dans une base de données MySQL

Insérer plusieurs tableaux de cases à cocher et de zones de texte dans une base de données MySQL peut être une tâche délicate. Cela est particulièrement vrai lorsque les cases à cocher ne sont soumises que si elles sont cochées. Voici une explication détaillée de la façon d'y parvenir :

Formulaire HTML

Assurez-vous que chaque case à cocher a un index explicite dans son attribut de nom :

<input tabindex="1" name="checkbox[0]" type="checkbox" value="17" />

De plus, assurez-vous que les tableaux de zones de texte correspondent aux cases à cocher en ayant le même index dans leur nom attributs.

Script PHP

1. Gestion des cases à cocher :

Utilisez foreach pour parcourir le tableau de cases à cocher et indexer chaque valeur avec son index correspondant :

foreach($_POST['checkbox'] as $i => $check) {
    $checkArray[$i] = $check;
}

2. Combinaison de tableaux :

Étant donné que les index du tableau de cases à cocher peuvent ne pas s'aligner avec les autres tableaux, vous devez les combiner manuellement. Utilisez une autre boucle foreach pour parcourir le tableau de cases à cocher et combiner les valeurs avec les valeurs correspondantes des autres tableaux :

foreach($checkArray as $i => $check) {
    $itemArray[$i] = $_POST['item'][$i];
    $quantityArray[$i] = $_POST['quantity'][$i];
}

3. Insertion dans la base de données :

Maintenant que vous avez correctement combiné les tableaux, vous pouvez effectuer l'insertion dans la base de données. Utilisez une instruction préparée avec bind_param pour éviter l'injection SQL :

$stmt = $conn->prepare("INSERT INTO purchases (Product, Quantity, Price) VALUES (?, ?, ?)");
$stmt->bind_param("sis", $product, $quantity, $price);

foreach ($itemArray as $i => $product) {
    $quantity = $quantityArray[$i];
    $price = $_POST['price'][$i]; // Get the price from the HTML
    $stmt->execute();
}

Conseils supplémentaires :

  • Évitez de coder en dur les prix dans le HTML. Au lieu de cela, récupérez-les de la base de données pendant le traitement du formulaire.
  • Assurez-vous que la connexion à la base de données est ouverte à l'aide de la même API (MySQLi ou PDO) tout au long du code.
  • Utilisez exécuter() pour exécuter les éléments préparés. déclarations au lieu de mysql_query, qui fait partie de l'ancienne API MySQL.

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