Recupérer fonction perso dans table
le 27/06/2008 à 17:30
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 :
<?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
Irate
salut,
<?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 ;)
@+
Il en faut peu pour être heureux !!!!!
le 29/06/2008 à 11:40
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,
<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
Irate
le 29/06/2008 à 13:20
Keika
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
Le PHP --> C'est dur !
le 29/06/2008 à 14:24
i M@N
Hello.
Keika, cette fois j'y suis pour rien ... c'était Mr Moogli
@+...
One Love, One Heart, One Unity.
le 29/06/2008 à 14:58
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 ?
Irate
le 29/06/2008 à 15:31
i M@N
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.
@+...
One Love, One Heart, One Unity.
le 29/06/2008 à 16:20
Irate
Bon. Effectivement. Je viens de modifier comme ceci:
<?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?
Irate
le 08/07/2008 à 21:22
Irate
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>";
?>
Irate
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.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: