Accueil > Forum > > > > Problème de formulaire dynamique
Problème de formulaire dynamique
mercredi 16 novembre 2005 à 11:57:54 |
Problème de formulaire dynamique

labouse
|
Bonjour, Bon je vais essayer d'être clair: j'ai une table mysql avec nom prénom et un code service je fais une requete pour afficher tout le monde pour un service bien precis jusque là ça va. Sauf que pour chaque personne affichée j'ajoute des cases cochées pour valider leur présence durant la semaine. Comment je peux récupérer les données nom par nom ? là je bloque  je joins une partie de mon code : mysql_select_db($database_connexion_bdd, $connexion_bdd); $query="SELECT nom,prenom,id_agt FROM presence_agent WHERE code_serv='inf'ORDER BY nom ASC"; $resultat=mysql_query ($query)or die (mysql_error()); $count=mysql_num_rows($resultat); while($data=mysql_fetch_array($resultat)) { $nom=$data['nom']; $prenom=$data['prenom']; $id_agt=$data['id_agt']; echo" <tr> <td rowspan=\"2\">$nom <input name=\"id_agent\" type=\"hidden\" id=\"id_agent\" value=\"$id_agt\"></td> <td rowspan=\"2\">$prenom</td> <td>Matin </td> <td><div align=center><input type=\"checkbox\" name=\"tableau[]\" value=\"1\" checked /></div></td> <td><div align=center><input type=\"checkbox\" name=\"tableau[]\" value=\"1\" checked /></div></td> <td><div align=center><input type=\"checkbox\" name=\"tableau[]\" value=\"1\" checked /></div></td> <td><div align=center><input type=\"checkbox\" name=\"tableau[]\" value=\"1\" checked /></div></td> <td><div align=center><input type=\"checkbox\" name=\"tableau[]\" value=\"1\" checked /></div></td> </tr> <tr> <td value=\"1\"><div align=center>Après-midi</td> <td value=\"1\"><div align=center><input type=\"checkbox\" name=\"tableau[]\" value=\"1\" checked /></div></td> <td value=\"1\"><div align=center><input type=\"checkbox\" name=\"tableau[]\" value=\"1\" checked /></div></td> <td value=\"1\"><div align=center><input type=\"checkbox\" name=\"tableau[]\" value=\"1\" checked /></div></td> <td value=\"1\"><div align=center><input type=\"checkbox\" name=\"tableau[]\" value=\"1\" checked /></div></td> <td value=\"1\"><div align=center><input type=\"checkbox\" name=\"tableau[]\" value=\"1\" checked /></div></td> </tr>"; } Merci d'avance pour votre aide David
|
|
mercredi 16 novembre 2005 à 12:25:34 |
Re : Problème de formulaire dynamique

