Enregistrez plusieurs valeurs de case à cocher et différentes valeurs d'entrée dans leur ensemble dans la base de données
P粉807471604
2023-08-31 11:17:47
<p>J'essaie d'insérer des données/valeurs dans ma base de données. </p>
<p>Cela fonctionne, mais le problème est que chaque fois que je sélectionne uniquement la deuxième valeur/case à cocher, ses autres valeurs d'entrée obtiennent la valeur de la première entrée. </p>
<pre class="brush:php;toolbar:false;"><form action="{{url('/reservation')}}" method="post">
@csrf
<div class="ligne col-12">
<div>
<p class='mybox text-dark'><input type="checkbox" nom="prod_name[]" value="JasminBooks"/>JasminBooks</p>
</div>
<div>
<type d'entrée="numéro" nom="qté_prod[]" min="1" valeur="1"classe="contrôle de formulaire ml-2""
</div>
<div class="ligne col-12">
<div>
<p class='mybox text-dark'><input type="checkbox" nom="prod_name[]" value="KnowHowBooks"/>KnowHowBooks</p>
</div>
<div>
<type d'entrée="numéro" nom="qté_prod[]" min="1" valeur="1"classe="contrôle de formulaire ml-2">
</div>
</div>
</form></pre>
<p>Voici le code de la fonction de mon contrôleur</p>
<pre class="brush:php;toolbar:false;">réservation de fonction publique (Request $request)
{
$data = nouvelle réservation ;
$data->nom = $request->nom;
$data->email = $request->email;
$data->téléphone = $request->téléphone ;
$data->adresse = $request->adresse;
$data->date = $request->date;
$data->heure = $request->heure;
$produits = nul ;
$checked_array = $_POST['nom_prod'];
foreach($_POST['prod_name'] as $key => $value) {
if (in_array($_POST['prod_name'][$key], $checked_array)) {
$products .= $_POST['prod_qty'][$key]." ".$_POST['prod_name'][$key].", ";
}
}
$data->produits = $produits;
$data->save();
return redirect()->back();
}</pré>
<p>Quand</p>
<ol>
<li>Lorsque je coche la première case et saisis une valeur de 5, le résultat est « 5 JasminBooks »,</p><p></li>
<li>Lorsque je coche les deux cases et saisis la quantité 12 dans la première zone de saisie à côté de la première case à cocher et la deuxième zone de saisie à côté de la deuxième case à cocher. Lorsque la quantité est 7, le résultat est "12 JasminBooks, 7 KnowHowBooks, "</li>
<li>Mais lorsque je coche uniquement la deuxième case et saisis 13 dans la zone de saisie de la quantité, le résultat est "1 KnowHowBooks", qui prend la valeur par défaut saisie dans la première au lieu de celle que j'ai saisie dans la seconde. Insérez la quantité 13 dans la zone de saisie. ≪/li>
</ol>
<p>Que dois-je ajouter/modifier dans mon code ? </p>
C'est parce que vous définissez votre champ de quantité en fonction de l'index. Si une entrée manque, cela peut affecter l’ensemble de vos résultats. Utilisez des valeurs comme clés :
HTML :
PHP :
P.S. Comme Bhaumik l'a dit, n'utilisez pas
$_POST
dans Laravel.