Compter les reponses d'une requète sql [Réglé]
Tezz Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Tezz
- Inscrit le : 26/04/2010
Encore une fois je me retourne vers vous pour m'aider.
En principe ce sera tout, mais j'y arrives vraiment pas tout seul

En fait, je voudrais afficher dans un tableau tout les membres d'une "team" mais qu'il n'y ait que 5 colonnes maximum/
(il y a environ 20 membres)
Je pensais effectuer un comptage des requètes au moyen de la fonction num_rows et ensuite créer une boucle "for" dans le tpl pour que tout les 5 résultats je puisse créer une nouvelle ligne dans le tableau.
Mais apparemment il ne veut pas accepter la fonction num_rows
L'erreur renvoyée ici est :
Avertissement : Missing argument 2 for Sql::num_rows(), called in /web/teampff/www/playforfun/test/test.php on line 44 and defined dans le fichier /web/teampff/www/playforfun/kernel/framework/db/mysql.class.php à la ligne 351
ligne44 : $id = $Sql->num_rows($results);
Enfin voila, merci pour le coup de main

Code PHP :
$tpl = new Template('test/test.tpl'); import('core/menu_service'); import('util/date'); global $Sql; $result = $Sql->query_while("SELECT * FROM ".PREFIX."member WHERE user_groups = 7", __LINE__, __FILE__); $results = $Sql->query_while("SELECT count(user_id) FROM ".PREFIX."member WHERE user_groups = 7", __LINE__, __FILE__); $id = $Sql->num_rows($results); while( $row = $Sql->fetch_assoc($result) ) { $tpl->assign_block_vars('list_member0', array( 'LOGIN0' => $row['login'], 'AVATAR0' => $row['user_avatar'], $date = new Date(DATE_TIMESTAMP, TIMEZONE_SYSTEM, strtotime($row['user_born'])), 'ID' => $results , 'DATE' => $date->format(DATE_FORMAT_SHORT), // if (!empty($date)) // 'DATE' => 'éternel', // } // else // { // 'DATE' => $date->format(DATE_FORMAT_SHORT), // } )); }
Édité par Tezz Le 30/04/2010 à 19h43
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Ensuite, pour faire une nouvelle ligne dans ton tableau, tu fais ouvres un <tr> dans la boucle de ton template.
Je ne suis pas sûr d'avoir répondu à la question, parce que je ne pense pas l'avoir comprise.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
alain91 Membre non connecté
Booster Missile
-
Booster Missile
- Voir le profil du membre alain91
- Inscrit le : 26/09/2010
- Groupes :
Tu signales une erreur de syntaxe dans num_rows. Il faut normalement saisir la requete SELECT en second paramètre.
Sinon, je crois qu'il existe une fonction qui après un query_while récupère toutes les données dans un tableau (quelque chose comme fetch_array)
et ensuite on compte le nombre d'éléments du tableau avec count().
Le pessimisme est d'humeur. L'optimisme est de volonté (Philosophe Alain).
Tezz Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Tezz
- Inscrit le : 26/04/2010
ben.popeye :
Je ne suis pas sûr d'avoir répondu à la question, parce que je ne pense pas l'avoir comprise.
Je ne suis pas sûr d'avoir répondu à la question, parce que je ne pense pas l'avoir comprise.
Il se peut que je ne sois pas très clair, c'est vrai

Code PHP :
$result = $Sql->query_while("SELECT * FROM ".PREFIX."member WHERE user_groups = 7", __LINE__, __FILE__); while( $row = $Sql->fetch_assoc($result) ) { $tpl->assign_block_vars('list_member0', array( 'LOGIN0' => $row['login'], )); }
Dans le user group 7 il y a 20 membres,
Code TPL :
Mais en faisant ça, il aligne les 20 réponses de ma requète sur une seule ligne du tableau.
Comment puis-je faire pour les disposer en plusieurs lignes,
(je n'ai sélectionné qu'une petite partie du code ce qui devrait suffire, si vous voulez l'entièreté, pas de problèmes)
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Tezz Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Tezz
- Inscrit le : 26/04/2010
mais de cette façon, je ne peux avoir qu'une itération par ligne, enfin, si j'ai bien compris?
Or ce que je souhaiterais c'est d'avoir 5 itérations par ligne.
Mais j'avoue, c'est possible que ce soit très simple et que je me casse la tête pour rien.

En tout cas, merci de te pencher sur mon cas
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Tezz Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Tezz
- Inscrit le : 26/04/2010
merci reidlos, ça va faire plusieurs fois que tu m'aides bien

J'vais voir ça, si j'y arrives pas j'demanderai encore un p'tit conseil si tu veux bien ^^
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Dans ce cas-là tu utilises l'opérateur modulo (%).
Tu fais une condition template (variable booléenne)
Code TPL :
Et dans l'assignation (au même endroit que tu mets LOGIN0, tu mets :
Code PHP :
'C_NEW_LINE' => ++$i % 5 == 0,
ceci en ayant au préalable défini la variable i à 0 avant la requête.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Tezz Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Tezz
- Inscrit le : 26/04/2010
c'est pile poil ce qu'il me fallait

ça fonctionne parfaitement.

Je sais que j'en demande bcp, mais il reste juste un petit détail puis mon lot de questions sera épuisé.
Code PHP :
if (!empty($date)) 'DATE' => 'éternel', } else { 'DATE' => $date->format(DATE_FORMAT_SHORT), }
Parse error: syntax error, unexpected T_IF, expecting ')' in /web/teampff/www/playforfun/test/test.php on line 59
ça a l'air d'être une bète faute de syntaxe, mais j'vois pas ou.
ENfin, voila, vraiment, merci bcp pour toutes vos aides, ça m'a permis d'aller au bout de ce que je voulais faire

KONA Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre KONA
- Inscrit le : 21/05/2006
- Site internet
Code PHP :
if (!empty($date)) { 'DATE' => 'éternel', } else { 'DATE' => $date->format(DATE_FORMAT_SHORT), }
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
De plus, je mettrais pas !empty($date) mais $date !== null parce que c'est un objet et pas un type primitif (string int...).
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Tezz Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Tezz
- Inscrit le : 26/04/2010
C'est vrai que j'ai oublié de la remettre, mais c'est une erreur de recopiage, voici exactement la boucle dont il est question :
Code PHP :
while( $row = $Sql->fetch_assoc($result) ) { $tpl->assign_block_vars('list_member0', array( 'LOGIN0' => $row['login'], 'AVATAR0' => $row['user_avatar'], $date = new Date(DATE_TIMESTAMP, TIMEZONE_SYSTEM, strtotime($row['user_born'])), if ($date !== null) { 'DATE' => 'éternel', } else { 'DATE' => $date->format(DATE_FORMAT_SHORT), } )); }
Mais il continue a me renvoyer une erreur a la ligne suivante :
if ($date !== null)
toujours la même erreur de syntaxe.
Édité par Tezz Le 01/05/2010 à 15h38
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Code PHP :
while ($row = $Sql->fetch_assoc($result)) { $date = new Date(DATE_TIMESTAMP, TIMEZONE_SYSTEM, strtotime($row['user_born'])) $tpl->assign_block_vars('list_member0', array( 'LOGIN0' => $row['login'], 'AVATAR0' => $row['user_avatar'], 'DATE' => empty($row['user_born']) ? 'éternel' : $date->format(DATE_FORMAT_SHORT) )); }
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Tezz Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Tezz
- Inscrit le : 26/04/2010
j'me sens gêné, j'croyais me débrouiller, mais la

Enfin, voilà, j'adorerais dire que tout va bien, mais non,
Il ne me retourne pas d'erreurs, mais n'affiche pas non plus le mot "éternel" lorsque la case date est vide/
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
