Page 1 sur 1

reucperer un enregistrement de la base de donnees: soucis de

Posté : 19 nov. 2007, 20:04
par choubix
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

Posté : 19 nov. 2007, 20:09
par sadeq
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"]

Posté : 19 nov. 2007, 20:26
par choubix
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?

Posté : 19 nov. 2007, 20:57
par sadeq
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.

Posté : 19 nov. 2007, 21:07
par choubix
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??