Récupérer la valeur de chaque <tr> contenant des input
Résolu/Fermé
A voir également:
- Récupérer la valeur de chaque <tr> contenant des input
- Recuperer message whatsapp supprimé - Guide
- Recuperer video youtube - Guide
- Impossible de récupérer mon compte gmail - Guide
- Comment récupérer un compte facebook piraté - Guide
- Récupérer mon compte facebook désactivé - Guide
2 réponses
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
12 avril 2016 à 14:50
12 avril 2016 à 14:50
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.
Utilisateur anonyme
12 avril 2016 à 18:18
12 avril 2016 à 18:18
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 ?
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
12 avril 2016 à 20:26
12 avril 2016 à 20:26
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..!
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
18 avril 2016 à 14:52
18 avril 2016 à 14:52
Tu as marqué :
là ... tu testes seulement si la variable $horaire (qui contient l'ensemble de tes valeurs saisies...) existe....
Pour savoir si il y a un horaire .. il faut vérifier que la variable :
n'est pas vide ...
Et donc:
if(isset($horaire)){
là ... tu testes seulement si la variable $horaire (qui contient l'ensemble de tes valeurs saisies...) existe....
Pour savoir si il y a un horaire .. il faut vérifier que la variable :
$horaire[$l]
n'est pas vide ...
Et donc:
if(!empty($horaire[$l])) {
Modifié par PaulCézanne le 12/04/2016 à 17:21
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..
12 avril 2016 à 17:33
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...... ' ??