Affichage aléatoire d'un des enregistrements du résultat d'une requète

Affichage aléatoire d'un des enregistrements du résultat d'une requète - PHP - Programmation

Marsh Posté le 30-10-2004 à 12:43:21    

Bonjour,
 
J'aimerais effectué une requète qui, d'une façon aléatoire ne me renvoi qu'un seul des résultat d'elle même.
 
Je ne sais pas si c'est possible de le faire en MySQL, autrement, comment faudrait-il procéder en PHP ?
 
 
Exemple:
SELECT * FROM matable
Renvoi 5 résultat:
Je voudrais choisir l'un de ces résultats uniquement.
 
Pour le PHP je pense à quelque chose comme çela:
$rst=mysql_query("select * from matable",$connexion);
$nb_rst=mysql_num_rows($rst);
$nb_sorti=rand(1,$nb_rst);
for($i=1;$i<=$nb_sorti;$i++)
{
  $ma_table=mysql_fetch_object($rst);
}
 
Je suppose qu'il y a mieux à faire, mais je ne vois pas comment.
 
Merci d'avance.

Reply

Marsh Posté le 30-10-2004 à 12:43:21   

Reply

Marsh Posté le 30-10-2004 à 12:47:03    

order by rand()
limit 1

Reply

Marsh Posté le 30-10-2004 à 12:47:27    

Déjà, le SELECT * c'est mal.
Sinon:
 
SELECT tonchamp FROM tatable ORDER BY RAND() LIMIT 1

Reply

Marsh Posté le 30-10-2004 à 12:47:56    

et merde  [:benou_grilled]  [:prodigy]

Reply

Marsh Posté le 30-10-2004 à 12:50:32    

Merci pour vos réponses.
Le select * c'est mal, je suis au courant, c'était juste pour l'exemple.
 
Juste pour mieux comprendre, le RAND() génère un nombre aléatoire, mais que va faire MySQL exactement ? Il va trier par clé primaire aléatoirement et en prendre 1 (limit 1), ou c'est autre chose ?

Reply

Marsh Posté le 30-10-2004 à 12:54:03    

rand génère bien un nombre aléatoire et attribut celui-ci à chaque row du resultset. Ensuite, c'est avec ce nombre que tes rows sont ordonées. pour le limit, t'as deviné juste.

Reply

Marsh Posté le 30-10-2004 à 16:38:06    

Merci beaucoup !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed