Page 1 sur 1

tirage au sort depuis cette requete: comment?

Posté : 19 nov. 2007, 16:08
par choubix
hello,

je dois faire un tirage au sort dans une table.
les utilisateurs jouent. une fois que le jeu arrive a expiration je souhaite trouver le gagnant en fonction du stock disponible.

les utilisateurs peuvent jouer autant de fois qu'ils le souhaitent MAIS je ne souahite comptabiliser qu'une seule participation

j'ai donc fait cette requete:
$query = ("SELECT gifts.id_gifts, gifts.expiry, gifts.stock, gifts_played.id_clients, clients.lname, clients.fname, clients.email
			FROM gifts, gifts_played, clients
			WHERE gifts.type = '1'
			AND gifts.expiry < CURDATE()
			GROUP BY id_clients
			");
$result = mysql_query($query) or die('Query failed. ' . mysql_error());

ca semble se tenir?
ca ne prendra bien en compte qu'une seule participation grace au Group By ?


par aillerus: comment est ce que je peux faire un tirage au sort de X gagnants parmi la liste de participants en fonction du stock dispo svp?

si qq un pouvait m'eclairer sur la marche a suivre ca serait sympa

merci :)

Posté : 19 nov. 2007, 16:31
par choubix
en fait jessaie de le passer en SQL comme ca:
$query = ("SELECT gifts.id_gifts, gifts.expiry, gifts.stock, gifts_played.id_clients, clients.lname, clients.fname, clients.email
			FROM gifts, gifts_played, clients
			WHERE gifts.type = '1'
			AND gifts.expiry < CURDATE()
			GROUP BY id_clients, fname, lname, email
			ORDER BY RAND()
			LIMIT stock
			");
$result = mysql_query($query) or die('Query failed. ' . mysql_error());

while ($row = mysql_fetch_assoc($result))
{
print "$row[id_clients]<br>";
print "$row[fname]<br>";
print "$row[lname]<br>";
print "$row[email]<br>";
}
MAIS:
- la limite me retourne une erreur (je ne dois pas pouvoir ecrire la limite de cette facon). si je mets une limite numerique ca m'affiche un resultat.

- avec un limite numerique (genre 3): ca me retourne bien 3 affichages MAIS ca me melange les id_clients, les noms, prenoms et email...

ca serait pas mal de faire ca en sQL en fait...
donc si qq un avait une idee pour faire tourner cette requete ca serait sympa

merci!