JeuWeb - Crée ton jeu par navigateur
function avec requete mysql - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : function avec requete mysql (/showthread.php?tid=5131)



function avec requete mysql - Jazzbass - 02-09-2010

Bonjour j'ai un petit problème qui a mon avis doit être tout bête mais je n'arrive pas à le résoudre.

Donc imagions que je crée une fonction qui me servira pour effectuer une requete mysql :

function requete($table){
$sql = "SELECT * FROM $table";
$req = mysql_query($sql);
$result = mysql_fetch_assoc($req);
return $result;
}

donc si j'appelle la fonction ensuite :
$calcul = requete(membres);

je voudrais savoir comment je peut faire ensuite pour récupérer l'ensemble des resultats de la requete ? Comment récupérer $result ? J'ai trouvé des solutions mais pour ne récupérer qu'un seul résultat. Moi je les voudrais tout. Je suppose qu'il faut faire un boucle mais je ne sait comment m'y prendre.

Merci pour vos réponses.


RE: function avec requete mysql - Sephi-Chan - 02-09-2010

La fonction mysql_query retourne une ressource (ce que tu mets dans $req).
Quand tu donnes cette ressource à la fonction mysql_fetch_assoc, tu transforme une ligne (la dernière) de cette ressource en un tableau.

Le problème, c'est qu'il faut faire ça pour chaque ligne du tableau, de cette façon :


function requete($table){
$query = "SELECT * FROM $table";
$resource = mysql_query($query);
$all_results = array();

while($result = mysql_fetch_assoc($resource)){
$all_results[] = $result;
}

return $all_results;
}

Toutefois, il me semble que cela n'est pas optimisé en terme de ressources système. Je ne sais pas comment on le fait proprement.


Sephi-Chan


RE: function avec requete mysql - Jazzbass - 02-09-2010

oui ok donc je suis d'accord. Mais ensuite si j'appelle la fonction, il va m'afficher $all_results ? et donc avec toutes les entrées de la requete demandée ?


RE: function avec requete mysql - Sephi-Chan - 02-09-2010

Essaye…


echo "<pre>";
print_r(requete('users'));
echo "</pre>";

Par contre, je te déconseille d'utiliser ce genre de fonction… L'utilisation des fonctions mysql_* est déconseillé en PHP, qui préconise l'utilisation de PDO.


Sephi-Chan


RE: function avec requete mysql - Jazzbass - 02-09-2010

Oui c'est vrai j'avais commencé à lire des trucs à ce sujet. Je vais me pencher alors sur pdo. Merci pour ton aide.


RE: function avec requete mysql - php_addict - 02-09-2010

(02-09-2010, 04:37 PM)Jazzbass a écrit : Oui c'est vrai j'avais commencé à lire des trucs à ce sujet. Je vais me pencher alors sur pdo. Merci pour ton aide.

--> PDO comment ca marche


RE: function avec requete mysql - christouphe - 02-09-2010

personnellement, PDO: "l'essayer, c'est l'adopter" Wink


RE: function avec requete mysql - srm - 02-09-2010

Tu peux aussi t'en sortir en retournant ton propre objet du type iterator Smile
J'ai un truc dans un coin comme ça mais c'est pour un Hydrator Doctrine, donc pas convaincu que ça soit utile.

Et ça n'est pas forcément simple à faire sur une ressource mysql, donc bon Smile
Concernant PDO et mysql_ j'émets quelques réserve, le développeur principale de PDO n'a plus le temps de travailler sur PDO, il était en gros le seul à développer sur PDO, il y a des problèmes compliqués qui ont été soulevés pour savoir comment PDO devait gérer les cas spéciaux associés au BDD (des syntaxes propre à Oracle, mySQL, etc) et personne n'est motivé pour reprendre le développement de PDO.

Tandis que les développeurs de mysql et mysqli sont toujours très actifs et font du bon boulot.


RE: function avec requete mysql - Argorate - 02-09-2010

(02-09-2010, 04:19 PM)Jazzbass a écrit : oui ok donc je suis d'accord. Mais ensuite si j'appelle la fonction, il va m'afficher $all_results ? et donc avec toutes les entrées de la requete demandée ?

Effectivement, $all_results sera une liste de tableau.
si tu veux les parcourir, tu fais un foreach de $all_results et c'est terminer Wink
Tout dépend si tu veux que se soit séquentiel ou non.
Si ce n'est pas le cas, la solution n'est pas compliqué, il sufit de mettre des indices non séquenciel (waw sans rire? ^^)


RE: function avec requete mysql - christouphe - 02-09-2010

(02-09-2010, 07:06 PM)oxman a écrit : Tu peux aussi t'en sortir en retournant ton propre objet du type iterator Smile
J'ai un truc dans un coin comme ça mais c'est pour un Hydrator Doctrine, donc pas convaincu que ça soit utile.

Et ça n'est pas forcément simple à faire sur une ressource mysql, donc bon Smile
Concernant PDO et mysql_ j'émets quelques réserve, le développeur principale de PDO n'a plus le temps de travailler sur PDO, il était en gros le seul à développer sur PDO, il y a des problèmes compliqués qui ont été soulevés pour savoir comment PDO devait gérer les cas spéciaux associés au BDD (des syntaxes propre à Oracle, mySQL, etc) et personne n'est motivé pour reprendre le développement de PDO.

Tandis que les développeurs de mysql et mysqli sont toujours très actifs et font du bon boulot.

Bon et bien dans ce cas, il me reste à finir mon interface "database" Wink