Recupérer fonction perso dans table

Répondre
Irate
Irate
Déconnecté
Irate
Je débute et je galère...
Bon, j'ai un premier fichier avec liste déroulante à partir de ma base mysql, ça marche et j'envoie un form qui m'ouvre un deuxième fichier. Dans ce deuxième fichier, je veux récupérer l'info dans un tableau, ok mais je voudrais aussi ouvrir un nouveau menu déroulant et là ça se corse. J'ai fabriqué une fonction pour ce menu mais je n'arrive pas à l'intégrer dans mon tableau. Voici le code :
  1.  
  2. <?php
  3. require ('conf.php');  
  4. ?>
  5. <form method="post" name="anim" action="">
  6. <?php
  7. //Fichier de réception du formulaire listecole.php  
  8. $postecole = $_POST['ecole'];  
  9. echo ("<b>Ecole</> :$postecole<br/><br>");  
  10.  
  11. //requête sql  
  12. $query = mysql_query("SELECT Nom, Prénom, anim FROM jos_ecole_etat, jos_anim where ECOLE='$postecole' ORDER BY Nom") OR die("impossible");  
  13.  
  14. //tableau des données récoltées  
  15. echo "<table border='1' cellpadding='1' cellspacing='1' align='left'>
  16.             <td><b>Nom</b></td>
  17.             <td><b>Prénom</b></td>
  18. <td><b>Animation 1</b></td>
  19. </tr>";  
  20. while ($row = mysql_fetch_array($query))  
  21. //foreach ($rqanim as $anim)  
  22. {  
  23. echo "<tr>
  24. <td>$row[Nom]</td>
  25. <td>$row[Prénom]</td>
  26. <td> menuanim()</td>
  27. <tr>";  
  28. }  
  29. echo "</table>";  
  30.  
  31. function menuanim() {  
  32. $rqani = mysql_query("SELECT anim FROM jos_anim ORDER BY ID");  
  33. echo ('<select name="anim">');  
  34. if ($produit == "") {  
  35. echo ('<option value="' . '">' . '< Choisir >' . '</option>');  
  36. }  
  37. else {  
  38. echo ('<option value="' . '">' . '</option>');  
  39. }  
  40. while ($ligne1 = mysql_fetch_object($rqani)) {  
  41. //la concatenation des champs se fait ici  
  42. echo ('<option>' . $ligne1->anim . '</option>');  
  43. }  
  44. echo ('</select>');  
  45. }  
  46.  
  47. ?> 

A la ligne 18 j'ai noté menuanim(), je sais bien que ça ne fonctionne pas mais que mettre? Quand je lance mon premier fichier listecole.php, j'obtiens un tableau, les noms rangés, mais dans la case Animation 1, impossible de récupérer mon menu déroulant. Si quelqu'un peut m'aider, Merci
moogli
moogli
Déconnecté
Il en faut peu pour être heureux !!!!!
salut,

  1.  
  2. <?php
  3. echo '<table border="1" cellpadding="1" cellspacing="1" align="left">
  4. <td><b>Nom</b></td>
  5. <td><b>Prénom</b></td>
  6. <td><b>'.menuanim().'</b></td>
  7. </tr>';  
  8. ?>
  9.  


menuanim() est, bien sur, à déclarer avant utilisation ;)

@+
Irate
Irate
Déconnecté
Irate
Merci d'avoir répondu si vite mais j'ai passé ma journée dans un déménagement et je me replonge dans le code maintenant. J'ai noté comme tu m'as dit, ce qui me donne,
  1. <form method="post" name="anim" action="">
  2.  
  3. <?php
  4. require ('conf.php');  
  5. //Fichier de réception du formulaire listecole.php  
  6. $postecole = $_POST['ecole'];  
  7. echo ("<b>Ecole</> :$postecole<br/><br>");  
  8.  
  9.  
  10. $query = mysql_query("SELECT Nom, Prénom FROM jos_ecole_etat where ECOLE='$postecole' ORDER BY Nom") OR die("impossible");  
  11.  
  12. //tableau des données récoltées  
  13. echo '<table border="1" cellpadding="1" cellspacing="1" align="left">
  14. <td><b>Nom</b></td>
  15. <td><b>Prénom</b></td>
  16. <td><b>'.menuanim().'</b></td>
  17. </tr>';  
  18. while ($row = mysql_fetch_array($query))  
  19. //foreach ($rqanim as $anim)  
  20. {  
  21. echo "<tr>
  22. <td>$row[Nom]</td>
  23. <td>$row[Prénom]</td>
  24. <td></td>
  25. <tr>";  
  26. }  
  27. echo "</table>";  
  28.  
  29. function menuanim() {  
  30. $rqani = mysql_query("SELECT anim FROM jos_anim ORDER BY ID");  
  31. echo ('<select name="anim">');  
  32. if ($produit == "") {  
  33. echo ('<option value="' . '">' . '< Choisir >' . '</option>');  
  34. }  
  35. else {  
  36. echo ('<option value="' . '">' . '</option>');  
  37. }  
  38. while ($ligne1 = mysql_fetch_object($rqani)) {  
  39. //la concatenation des champs se fait ici  
  40. echo ('<option>' . $ligne1->anim . '</option>');  
  41. }  
  42. echo ('</select>');  
  43. // fermeture de la base pour eviter les problèmes  
  44. mysql_close();  
  45.  
  46. }  
  47.  
  48. ?>
  49. </form> 

Le menu déroulant s'affiche au dessus du tableau. De plus, je voudrais que ce menu s'affiche dans le tableau, à chaque ligne récupérée. Dans ce cas, je pense que c'est au niveau de
  1. <?php  
  2. echo "<tr>
  3. <td>$row[Nom]</td>
  4. <td>$row[Prénom]</td>
  5. <td></td>
  6. <tr>";  
  7. ?> 

qu'il faut agir. Je voudrais comprendre, merci
Keika
Keika
Déconnecté
Le PHP --> C'est dur !
Comme im@n t'a dit, il faut que tu declares ta fonction avant de l'appeler.

Declaration de fonction = quand tu definis ta fonction, lui dit quoi faire etc etc
Appel de fonction = quand, dans ton code, tu ecris le nom de ta fonction afin qu'elle effectue ce qu'elle est sencee faire.

maintenant avec ces nouvelles donnees, modifie ton code et vois si ca fonctionne
i M@N
i M@N
Déconnecté
One Love, One Heart, One Unity.
Hello.

Keika, cette fois j'y suis pour rien ... c'était Mr Moogli smiley

@+...
Irate
Irate
Déconnecté
Irate
Je comprends bien ce que vous me dites mais, ça doit être l'âge, les neurones fatigués, je ne vois pas concrètement. Vous pourriez le donner un ex. concret par rapport à ce que j'ai écrit ?
i M@N
i M@N
Déconnecté
One Love, One Heart, One Unity.
Hello.

Heu ... c'est normal que t'appelle la fonction menuanim() à la ligne 16 et que tu la déclares de la ligne 29 à 46 ? oÔ

Tu mets la charrue avant les boeufs là ... déclare la fonction, ensuite tu l'appelles.

@+...
Irate
Irate
Déconnecté
Irate
Bon. Effectivement. Je viens de modifier comme ceci:
  1. <?php<form method="post" name="anim" action="">  
  2. <?php  
  3. require ('conf.php');  
  4. //Fichier de réception du formulaire listecole.php  
  5. $postecole = $_POST['ecole'];  
  6. echo ("<b>Ecole</> :$postecole<br/><br>");  
  7.  
  8. $query = mysql_query("SELECT Nom, Prénom FROM jos_ecole_etat where ECOLE='$postecole' ORDER BY Nom") OR die("impossible");  
  9. //Déclare fonction  
  10.  
  11. function menuanim() {  
  12. $rqani = mysql_query("SELECT anim FROM jos_anim ORDER BY ID");  
  13. echo ('<select name="anim">');  
  14. if ($produit == "") {  
  15. echo ('<option value="' . '">' . '< Choisir >' . '</option>');  
  16. }  
  17. else {  
  18. echo ('<option value="' . '">' . '</option>');  
  19. }  
  20. while ($ligne1 = mysql_fetch_object($rqani)) {  
  21.  
  22. echo ('<option>' . $ligne1->anim . '</option>');  
  23. }  
  24. echo ('</select>');  
  25.  
  26. }  
  27. //tableau des données récoltées  
  28. echo '<table border="1" cellpadding="1" cellspacing="1" align="left">
  29. <td><b>Nom</b></td>
  30. <td><b>Prénom</b></td>
  31. <td><b>'.menuanim().'</b></td>
  32. </tr>';  
  33. while ($row = mysql_fetch_array($query))  
  34.  
  35. {  
  36. echo "<tr>
  37. <td>$row[Nom]</td>
  38. <td>$row[Prénom]</td>
  39. <td></td>
  40. <tr>";  
  41. }  
  42.  
  43. echo "</table>";  
  44.  
  45.  
  46. ?>
  47. </form> 

Je lance mon fichier listecole.php, je choisis dans le menu déroulant, ça m'ouvre mon duxième fichier, celui du code ci-dessus, j'obtiens le tableau avec Nom et Prénom renseigné mais rien dans la 3ème colonne. Le menu déroulant s'affiche mais au dessus du tableau. Je pense qu'il faut renseigner la ligne 39, mais comment?
Irate
Irate
Déconnecté
Irate
Après bien des essais, beaucoup d'aides, nous avons résolu le problème de cette manière :
  1. <?php
  2. require ('conf.php');  
  3.  
  4. $postecole = $_POST['ecole'];  
  5. echo ("<b>Ecole</> :$postecole<br/><br>");  
  6.  
  7.  
  8. $query = mysql_query("SELECT Nom, Prénom, id_nom FROM jos_ecole_etat where ECOLE='$postecole' ORDER BY Nom") OR die("impossible");  
  9. $rqani = mysql_query("SELECT anim, id_anim FROM jos_anim ORDER BY id_anim") OR die("impossible");  
  10.  
  11. echo "<table border='1' cellpadding='1' cellspacing='1' align='left'>
  12.             <td><b>Nom</b></td>
  13.             <td><b>Prénom</b></td>
  14. <td><b>Animation 1</b></td>
  15. </tr>";  
  16.  
  17. while ($row=mysql_fetch_array($query))  
  18.  
  19. {  
  20. echo "<tr>";  
  21. echo "<td><b>$row[Nom]</b></td>";  
  22.  
  23. echo "<td><b>$row[Prénom]</b></td>";  
  24.  
  25. echo "<td>";  
  26.  
  27.  
  28. echo "<select name=\"id_anim[$row[ID_bonhomme]]\">
  29. <option value=\"\">< Choisir ></option>
  30. ";  
  31. if( ! isset($tab_maliste)) {  
  32.  
  33. while (list($anim, $id_anim) = mysql_fetch_row($rqani)) {  
  34. $tab_maliste[$id_anim] = $anim;  
  35. echo "<option value=\"$id_anim\">$anim</option>\r\n";  
  36. }  
  37. } else {  
  38. foreach($tab_maliste as $cle => $val) {  
  39. echo "<option value=\"$cle\">$val</option>\r\n";  
  40. }  
  41. }  
  42. echo "</select></td>
  43. <tr>
  44. ";  
  45. }  
  46. echo "</table>";  
  47.  
  48. ?> 
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
J'aimerais juste préciser que non, il n'est pas nécessaire de déclarer une fonction avant son utilisation. On peut le faire après. La raison en est que l'interprétation du script se fait en plusieurs étapes. D'abord PHP analyse le code, ensuite il l'exécute. À l'exécution, la localisation de la fonction est connue puisqu'elle a déjà été analysée et enregistrée.
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Php - Breizh Blog