gaby de Bourriot Posté 24 Octobre 2006 Posté 24 Octobre 2006 imaginez deux tables : -1------------------------------------ TH_CONTACT id_contact (cle, auto-increment.) nom prenom annee (2004,2005,2006,2007) groupe (tc, tv, ta, tj) -------------------------------------- -2------------------------------------ TH_EVAL id_eval (cle, auto-increment.) id_contact num_eval date_eval critere1 critere2 critere3 critere4 -------------------------------------- Il m'est facile d'afficher depuis la première table les contacts du groupe que je choisis, de l'année que je choisis Je peux aussi (qd je dis je peux = je sais faire) passer de la liste à la fiche Je peux aussi (ou du moins je pourrais) passer d'une fiche d'un contact pour faire une évaluation à ce contact MAIS je voudrais d'un coup , après avoir sélectionné le groupe et l'année - créer une évaluation à tous ceux qui sont sélectionnés (un peu comme si un enseignant voulais faire un devoir (selon critere1,critere2,critere3,critere4) pour un groupe donné Question : Comment, après requete, récupérer l'id_contact de tous ceux qui sont sélectionnés et coller ces id dans la deuxième table? toujours débutant of course
captain_torche Posté 24 Octobre 2006 Posté 24 Octobre 2006 Après ta requête, tu te retrouves forcément avec un tableau de valeurs, comportant au moins l'Id. Il te suffit donc de boucler sur chacune des valeurs, et de faire autant d'insertions que tu as de résultats. Exemple : Imaginons que ta requête soit de la forme $req = mysql_query("SELECT id_contact FROM TH_CONTACT WHERE annee = 2004 AND groupe = 'ta'"); Il te suffit de boucler sur les résultats, et d'alimenter l'autre table : while($row = mysql_fetch_assoc($req)) {mysql_query("INSERT INTO TH_EVAL(id_contact, num_eval, date_eval, critere1, critere2, critere3, critere4) VALUES(".$row['id_contact'].", $num_eval, '$date_eval', '$critere1', '$critere2', '$critere3', '$critere4')");}
gaby de Bourriot Posté 24 Octobre 2006 Auteur Posté 24 Octobre 2006 Merci beaucoup pour ta réponse.Maintenant j'ai un autre problème : j'ai fait ce que tu as dit (en l'adaptant) <?php while ($row = mysql_fetch_assoc($Rq)) { mysql_query (" INSERT INTO `TH_DEVOIR` ( `id_devoir` , `date` , `num_ccf` , `num_form` , `coeff` , `c1` , `c2` , `c3` , `c4` , `c5` , `c6` , `c7` , `c8` , `c9` , `c10` , `id_eleve` ) VALUES ( '', '0', '0', '0', '0.00', '0.00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '0', '0', ' .$row['eleve_id']. ') "); } ?> Si je retire ' .$row['id_contact']. ' et que je mets '28' par exemple ; lorsque je vérifie, j'ai bien dans ma base autant d'enregistrement que renvoie ma requete. y a t il une erreur de code?
Jeromnimo Posté 24 Octobre 2006 Posté 24 Octobre 2006 Bonsoir, dans ta table TH_DEVOIR est-il en auto-increment ? si c'est le cas, enleve `id_devoir` de ta requete et sa valeur correspondante ''
gaby de Bourriot Posté 24 Octobre 2006 Auteur Posté 24 Octobre 2006 oui avec ou sans c'est pareil. D'ailleurs si j'enleve le bout de code '$row['eleve_id']' et que je mets une valeur, ça marche! je crois plutôt qu'il faut voirpar là : '$row['eleve_id']' ou ' .$row['eleve_id'].' pourquoi des '.' ? ce n'est pas une concatenation
Dan Posté 24 Octobre 2006 Posté 24 Octobre 2006 En php, une variable '$var' mise entre simples quotes ne sera pas interprétée. echo '$var' donnera la chaîne "$var" comme résultat au lieu de la valeur de $var :!: En retirant les quotes (ou en la mettant "hors quotes" comme dans l'exemple, on force php à l'interpréter. Dan
gaby de Bourriot Posté 24 Octobre 2006 Auteur Posté 24 Octobre 2006 oui je commence à comprendre mais comment faire puisque dans la requete on commence par : mysql_query (" je sais par (petite) expérience que l'on ne peut mettre des double guillemets à l'intérieur de double guillemets l' exemple 1 est impossible mysql_query ("INSERT INTO `TH_DEVOIR` ( `date` , `num_ccf` , `num_form` , `coeff` , `c1` , `c2` , `c3` , `c4` , `c5` , `c6` , `c7` , `c8` , `c9` , `c10` , `id_eleve` ) VALUES ('0', '0', '0', '0.00', '0.00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '0', '0', " $row['eleve_id']")"); et l'exemple 2 n'interprète pas la variable : mysql_query (" INSERT INTO `TH_DEVOIR` ( `date` , `num_ccf` , `num_form` , `coeff` , `c1` , `c2` , `c3` , `c4` , `c5` , `c6` , `c7` , `c8` , `c9` , `c10` , `id_eleve` ) VALUES ('0', '0', '0', '0.00', '0.00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '0', '0', ' $row['eleve_id']')");
Dan Posté 24 Octobre 2006 Posté 24 Octobre 2006 mysql_query(" INSERT INTO `TH_DEVOIR` ( `date` , `num_ccf` , `num_form` , `coeff` , `c1` , `c2` , `c3` , `c4` , `c5` , `c6` , `c7` , `c8` , `c9` , `c10` , `id_eleve` ) VALUES ( '0', '0', '0', '0.00', '0.00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '0', '0', '". $row['eleve_id']."' ) "); En interrompant la chaîne avec les doubles quotes, insérant la variable (hors des quotes) et en reprenant la chaîne ensuite, comme ci-dessus en rouge. <edit: merci d'utiliser la balise CODE et /CODE pour délimiter le code dans tes exemples. J'ai utilisé QUOTE pour visualiser la coloration Cette balise CODE est représentée par # dans les icônes de l'éditeur Clique sur "Aide BBCode" sous les emoticônes à gauche pour des explications supplémentaires>
gaby de Bourriot Posté 24 Octobre 2006 Auteur Posté 24 Octobre 2006 Merci vraiment de cette précision qui m'empéchait souvent de comprendre les exemples. Bien ça fonctionne mais... il y a toujours un mais... cela met la même valeur dans le champ. je re-précise ma question initiale soit deux tables - la premiere contient les nom et prénom de contacts annee et le groupe (ainsi qu'un id qui s'incrémente de 1) je voudrais faire une évaluation pour un groupe précis. 1) je sélectionne le groupe et l'annee 2 ) je lance la requete qui doit mettre dans la deuxieme base l'id de chaque contact truouvé Or dans la requete (qui fonctionne maintenant) cela met le meme id ps : j'ai pris bonne note pour le code
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant