Recupérer fonction perso dans table
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 :
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
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 :
- <?php
- require ('conf.php');
- ?>
- <form method="post" name="anim" action="">
- <?php
- //Fichier de réception du formulaire listecole.php
- $postecole = $_POST['ecole'];
- echo ("<b>Ecole</> :$postecole<br/><br>");
- //requête sql
- $query = mysql_query("SELECT Nom, Prénom, anim FROM jos_ecole_etat, jos_anim where ECOLE='$postecole' ORDER BY Nom") OR die("impossible");
- //tableau des données récoltées
- echo "<table border='1' cellpadding='1' cellspacing='1' align='left'>
- <td><b>Nom</b></td>
- <td><b>Prénom</b></td>
- <td><b>Animation 1</b></td>
- </tr>";
- while ($row = mysql_fetch_array($query))
- //foreach ($rqanim as $anim)
- {
- echo "<tr>
- <td>$row[Nom]</td>
- <td>$row[Prénom]</td>
- <td> menuanim()</td>
- <tr>";
- }
- echo "</table>";
- function menuanim() {
- $rqani = mysql_query("SELECT anim FROM jos_anim ORDER BY ID");
- echo ('<select name="anim">');
- if ($produit == "") {
- echo ('<option value="' . '">' . '< Choisir >' . '</option>');
- }
- else {
- echo ('<option value="' . '">' . '</option>');
- }
- while ($ligne1 = mysql_fetch_object($rqani)) {
- //la concatenation des champs se fait ici
- echo ('<option>' . $ligne1->anim . '</option>');
- }
- echo ('</select>');
- }
- ?>
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
salut,
menuanim() est, bien sur, à déclarer avant utilisation ;)
@+
- <?php
- echo '<table border="1" cellpadding="1" cellspacing="1" align="left">
- <td><b>Nom</b></td>
- <td><b>Prénom</b></td>
- <td><b>'.menuanim().'</b></td>
- </tr>';
- ?>
menuanim() est, bien sur, à déclarer avant utilisation ;)
@+
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,
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
qu'il faut agir. Je voudrais comprendre, merci
- <form method="post" name="anim" action="">
- <?php
- require ('conf.php');
- //Fichier de réception du formulaire listecole.php
- $postecole = $_POST['ecole'];
- echo ("<b>Ecole</> :$postecole<br/><br>");
- $query = mysql_query("SELECT Nom, Prénom FROM jos_ecole_etat where ECOLE='$postecole' ORDER BY Nom") OR die("impossible");
- //tableau des données récoltées
- echo '<table border="1" cellpadding="1" cellspacing="1" align="left">
- <td><b>Nom</b></td>
- <td><b>Prénom</b></td>
- <td><b>'.menuanim().'</b></td>
- </tr>';
- while ($row = mysql_fetch_array($query))
- //foreach ($rqanim as $anim)
- {
- echo "<tr>
- <td>$row[Nom]</td>
- <td>$row[Prénom]</td>
- <td></td>
- <tr>";
- }
- echo "</table>";
- function menuanim() {
- $rqani = mysql_query("SELECT anim FROM jos_anim ORDER BY ID");
- echo ('<select name="anim">');
- if ($produit == "") {
- echo ('<option value="' . '">' . '< Choisir >' . '</option>');
- }
- else {
- echo ('<option value="' . '">' . '</option>');
- }
- while ($ligne1 = mysql_fetch_object($rqani)) {
- //la concatenation des champs se fait ici
- echo ('<option>' . $ligne1->anim . '</option>');
- }
- echo ('</select>');
- // fermeture de la base pour eviter les problèmes
- mysql_close();
- }
- ?>
- </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
- <?php
- echo "<tr>
- <td>$row[Nom]</td>
- <td>$row[Prénom]</td>
- <td></td>
- <tr>";
- ?>
qu'il faut agir. Je voudrais comprendre, merci
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
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
Hello.
Keika, cette fois j'y suis pour rien ... c'était Mr Moogli
@+...
Keika, cette fois j'y suis pour rien ... c'était Mr Moogli
@+...
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 ?
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.
@+...
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.
@+...
Bon. Effectivement. Je viens de modifier comme ceci:
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?
- <?php<form method="post" name="anim" action="">
- <?php
- require ('conf.php');
- //Fichier de réception du formulaire listecole.php
- $postecole = $_POST['ecole'];
- echo ("<b>Ecole</> :$postecole<br/><br>");
- $query = mysql_query("SELECT Nom, Prénom FROM jos_ecole_etat where ECOLE='$postecole' ORDER BY Nom") OR die("impossible");
- //Déclare fonction
- function menuanim() {
- $rqani = mysql_query("SELECT anim FROM jos_anim ORDER BY ID");
- echo ('<select name="anim">');
- if ($produit == "") {
- echo ('<option value="' . '">' . '< Choisir >' . '</option>');
- }
- else {
- echo ('<option value="' . '">' . '</option>');
- }
- while ($ligne1 = mysql_fetch_object($rqani)) {
- echo ('<option>' . $ligne1->anim . '</option>');
- }
- echo ('</select>');
- }
- //tableau des données récoltées
- echo '<table border="1" cellpadding="1" cellspacing="1" align="left">
- <td><b>Nom</b></td>
- <td><b>Prénom</b></td>
- <td><b>'.menuanim().'</b></td>
- </tr>';
- while ($row = mysql_fetch_array($query))
- {
- echo "<tr>
- <td>$row[Nom]</td>
- <td>$row[Prénom]</td>
- <td></td>
- <tr>";
- }
- echo "</table>";
- ?>
- </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?
Après bien des essais, beaucoup d'aides, nous avons résolu le problème de cette manière :
- <?php
- require ('conf.php');
- $postecole = $_POST['ecole'];
- echo ("<b>Ecole</> :$postecole<br/><br>");
- $query = mysql_query("SELECT Nom, Prénom, id_nom FROM jos_ecole_etat where ECOLE='$postecole' ORDER BY Nom") OR die("impossible");
- $rqani = mysql_query("SELECT anim, id_anim FROM jos_anim ORDER BY id_anim") OR die("impossible");
- echo "<table border='1' cellpadding='1' cellspacing='1' align='left'>
- <td><b>Nom</b></td>
- <td><b>Prénom</b></td>
- <td><b>Animation 1</b></td>
- </tr>";
- while ($row=mysql_fetch_array($query))
- {
- echo "<tr>";
- echo "<td><b>$row[Nom]</b></td>";
- echo "<td><b>$row[Prénom]</b></td>";
- echo "<td>";
- echo "<select name=\"id_anim[$row[ID_bonhomme]]\">
- <option value=\"\">< Choisir ></option>
- ";
- if( ! isset($tab_maliste)) {
- while (list($anim, $id_anim) = mysql_fetch_row($rqani)) {
- $tab_maliste[$id_anim] = $anim;
- echo "<option value=\"$id_anim\">$anim</option>\r\n";
- }
- } else {
- foreach($tab_maliste as $cle => $val) {
- echo "<option value=\"$cle\">$val</option>\r\n";
- }
- }
- echo "</select></td>
- <tr>
- ";
- }
- echo "</table>";
- ?>
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.
Accès rapide :
Remonter 

