reucperer un enregistrement de la base de donnees: soucis de COUNT

Eléphant du PHP | 319 Messages

19 nov. 2007, 20:04

hello,

d'un cote j'ai une table avec les donnees d'un jeu. de l'autre les participants.
je fais une boucle pour me sortir les jeux termines et le nombre de participants a chacun d'eux.

j'ai cette requete:
<?php
$query = ("SELECT gifts.id_gifts, gifts.type, gifts.name, gifts.expiry, gifts.stock, gifts_played.id_gifts, gifts_played.id_clients, COUNT(*)
		FROM gifts, gifts_played
		WHERE gifts.expiry < CURDATE()
		AND gifts_played.id_gifts = gifts.id_gifts
		GROUP BY gifts.id_gifts
$result = mysql_query($query) or die('Query failed. ' . mysql_error());

while ($row = mysql_fetch_assoc($result))
{

print "
  <tr>
    <td>$row[id_gifts]</td>
    <td>$row[type]</td>
    <td>$row[name]</td>
    <td>$row[expiry]</td>
    <td>$row[stock]</td>
    <td>$row[COUNT(id_clients)]</td>
    <td><a href=\"tpl/find_sponsored.tpl.php?id_gifts=$row[id_gifts]\">Find!!!</a></td>
  </tr>
";
}

//have to put the tag here otherwise it would break the way the table is displayed
print "</table>";
?>
mais ca me sort une page blanche.
le soucis vient du COUNT que j'ai mis a plusieurs sauce (piquante, aigre douce, poivre...) mais rien n'y fait. la doc mysql me dit de faire COUNT(*) alors que je voudrais un COUNT(gifts_played.id_clients)

qq un a une idee de comment je peux recuperer le decompte des joueurs via cette requete svp?

merci
niveau: pas terrible en php mais je me soigne...

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 nov. 2007, 20:09

C'est simple il faut nommer ton champ Count(*) dans la requête SQL avec le mot réservé AS
Exemple:

Code : Tout sélectionner

SELECT gifts.id_gifts, gifts.type, gifts.name, gifts.expiry, gifts.stock, gifts_played.id_gifts, gifts_played.id_clients, COUNT(*) AS compte ...
Puisque maintenant le champ calculé se nomme compte on peut le récupérer sous PHP par ce nom en écrivant :
$row["compte"]
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 319 Messages

19 nov. 2007, 20:26

Slaut Sqdeq,

merci de ta reponse.

ca marche nettement mieux avec le AS apres le COUNT

j'ai pris cette syntaxe:
$query = ("SELECT gifts.id_gifts, gifts.type, gifts.name, gifts.expiry, gifts.stock, gifts_played.id_gifts, COUNT(gifts_played.id_clients) AS total
		FROM gifts, gifts_played
		WHERE gifts.expiry < CURDATE()
		AND gifts_played.id_gifts = gifts.id_gifts
		GROUP BY gifts.id_gifts
		");
pettie question annexe: je dois appeler dans mon SELECT les operateurs de ma requetes?

genre: si je fais un AND gifts_played.id_gifts = gifts.id_gifts est ce que je dois appeller gifts_played.id_gifts et gifts.id_gifts avant?
niveau: pas terrible en php mais je me soigne...

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 nov. 2007, 20:57

Désolé j'ai pas compris ta question.
Mais au passage, je tiens à te préciser que tu peux virer un des id_gifts dans la liste des champs de ton select gifts.id_gifts ou gifts_played.id_gifts c'est la même chose car ils sont égaux.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 319 Messages

19 nov. 2007, 21:07

justement tu reponds partiellement a ma question ;)

je n'ai ps besoins de faire le AND gifts_played.id_clients = gifts.id_clients
afin de recuperer les bons id_clients
dans gifts_played??
niveau: pas terrible en php mais je me soigne...