Récupérer la valeur de chaque <tr> contenant des input
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai un tableau et j'aimerai que pour chaque ligne qui existe, je puisse les envoyer dans ma BDD si elles ne sont pas vides.
Je pense à qqch dans le genre
Mais je ne vois pas comment adapter cela à mon code...
Avez-vous des idées ?
Par avance, merci ! :-)
J'ai un tableau et j'aimerai que pour chaque ligne qui existe, je puisse les envoyer dans ma BDD si elles ne sont pas vides.
<tr id="ligne[]"> <td class="date"><input class="horaire form-control" id="horaire[]" autocomplete="off"/></td> <td><input class="form-control" id="input2[]" autocomplete="off"/></td> <td><input class="form-control" id="input3[]" autocomplete="off"/></td></tr>
Je pense à qqch dans le genre
foreach ($ligne[] as $key => $value) { echo $key; }
Mais je ne vois pas comment adapter cela à mon code...
Avez-vous des idées ?
Par avance, merci ! :-)
A voir également:
- Récupérer la valeur de chaque <tr> contenant des input
- Recuperer message whatsapp supprimé - Guide
- Récupérer mon compte facebook désactivé - Guide
- Impossible de récupérer mon compte gmail - Guide
- Input signal out of range - Forum Ecran
- Comment récupérer un compte facebook piraté - Guide
2 réponses
Bonjour,
Pour commencer ... tu as créé un formulaire ? En POST ou en GET ?
Ensuite, fais donc un :
A partir de là .. tu devrais être en mesure de réaliser ton traitement.
Pour commencer ... tu as créé un formulaire ? En POST ou en GET ?
Ensuite, fais donc un :
print_r($_POST); // ou GET si tu es en get...et regarde ce que ça te donne...
A partir de là .. tu devrais être en mesure de réaliser ton traitement.
Pour la BDD je gère :-)
Je souhaite dans un premier temps pouvoir récupérer ces variables.
J'ai donc ce tableau.
Chaque ligne contient 5 input.
J'arrive donc à lire ces données via le print_r
Mais je n'arrive pas à mettre en place une boucle pour qu'il affiche pour chaque ligne qui existe, les valeurs.
Du genre
Tu comprends ?
Je souhaite dans un premier temps pouvoir récupérer ces variables.
<tr name="ligne" id="ligne[]"> <td class="date"> <input name="horaire[]" class="horaire form-control" id="horaire[]" autocomplete="off"/> </td> <td> <input name="input1[]" class="input1 form-control" id="input1[]" autocomplete="off"/> </td> <td> <input name="input2[]" class="input2 form-control" id="input2[]" autocomplete="off"/> </td> <td> <input name="input3[]" class="input3 form-control" id="input3[]" autocomplete="off"/> </td> <td> <input name="input4[]" class="input4 form-control" id="input4[]" autocomplete="off"/> </td> </tr>
J'ai donc ce tableau.
Chaque ligne contient 5 input.
J'arrive donc à lire ces données via le print_r
Mais je n'arrive pas à mettre en place une boucle pour qu'il affiche pour chaque ligne qui existe, les valeurs.
Du genre
foreach($ligne as $element) { echo $horaire . '<br />'; echo $input1 . '<br />'; echo $input2. '<br />'; echo $input3 . '<br />'; } ?>
Tu comprends ?
Un truc du genre ? :
En partant du principe que tous les champs sont obligatoires.... et donc qu'il y a bien le même nombre de champs"horaires" de remplis que des autres input..
NB : Mettre des ID sous forme d'ARRAY est inutile et une abération.
NB² = Mettre un ID à tes TR ne te permettra pas de récupérer ce champ lors d'un SUBMIT. Seuls les champs de type ( INPUT / SELECT / TEXTAREA ) sont pris en compte lors d'un submit.
Tu devrais également pouvoir utiliser des array à deux dimensions pour tes objets.
En supposant que tes TR sont générés via une boucle PHP tu pourrais faire un truc du genre
En partant du principe que tous les champs sont obligatoires.... et donc qu'il y a bien le même nombre de champs"horaires" de remplis que des autres input..
$horaire= !empty($_POST['horaire']) ? $_POST['horaire'] : NULL; $input1= !empty($_POST['input1']) ? $_POST['input1'] : NULL; $input2= !empty($_POST['input2']) ? $_POST['input2'] : NULL; $input3= !empty($_POST['input3']) ? $_POST['input3'] : NULL; $nbLignes = count($horaire); for($l=0;$l<=$nbLignes;$l++){ echo $horaire[$l]; echo $input1[$l]; echo $input2[$l]; echo $input3[$l]; }
NB : Mettre des ID sous forme d'ARRAY est inutile et une abération.
NB² = Mettre un ID à tes TR ne te permettra pas de récupérer ce champ lors d'un SUBMIT. Seuls les champs de type ( INPUT / SELECT / TEXTAREA ) sont pris en compte lors d'un submit.
Tu devrais également pouvoir utiliser des array à deux dimensions pour tes objets.
En supposant que tes TR sont générés via une boucle PHP tu pourrais faire un truc du genre
<?php // début de ta boucle // par exemple for($i=0;$i<=20;$i++){ ?> <tr name="ligne" id="<?php echo $i;?>"> <td class="date"> <input name="ligne[<?php echo $i;?>]['horaire']" class="horaire form-control" id="horaire[]" autocomplete="off"/> </td> <td> <input name="ligne[<?php echo $i;?>]['input1']" class="input1 form-control" id="input1[]" autocomplete="off"/> </td> <td> <input name="ligne[<?php echo $i;?>]['input2']" class="input2 form-control" id="input2[]" autocomplete="off"/> </td> <td> <input name="ligne[<?php echo $i;?>]['input3']" class="input3 form-control" id="input3[]" autocomplete="off"/> </td> <td> <input name="ligne[<?php echo $i;?>]['input4']" class="input4 form-control" id="input4[]" autocomplete="off"/> </td> </tr> <?php } //fin de la boucle ?>
Merci pour ta réponse complète ! :-)
Encore une petite chose :
Je propose 10 lignes. Seulement, on peut choisir d'en remplir seulement seulement quelques unes.
J'ai donc les lignes qui s'ajoutent bien à ma BDD et à la fin j'ai une ligne vide qui est ajoutée.
J'ai donc testé plusieurs solutions et celles qui me semble la plus propice est une condition qui teste si horaire existe.
Si il existe, alors on ajoute les données à la BDD.
Malgré cela, je n'arrive pas à traiter seulement les variables qui existent..!
Encore une petite chose :
Je propose 10 lignes. Seulement, on peut choisir d'en remplir seulement seulement quelques unes.
J'ai donc les lignes qui s'ajoutent bien à ma BDD et à la fin j'ai une ligne vide qui est ajoutée.
J'ai donc testé plusieurs solutions et celles qui me semble la plus propice est une condition qui teste si horaire existe.
Si il existe, alors on ajoute les données à la BDD.
for($l=0;$l<=$nbLignes;$l++){ if(isset($horaire)){ echo $horaire[$l] . '<br>'; echo $input1[$l] . '<br>'; echo $input2[$l] . '<br>'; echo $input3[$l] . '<br>'; echo $input4[$l] . '<br>'; $req2 = $db->prepare("INSERT INTO seances (date, input1, input2, input3, input4) VALUES (:horaire, :input1, :input2, :input3, :input4)"); $req2->bindValue(':horaire', $horaire[$l]); $req2->bindValue(':input1', $input1[$l]); $req2->bindValue(':input2', $input2[$l]); $req2->bindValue(':input3', $input3[$l]); $req2->bindValue(':input4', $input4[$l]); $req2->execute(); } else{ exit(); } }
Malgré cela, je n'arrive pas à traiter seulement les variables qui existent..!
Oui c'est un formulaire qui envoie tout en POST
Le
me renvoie donc toutes données.
Maintenant, je ne vois pas comment adapter mon foreach..
Tout dépend de la structure de ta table...
Et de ce que tu souhaites faire exactement !
As tu commencé à écrire ta requête d'insertion en BDD ? ' INSERT INTO...... ' ??