Recupérer fonction perso dans table

Répondre
Irate
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
moogli
le 27/06/2008 à 21:15
moogli
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 !!!!!
Irate
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
Keika
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 !
i M@N
le 29/06/2008 à 14:24
i M@N
Hello.

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

@+...
One Love, One Heart, One Unity.
Irate
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
i M@N
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.
Irate
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
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
LupusMic
le 17/07/2008 à 13:52
LupusMic
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.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours