Une ligne au hasard dans un table

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Une ligne au hasard dans un table

par Ripat » 01 mai 2005, 09:00

Il y a plus court, en une seule requête:

Code : Tout sélectionner

SELECT tes_col FROM ta_table ORDER BY RAND() LIMIT 1
Edit: Plus performant pour des grosses tables:

Code : Tout sélectionner

SELECT tes_col FROM ta_table WHERE RAND()<0.01 ORDER BY RAND() LIMIT 1
Avec ORDER BY RAND(), MySql affecte un nombre aléatoire à chaque ligne de la table. Ensuite il trie sur ces nombres et ce tri peut prendre du temps pour des grosses tables. La solution ci-dessus limite le tri sur un sous-ensemble plus restreint grâce au WHERE.

par ioup » 30 avr. 2005, 23:36

salut ! je suis pas un crack en php (enfin pas encore :p) mais j'aurais utiliser le rand() aussi :) je l'ai fait pour des fonds d'écran aléatoire ... :)

Une ligne au hasard dans un table

par Invité » 30 avr. 2005, 23:29

bonjour tout le monde,
je souhaite prendre un ligne au hazard dans une table et l'afficher

Code : Tout sélectionner

<?php $requete=mysql_query("SELECT * FROM ed_citations"); $nb_citation=mysql_num_rows($requete); $citation=rand(1, $nb_citation); $requete="SELECT * FROM ed_citations WHERE id='$citation'"; $temp=mysql_fetch_array( mysql_query($requete) ); echo '<b>'.$temp['nom']. '</b><br>' .$temp['citation']; ?>
dans ma table j'ai un id qui est incrémenté à chaque ajout. je prend un numéro au pif et en comparant avec id j'ai la ligne correspondante.
est ce réellement la meilleure solution ? ca fonctionne mais j'ai fais avec mes connaissance. j'aurai aimé savoir s'il y avait mieux ou plus judicieux.

merci et bonne continuation a tous