begin process at 2012 05 31 13:05:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Problème de formulaire dynamique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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&egrave;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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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>';


1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales