Afficher un resultat aléatoire d'un requete sql

cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011 - 7 févr. 2007 à 11:55
schunck Messages postés 10 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 24 mai 2007 - 9 mars 2007 à 10:04
Bonjour,

voilà je vous explique, j'aimerai qu'a chaque chargement de la page, les informations affichées soient différentes pour l'utilisateur ... j'ai donc plusieur enregistrements dans ma base de donnée qui sont en home='OUI' et à chaque chargement de la page j'aimerai qu'ils puissent s'afficher aléatoirement.

voici ce que j'ai fais, mais ca ne marche pas ...

merci de votre aide ...

$sql="SELECT * FROM produitba WHERE actif='OUI' AND home='OUI' ";
$result = mysql_query($sql);
srand((double)microtime()*10000);
$num= mysql_num_rows($result);
$nb= rand(0, $num-1);
mysql_data_seek($result, $nb);
while($ligne = mysql_fetch_assoc($result)) {
        $IDPRODUIT2= $ligne->ID;
        $TITRE= $ligne->titre;
        $vignette=$ligne->URLVIGNETTE;
        $chapeau=$ligne->chapeau;
        $anim=$ligne->urlanime;
        $keywords=$ligne->keywords;
        $description=$ligne->description;
        $animillustre=$ligne->urlillustr;
        $catid=$ligne->categorieba;
        $montant=$ligne->pxvente;
        $urlpage=$ligne->urlpage;
        $prixbarre=$ligne->pxnormal;
        $prixvente=$ligne->pxvente;
       

echo '

[detailproduitba-idproduit-'.$urlpage.'.html ]

'.$TITRE.'
'.$chapeau.'
';
}

6 réponses

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
7 févr. 2007 à 12:21
Yop!
Tu pourrais tenter cette requête:
SELECT * FROM produitba WHERE actif='OUI' AND home='OUI'  ORDER BY RAND()

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
Kdecherf Messages postés 96 Date d'inscription mardi 9 janvier 2007 Statut Membre Dernière intervention 18 avril 2007
7 févr. 2007 à 13:50
Ne faudrait-il pas rajouter un LIMIT 1 avec le ORDER BY RAND() ? (si on ne veut qu'un seul enregistrement)

Cordialement,
Kdecherf
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
7 févr. 2007 à 14:06
en fait j'ai trouvé ... tout venait de ma syntaxe il fallait ecrire $ligne['titre'] plutot que $ligne->titre
voila
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
7 févr. 2007 à 17:16
[auteurdetail.aspx?ID=952117 Kdecherf]
, oui, mais je pensais qu'il voulait classer aléatoirement tous les résultats...

loupile, je te conseille ma proposition qui sera plus rapide que de récupérer tous les enregistrements et d'en afficher un au hasard!

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kdecherf Messages postés 96 Date d'inscription mardi 9 janvier 2007 Statut Membre Dernière intervention 18 avril 2007
7 févr. 2007 à 18:10
Il est vrai que ta solution est beaucoup plus rapide et optimisé que le script de départ, mais bon à chacun son choix après.

Cordialement,
Kdecherf
0
schunck Messages postés 10 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 24 mai 2007
9 mars 2007 à 10:04
Moi, j'utilise également cette requète dans une page où je liste 7 résultats par page. Le problème est que j'ai maxi 7 enregistrements par page, mais je peux en avoir 2 ou 3, le nombre aussi es aléatoire !!
ma requète : $reponse = mysql_query('SELECT * FROM members ORDER BY RAND()  LIMIT 7');
Est ce normal d'après vous ? Si c'est le cas, je vais développer ça en fonction, mais je pensais simplifié en utilisant uniquement un rand ()
0
Rejoignez-nous