Lancer une fonction apres une requête SQL

Résolu/Fermé
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 - 3 janv. 2013 à 19:30
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 - 3 janv. 2013 à 20:24
Bonjour,

Voilà mon problème:

J'ai créé une fonction qui vise à récupérer des données après avoir fait une requête SQL, mais elle ne me retourne aucune donnée... Voilà mon code (un peu raccourci):

La fonction tab_leaf:
function tab_leaf($i)
{
	$leaf[$i][0] = $donnees['id'];
	$leaf[$i][1] = $donnees['nom'];
	$leaf[$i][2] = $donnees['prenom'];
	return $leaf[$i];
}


La requête suivie de l'appel de la fonction:
$reponse = mysql_query("SELECT *, DATE_FORMAT(date_n, '%d-%m-%Y') AS date_n, DATE_FORMAT(date_d, '%d-%m-%Y') AS date_d FROM leaves WHERE id='$id'");
$donnees = mysql_fetch_array($reponse);
$leaf[1] = tab_leaf(1);
$leaf[1][10] = $donnees['generation'];


La requête fonctionne car les données du champ 'generation' sont bien stockées dans la variable $leaf[1][10] , par contre le reste de l'array ($leaf[1][0] , $leaf[1][1] ...) reste totalement vide...

Merci d'avance!


4 réponses

Mr.Brobleme Messages postés 28 Date d'inscription mercredi 2 janvier 2013 Statut Membre Dernière intervention 14 janvier 2013 3
3 janv. 2013 à 19:52
Dans une fonction , on ne peut utiliser que ses variables locaux ou les variables globales
donc , il faut mettre le requête au sein de la fonction :)
0
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 30
3 janv. 2013 à 20:02
Merci:) Raaahh, ça ne m'arrange pas du tout...
0
Mr.Brobleme Messages postés 28 Date d'inscription mercredi 2 janvier 2013 Statut Membre Dernière intervention 14 janvier 2013 3
3 janv. 2013 à 20:12
Alors , la solution est de mettre le résultat de la requête dans une variable puis la passer dans l'entête de la fonction
exemple :
$resultat = résultat de la requête , ça sera sous forme d'un Array
tu appel la fonction sous cette forme
function tatata($resultat);
et du la déclare sous cette forme
function tatata($resultat){
tes traitement ici en utilisant $resultat
}
0
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 30
3 janv. 2013 à 20:24
Youhou ça marche, merci!
Ca donne:

La fonction tab_leaf:
function tab_leaf($i, $donnees)
{
	$leaf[$i][0] = $donnees['id'];
	$leaf[$i][1] = $donnees['nom'];
	$leaf[$i][2] = $donnees['prenom'];
	return $leaf[$i];
}

La requête suivie de l'appel de la fonction:
$reponse = mysql_query("SELECT *, DATE_FORMAT(date_n, '%d-%m-%Y') AS date_n, DATE_FORMAT(date_d, '%d-%m-%Y') AS date_d FROM leaves WHERE id='$id'");
$donnees = mysql_fetch_array($reponse);
$leaf[1] = tab_leaf(1, $donnees);
$leaf[1][10] = $donnees['generation'];
0