Salut!
Mon problème est un peu compliqué, alors je vais essayer d'être aussi claire que possible:
Ce que je souhaite faire:
J'ai fait une fonction (tab_leaf($sosa)) qui me permet de:
1. Exécuter une requête sur une bdd, avec comme paramètre $sosa (la variable $sosa contient un chiffre)
Lors de la requête je cherche à sélectionner l'entrée qui a la valeur $sosa dans le champ 'sosa'. (Il n'y en a forcément qu'une seule)
2. Puis je récupère ensuite toutes les données de l'entrée qui a été trouvée (nom, prenom, date_n, lieu_n, date_d et lieu_d), et je les stocke dans un array $leaf.
J'ai fait une fonction car je voudrais lancer plusieurs fois la même requête avec différentes valeurs pour $sosa.
Je ne peux pas (ou du moins je pense que je ne peux pas) faire une boucle car les différentes valeurs de $sosa que je veux chercher ne se suivent pas...
Pourquoi je fais pas toutes les sélections dans la même requête? (avec WHERE ... OR ... OR ...) Parce que si à un moment une des valeurs de $sosa n'apparait pas dans la base de données, je veux lui attribuer une valeur "par défaut".
Puis, une fois la fonction exécutée un certain nombre de fois, j'affiche toutes les données du tableau $leaf avec un echo.
Là où le bât blesse:
Dans l'état actuel des choses, avec le script ci-dessous, rien ne s'affiche....
Je pense que ça vient du fait qu'une fois la fonction terminée, je n'arrive pas à récupérer les valeurs contenues dans le tableau $leaf. J'ai l'impression qu'après avoir fini la fonction, les valeurs stockées sont "oubliées"...
Ca doit être un problème de portée de variable, mais je ne sais pas comment récupérer les variables crées par la fonction pour m'en servir en dehors de celle-ci...
J'ai essayé return $leaf; à la fin de la fonction, et aussi d'attribuer la fonction à une variable au lieu de l'exécuter, mais ya rien à faire :(
Bref voilà mon code:
$counter = 1;
mysql_connect("localhost", "mon_site", "pass");
mysql_select_db("ma_bdd");
function tab_leaf($sosa) {
$reponse = mysql_query("SELECT * FROM table WHERE sosa='$sosa'");
$donnees = mysql_fetch_array($reponse);
//si la requête n'est pas vide je stocke les données dans le tableau $leaf. La 1ère requête attibura des valeurs à $leaf[1], la 2ème à $leaf[2], etc...
if ($donnees) {
$leaf[$counter][0] = $donnees['sosa'];
$leaf[$counter][1] = $donnees['nom'];
$leaf[$counter][2] = $donnees['prenom'];
$leaf[$counter][3] = $donnees['date_n'];
$leaf[$counter][4] = $donnees['lieu_n'];
$leaf[$counter][5] = $donnees['date_d'];
$leaf[$counter][6] = $donnees['lieu_d'];
}
//si elle est vide j'attribue une valeur par défaut (merci sly bzh!)
else {
$leaf[$counter][0] = $sosa;
}
//puis j'augmente le "compteur" de 1...
$counter++;
}
//c'est ici que j'appelle la fonction, en attribuant tour à tour différentes valeurs à $sosa
tab_leaf($i);
tab_leaf($j);
echo $counter; // ça c'est pour voir si ma fonction marche... et visiblement ça fonctionne pas car $counter affiche toujours ...1!
//et ici j'affiche toutes les données contenues dans $leaf...
echo $leaf[1][0];
echo $leaf[1][1];
echo $leaf[1][2];
echo $leaf[1][3];
echo $leaf[1][4];
echo $leaf[1][5];
echo $leaf[1][6];
echo "<br /> <br />";
echo $leaf[2][0];
echo $leaf[2][1];
echo $leaf[2][2];
echo $leaf[2][3];
echo $leaf[2][4];
echo $leaf[2][5];
echo $leaf[2][6];
J'espère que je vous ai pas filé mal au crane!
Merci d'avance au courageux / courageuses ;)
Quelques bases en javascript, débute en php/mySQL
J'essaie de mettre en ligne mon arbre généalogique.Configuration: Windows XP
Firefox 2.0.0.13