malalam
|
Réponse acceptée !
Hello,
tu t'y prends mal.
ton tableau pour la checkbox, $_POST['tableau'][] Il est mal créé.
Je m'explique. Dans un service, tu as 1 ou n personnes. Donc, virtuellement, tu peux recréer ces checkbox, dans le même formulaire, n fois. Ton problème est que du coup, quand tu coches, tu te retrouves avec un tableau long (là, n * 10 entrées). Je suppose que pour toi, $tableau[0] correspond au 1er horaire de la matinée. Ce n'est pas une bonne idée! A ta place, je ferais un truc du genre : Déjà, je passerais par un slect multiple, c'est plus sympa. Mais bon, le principe est le même que pour tes checkbox. Dans ma table personne, j'aurais un personne_id Je créerais une table horaires, avec horaire_nom, horaire_id. Par exemple : 8h - 9h , 1 9h - 10h , 2 ...etc
Et j'aurais une table horaire_personne, avec personne_id et horaire_id.
Ensuite, mes checkboxes: <input type="checkbox" name="horaire[<?php echo $personne_id; ?>]" value="<?php echo $horaire_id; ?>" /> => sachant qu'il faut boucler sur ta table horaire pour créer ces checkboxes.
Tu récupèreras ainsi un tableau du genre : $_POST['horaire'][$personne_id] = $horaire_id.
Dans une boucle, il te suffira de remplir ta table de jointure personne_horaire : foreach ($_POST['horaire'] as $personne => $horaire) { // requête du type : INSERT INTO personne_horaire (personne_id, horaire_id) VALUES ($personne, $horaire) }
Et quand tu veux savoir pour une personne x, quels horaires ont été attribués, il te suffit de parcourir la table personne_horaire WHERE personne_id = $x_id, et de faire une jointure, tant qu'à faire, sur la table horaire pour avoir le nom des horaires.
SELECT hor.horaire_nom, pers.personne_nom FROM horaire AS hor, personne AS pers, personne_horaire AS ph WHERE (ph.horaire_id = $horaire) AND (ph.personne_id = $personne) AND (pers.personne_id = ph.personne_id) AND (hor.horaire_id = ph.horaire_id) ORDER BY pers.personne_nom, hor.horaire_nom
|
|
mercredi 16 novembre 2005 à 13:40:28 |
Re : Problème de formulaire dynamique

labouse
|
Merci beaucoup c'est une bonne piste d'approche, et je vais surement l'adopter en l'adaptant. En abusant un peu  : j'ai une table activités avec entre autres la duree qui doit être modifiable. Pour un service,Il y a n activités, si je fais une requête pour afficher les activités d'un service possible sous forme de formulaire, est-ce que je dois adopter le même système? Je suis désolé je n'ai pas de code à proposer je n'ai rien commencer (le fainéant..) mais au niveau du concept c'est à dire pouvoir modifier la durée de chaque activité et faire une mise à jour pour chacune d'entre elles ? Merci encore David
|
|
mercredi 16 novembre 2005 à 14:29:02 |
Re : Problème de formulaire dynamique

malalam
|
Réponse acceptée !
Attention, de ce que je comprends, ce n'est pa sune relation 1, n, mais bien n, n. 1 service peut avoir n activités. Mais 1 activité peut appartenir à n services... non ? Par exemple, le service Filles peut faire les activités tricot, potins, drague Le service garçon peut faire les activités foot, beuveries, drague. Non ? Donc oui, c'est le même principe pour la structure de la table : service : service_nom, service_id activité : activite_nom, activite_id service_activite : activite_id, service_id Et pour l'affichage, oui, même principe.
|
|
mercredi 16 novembre 2005 à 15:43:30 |
Re : Problème de formulaire dynamique

labouse
|
Très bien c'est ce que j'avais compris (manquait plus que la confirmation  ) y'a plus qu'à mettre en pratique, c'est le plus marrant. Merci pour cette aide précieuse et très rapide   David
|
|
jeudi 17 novembre 2005 à 11:45:31 |
Re : Problème de formulaire dynamique

labouse
|
Bon me revoilà ...  J'ai bien suivi les instructions de la première réponse : l'affichage des checkboxes se fait bien : mysql_select_db($database_connexion_bdd, $connexion_bdd); $query="SELECT nom,prenom,id_agt FROM presence_agent WHERE code_serv='inf'ORDER BY nom ASC"; $resultat=mysql_query ($query)or die (mysql_error()); $count=mysql_num_rows($resultat); while($data=mysql_fetch_array($resultat)) { $nom=$data['nom']; $prenom=$data['prenom']; $id_agt=$data['id_agt']; echo" <tr> <td>$nom </td> <td>$prenom</td>\r\n"; $query1="SELECT horaire_id FROM horaires ORDER BY horaire_id ASC"; $resultat1=mysql_query ($query1)or die (mysql_error()); while ($data1=mysql_fetch_array($resultat1)) { $horaire_id=$data1['horaire_id']; echo"<td><div align=center><input type=\"checkbox\" name=\"horaires[$id_agt]\" value=[$horaire_id] checked /></div></td>\r\n"; } } Mais là où j'ai un souci c'est pour la récupération des données. Y' a un truc qui me chiffonne : le tableau est vide $_POST['horaire'][$id_agt]=$horaire_id; //Insertion dans la base de données mysql_select_db($database_connexion_bdd, $connexion_bdd); foreach($_POST['horaire'] as $agt => $horaire) { $query_insert="INSERT INTO horaire_personne (id_agt,horaire_id) VALUES ('$agt','$horaire')"; mysql_query ($query_insert)or die (mysql_error()); } je suis certain que c'est là que je m..de et là je vois pas (j'suis un boulet des fois). A l'aide merci David
|
|
jeudi 17 novembre 2005 à 12:50:00 |
Re : Problème de formulaire dynamique

malalam
|
Réponse acceptée !
Re, $_POST['horaire'][$id_agt]=$horaire_id; => pourquoi tu fais ça...? Là tu effaces ton tableau. Voilà tes checkboxes : <input type=\"checkbox\" name=\"horaires[$id_agt]\" value=[$horaire_id] checked /> Donc le nom c'est horaires[x] ou x est un id (et est variable, donc). Selon toi...sauf que tu te plantes dans les variables. au passage, simplifions ta ligne, et corrigeons la... : echo"<td><div align=center><input type=\"checkbox\" name=\"horaires[$id_agt]\" value=[$horaire_id] checked /></div></td>\r\n"; => echo'<td><div align=center><input type="checkbox" name="',$data['id_agt'],'" value="',$data1['horaire_id']'," checked /></div></td>'; Pas besoin de réaffecter tes $data... Donc ton tableau post sera : $_POST['horaires'] (note que tu as oublié le 's', déjà). Donc, la clef = l'id de ton agent, et la valeur = l'id de ton horaire. Ensuite, ta boucle : foreach ($_POST['horaires'] as $id_agent => $id_horaire) je te laisse poursuivre, ça doit être assez explicite ;-)
|
|
jeudi 17 novembre 2005 à 13:57:15 |
Re : Problème de formulaire dynamique

labouse
|
Je suis toujours étonné de la rapidité de la réponse. Je ne suis pas habitué à une telle efficacité ;-) Bon déjà je te dois des excuses j'ai fait un copier coller d'un fichier test donc bon forcément.... Seulement dans ta réponse sur la simplification de la ligne echo'..... au niveau name="',$data['id_agt'],'" il n'y a pas d'initialisation de tableau "horaires" ? Je me trompe ou j'ai les boyaux de la tête constipés?
Merci
David
|
|
jeudi 17 novembre 2005 à 14:24:08 |
Re : Problème de formulaire dynamique

labouse
|
Bon j'en rajoute une couche j'avoue que je commence à être dans le brouillard : pour chaque id_agt tu peux avoir 1 à plusieurs horaires de sélectionnés. Le souci c'est qu'en suivant tes instructions dans ma table horaire_personne il y a un enregistrement de id_agent et du dernier horaire_id coché. Là je crois que j'avais compris le concept mais j'ai l'impression que je suis complèment à l'ouest.
Désolé d'être aussi pénible mais j'aime comprendre ce que je fais.
Merci
David
|
|
jeudi 17 novembre 2005 à 14:39:14 |
Re : Problème de formulaire dynamique

malalam
|
Réponse acceptée !
Et encore, je suis au boulot... ;-) Non tu as raison, j'ai oublié horaires sur ce coup ;-) name="horaires[',$data['id_agt'],']" Si ça ne fonctionne pas, au lieu de faire ton foreach et ton insertion, affiche le tableau ainsi : echo '<pre>',print_r($_POST['horaires']);,'</pre>';
|
|
Cette discussion est classée dans : code, mysql, data, query, prenom
Répondre à ce message
Sujets en rapport avec ce message
Problemes d'affichage avec une boucle tanque [ par pekplusultra ]
Bonjour,Je souhaiterais afficher les resultats de ma table par liste comme ci dessous:Nom Sujet Envoyeur ...Mon code fo
Correction de code simple pour debutant [ par michmichman ]
Bonjour j'ai fais un petit code pour verifier si un utilisateur est enregistré dans ma db mais bien sur il marche pasje vous le montre je suis sur que
mysql_query [ par linkid ]
Bonjour,j'ai un petit problème avec ce code :$log = mysql_query("SELECT Login FROM membres_tbl WHERE Password='$_POST[password]'") or die(mysql_error(
php/mysql requete plusieurs tables et bases [ par fredo35m ]
Bonjour,j'aimerais savoir comment faire pour requeter sur plusieurs tables et bases, je m'explique :BASE 1:Requête 1 : Sélection des CODES COMMUNES se
Es ce que mon code est propre [ par sense ]
Je code un formulaire pour faire un trie dans ma requete, mais ce que j'ai fais fonctionne mais je pense que j'en fais trop :/ quelqu'un peu me consei
galere avec free et php MySQL [ par bigfootspi ]
bon voila le code de mon livre d'or !le soucis c'est qu'il met dix ans a se connecter a la base alors que de temps en temps il va vite ! je ne compren
deux pb dans mon code php!! [ par dev10 ]
voilà mon prbolème, si squelqu'un peut m'aiderWarning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\....doc.php on l
Fonction récursive et enregistrement ds tableau[ ] :-/ ? [ par yazerty55 ]
Bonjour,J'ai une table mysql avec ceci :[code]category_id - category - parent_num1 - Catégorie 1 - 02 - Catégorie 2 - 53 - Catégorie 3 - 24 - Catégori
problème de variable dans une requete mysql [ par Moritus ]
bonjour, j'ai quelques petits problèmes avec un bout de code. habituellement j'utilise $data['texte'] pour récupéré le contenu d'un champ de ma t
Erreur de code [ par elriser ]
je débute et j'ai un souci avec ce bout de code:$query = "SELECT * FROM infos WHERE etat-cmd=nc ORDER BY 'num-cmd'";$result = mysql_query($query, $lin
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|