|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Bonjour,
Dans le cadre de mon application, je dois mettre en place des formulaires de modification sur certaines tables. Pour cela, j'ai prévu de donner la possibilité de modifier plusieurs lignes à la fois, donc d'extraire un certain nombre de lignes dans un <table> et à l'aide de bouton radio par exemple , modifier ou supprimer les lignes cochées. Je sais extraire et afficher mais j'ai des problèmes pour modifier plusieurs lignes à la fois c'est à dire les identifier dans le tableau HTML. Merci de vos solutions et pistes pour réaliser ce procédé ? Cordialement |
|
|
00
|
|
|
#2 |
![]() ![]() Sébastien Ingénieur réalisateur Inscription : mars 2011 Messages : 776 ![]() |
Bonjour madina,
Si tu fais avec des boutons radio, dans ta page de traitement ( une fois que tu as envoyé ton formulaire donc ) tu récupères les $_POST['id_bouton_radio'] qui ne sont pas vides, et tu auras tes lignes à modifier. |
|
|
10
|
|
|
#3 |
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Merci FirePrawn,
En fait mon problème c'est surtout comment parcourir le tableau pour récupérer la valeur de chaque champ dans chaque ligne. Cordialement |
|
|
00
|
|
|
#4 |
![]() ![]() Sébastien Ingénieur réalisateur Inscription : mars 2011 Messages : 776 ![]() |
Il n'y a aucun parcours à faire.
Sur ton bouton radio, bouton, peu importe, tu mets comme valeur la valeur de ta cellule, et tu auras donc directement la valeur que tu cherches avec $_POST['nom_bouton'] |
|
|
10
|
|
|
#5 | ||||||||
|
Membre actif
![]() Inscription : décembre 2006 Messages : 184 ![]() |
sur le principe voici comment je ferais
suffit de modifier la boucle for $i sera l'id de l'élément dans la base le résultat des checkbox correspond aux ids (index ici) on recupere les champs avec comme nom "<name>$i" Code :
Code :
Code :
Code :
|
||||||||
|
|
00
|
|
|
#6 | ||||
![]() ![]() |
Bonjour,
je pense que Medina a surtout besoin de connaitre la METHODOLOGIE. A- FORMULAIRE 1/ tu as un formulaire contenant le tableau complet 2/ Tu affiches ton tableau (table) ligne par ligne. (ca, tu sais faire) 3/ sur chaque ligne, tu affiches : - SOIT (toutes les lignes contiennent deja des input) : (ligne-i) | inputi-a | inputi-b | inputi-c | ... | laboxi - SOIT (on affiche d'abord les données, puis en cochant checkboxi, on change les data en input -> ca, ca peut se faire en javascript) : (ligne-i) | datai-a | datai-b | datai-c | ... | laboxi (ligne-i) | inputi-a | inputi-b | inputi-c | ... | laboxi (seules les lignes cochées contiennent des input) 4/ un bouton submit tout à la fin du formulaire B- TRAITEMENT 1/ on recupere les données 2/ pour chaque ligne dont la checkbox est cochée : on traite la ligne (modification - enregistrement) la question est : "comment identifier chaque ligne, pour pouvoir en modifier les données ? Maintenant que la METHODOLOGIE a été définie, passons à la PROGRAMMATION : L'astuce est d'utiliser des array dans le "name" : name="data1[]" name="data2[]" ..., name="checkbox[]" On récupère alors des array : $_POST['data1'], $_POST['data2'], ..., $_POST['checkbox'] (chaque $_POST['xxx'] est un array) On peut alors parcourir ces array, et pour chaque $i où $_POST['labox'][$i] est coché : on modifie les données $_POST['data1'][$i], $_POST['data2'][$i], ... Si les données viennent d'une BdD (ce que je suppose), on peut aussi supposé que chaque enregistrement a un ID (auto-increment) sur chaque ligne du tableau, on peut mettre cet ID dans un <input type="hidden" name="ID[]" value="<?php echo $row['ID']; ?>" /> => la modification se fera alors sur l'enregistrement dont l'ID est : ID='$_POST['ID'][$i]' Dans le principe : A- FORMULAIRE Code :
- on récupère d'abord l'array des checkbox, - on ne traite que les lignes où la checkbox a été cochée. Code :
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément." Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique. Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
|
||||
|
|
10
|
|
|
#7 |
![]() ![]() Sébastien Ingénieur réalisateur Inscription : mars 2011 Messages : 776 ![]() |
J'ai du rater une étape parce que poru moi il n'y avait pas besoin d'un parcours
![]() Ca ressemble à quoi ton tableau de données Medina ? On peut avoir un aperçu du code ? |
|
|
00
|
|
|
#8 |
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Merci à tous pour la réponse
jreaux62 j'ai bien compris le principe abordé. Pour ma part, je vais adopter que toutes les lignes contiennent déjà des input. En ayant d'abord la méthodologie, je perçois mieux le code. Je vais tester ça d'un instant à l'autre et je vous en tiendrai compte. Cordialement |
|
|
00
|
|
|
#9 |
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Merci FirePrawn
Pour moi mon tableau de données c'est des <tr> et à chaque <tr>, un <td> renfermant un input contenant un champ d'une base de données extraite. c'est comme en principe, le tableau élaboré par jreaux62. Je crois qu'on a besoin d'une boucle pour parcourir toutes les lignes du tableau. Cordialement |
|
|
00
|
|
|
#10 |
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
madina, une fois que tu à affiché tes données dans un tableau HTML, tu ne peut pas (simplement ne tout cas) les récupérer. Le plus courant pour les modifier et soit de tout enregistrer dans des <input> et de récupérer le tout dans ton script après validation du formulaire. Soit de ré-extraire les donnés de ta base avant de les modifier.
Je m'excuse si ce n'est pas très clair, mais sans plus de détails sur ton code je peut difficilement faire mieux. |
|
00
|
|
|
#11 |
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Merci Korri,
En fait la modification des données extraites vers la base de données se fait à quel moment donc ? Car une fois sur le tableau, je les récupères dans ma page de validation avant de modifier. C'est pas encore tout à fait clair ta précision. |
|
|
00
|
|
|
#12 | ||
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
jreaux62, En fait la modification ne se fait que sur la première ligne.
Je crois que la récupération et le parcours des tableaux des input pose problème. ça prends en compte que la première ligne cochée. Code :
|
||
|
|
00
|
|
|
#13 |
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
madina, la modification se fera directement avec un appel à ta base de données, au moment ou tu reçois les données modifiées envoyées par l'utilisateur (typiquement quand tu reçoi en POST les données de ton formulaire que tu aura généré).
|
|
00
|
|
|
#14 |
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Ok,
Mais c'est justement ce j’ai fais avec l'exemple de jreaux62. C'est après l’envoi des données par le POST que je fais un update. mais là jreaux62, la boucle ne prends pas les autres lignes, il s'arrête juste à la première ligne et ne modifie pas les autres lignes même si le checkbox est coché. ? |
|
|
00
|
|
|
#15 | |
|
Membre confirmé
![]() Hugo VacherÉtudiant Inscription : mai 2008 Messages : 158 ![]() |
Citation:
Il enregistre ensuite chaque ligne dans le foreach qui parcoure chaque élément du tableau, je ne voie pas ce qui ne va pas. Vérifie bien que tu reçois les bonnes infos en post avec un c'est toujours pratique !
__________________
|
|
|
00
|
|
|
#16 |
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Korri,
Le problème c'est que quand je coche les autres lignes , il les modifie pas. Il ne modifie que la première ligne. |
|
|
00
|
|
|
#17 | ||||
![]() ![]() |
Bonjour,
Code :
Ou comme ca : Code :
- echo ... - print_r(...); Bien placés, il peuvent te fournir des indices pour résoudre TOI-MEME les problèmes. Question en passant ... tu es sûre d'avoir mis ca dans ton formulaire : Code :
<input type="checkbox" name="labox[]" value="ON" />
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément." Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique. Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
|
||||
|
|
00
|
|
|
#18 | ||||
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Bonjour,
jreaux62, Bon avec le , il m'affiche que le premier élément du tableau array de "labox[]". Exemple quand je coche deux lignes, il m'affiche : Code :
Array ( [0] => ON [1] => ON ) Vous avez modifié 2 lignes Code :
Code :
Cordialement |
||||
|
|
00
|
|
|
#19 |
![]() ![]() |
Bonjour,
sais-tu que tu n'es pas obligée de mettre le code html dans du code php ? Les 2 peuvent cohabiter séparément dans un fichier ...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément." Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique. Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
|
|
|
00
|
|
|
#20 |
|
Débutant
Inscription : avril 2005 Messages : 464 ![]() |
Bonjour,
Oui je sais. Je vais les séparer dans le même fichier mais j’espère pas que ça une influence sur ce resultat de l'affichage du checkox. je te dis toute site après. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com