Choix aleatoire mysql
21 messages • Page 1 sur 2 • 1, 2
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Je ne comprends pas : si tu as trouvé pourquoi poses-tu la question :- ?
Edit : ah ok pardon je n'avais pas compris l'histoire des 20 derniers enregistrements désolé
.
Edit : ah ok pardon je n'avais pas compris l'histoire des 20 derniers enregistrements désolé
Dernière édition par yazerty le Mer Sep 12, 2007 7:09, édité 1 fois.
Tu peux tenter ça :
Vu ici : http://www.webrankinfo.com/forums/topic ... 130_15.htm
$sql = mysql_query("select * from table order by md5(rand()) limit 1");
Vu ici : http://www.webrankinfo.com/forums/topic ... 130_15.htm
- boutdepapier
- WRInaute occasionnel

- Messages: 163
- Inscription: Ven Aoû 04, 2006 16:32
Perso je fais :
$sql = "SELECT id, nom, chapo FROM fiche WHERE activite_actrice=1 ORDER BY rand() LIMIT 1";
Et ça marche trés bien
Si tu veux faire un random sur les deux derniers il faut jouer sur le limit :
$sql = "SELECT id, nom, chapo FROM fiche WHERE activite_actrice=1 ORDER BY rand() LIMIT (Le nombre total d'enreistrement total - 20),1";
$sql = "SELECT id, nom, chapo FROM fiche WHERE activite_actrice=1 ORDER BY rand() LIMIT 1";
Et ça marche trés bien
$sql = "SELECT id, nom, chapo FROM fiche WHERE activite_actrice=1 ORDER BY rand() LIMIT (Le nombre total d'enreistrement total - 20),1";
non, là ça trie par ordre aléatoire et ensuite ça en choisit les 20 derniers.boutdepapier a écrit:$sql = "SELECT id, nom, chapo FROM fiche WHERE activite_actrice=1 ORDER BY rand() LIMIT (Le nombre total d'enreistrement total - 20),1";
Alors que ce qu'il veut, c'est en prendre 5 au hasard dans les 20 derniers. En fait, il faudrait quelque chose comme ça
- Code: Tout sélectionner
SELECT * FROM matable where id in (select id FROM matable order by id desc limit 10)
order by rand() limit 0,5
qui dit en passant est la même que la mienne...
Sinon tu fais un tableau multidimensions avec les 20 résultats de ta requête, tu mélange le tout aléatoirement, et tu prends les 6 premiers...
-edit:
un truc comme ça (pas testé) :
Sinon tu fais un tableau multidimensions avec les 20 résultats de ta requête, tu mélange le tout aléatoirement, et tu prends les 6 premiers...
-edit:
un truc comme ça (pas testé) :
- Code: Tout sélectionner
$i = 0;
while ($row = mysql_fetch_assoc($sql)) {
$row[$i]['champs1'] = $row['champs1'];
$row[$i]['champs2'] = $row['champs2'];
$row[$i++]['champs3'] = $row['champs3'];
}
mysql_free_result($sql);
shuffle($row);
for ($i=0;$i<6;$i++) {
print $row[$i]['champs1'];
print $row[$i]['champs2'];
print $row[$i]['champs3'];
}
biscuit a écrit:qui dit en passant est la même que la mienne...
Ca marche, car c'est ce que je fais dans ces cas là, mais ça m'aurais bien arrangé aussi d'avoir une solution directe en sqlbiscuit a écrit:Sinon tu fais un tableau multidimensions avec les 20 résultats de ta requête, tu mélange le tout aléatoirement, et tu prends les 6 premiers...
Ca serai pas trop lourd pour le serveur ?
biscuit a écrit:qui dit en passant est la même que la mienne...
Sinon tu fais un tableau multidimensions avec les 20 résultats de ta requête, tu mélange le tout aléatoirement, et tu prends les 6 premiers...
-edit:
un truc comme ça (pas testé) :
- Code: Tout sélectionner
$i = 0;
while ($row = mysql_fetch_assoc($sql)) {
$row[$i]['champs1'] = $row['champs1'];
$row[$i]['champs2'] = $row['champs2'];
$row[$i++]['champs3'] = $row['champs3'];
}
mysql_free_result($sql);
shuffle($row);
for ($i=0;$i<6;$i++) {
print $row[$i]['champs1'];
print $row[$i]['champs2'];
print $row[$i]['champs3'];
}
C'est peut-être pas super optimisé (quoique, je vois pas comment faire d'autre, si qq a une astuce je suis aussi preneur)... mais ça reste une toute petite boucle, je doute que cela soit ne serait-ce que visible sur les performance de ton serveur... J'utilise un peu près cette méthode pour faire une sorte de cache des requêtes sql pour lesquels je dois sortir des valeurs plusieurs fois sur la même page.
presque, car quand on supprime un enregistrement, le suivant va prendre la place libérée. Sauf si on compacte la base, mais bon, on ne le fait pas à chaque suppression.DrDroopy a écrit:Lorsque l'on fait un SELECT "par defaut", sans indications supplémentaires, les données sont classées des plus anciennes aux plus récentes ?
21 messages • Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Gestion des langues et des sessions en PHP / MySQL
- Passage à l'heure d'été/hiver sur un forum phpBB
- GoogleStats : analyse temps réel des visites de Google sur votre site
- Sortie officielle de GoogleStats v2.0 !
- AdSense Tracking : statistiques détaillées sur les clics AdSense
- Le WRInaute du moment
- Yahoo déclare-t-il la guerre aux référenceurs ?
- Keyword Search Engine : le choix des bons mots-clés
- Des interfaces de recherches spéciales sur Google
- Interview Wikio : transcript du chat WebRankInfo
- génération d'ID aléatoire en PHP ou MySQL
- [MySQL] tirage aléatoire via ORDER BY rand()
- Choix d' index pour une table mysql
- Question MySQL, choix TEXT ou VARCHAR et autre ? sur l'UTF-8
- Mysql : choix des types pour les champs entre :
- [PHP-MySQL] : argument is not a valid MySQL ressource
- positionnement aléatoire
- Image aléatoire
- bannière aléatoire
- variable aléatoire
- Affichage aleatoire
- fonction aléatoire
- barniere aleatoire
- contenu aleatoire
- publicité aléatoire
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités









le forum