$sql = mysql_query("select * from table order by md5(rand()) limit 1");
non, là ça trie par ordre aléatoire et ensuite ça en choisit les 20 derniers.boutdepapier a dit:$sql = "SELECT id, nom, chapo FROM fiche WHERE activite_actrice=1 ORDER BY rand() LIMIT (Le nombre total d'enreistrement total - 20),1";
SELECT * FROM matable where id in (select id FROM matable order by id desc limit 10)
order by rand() limit 0,5
$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'];
}
ben oui, même pas fait gaffe.biscuit a dit: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 sql :cry:biscuit a dit: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...
biscuit a dit: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:$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']; }
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 dit: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 ?
Leonick a dit:presque, car quand on supprime un enregistrement, le suivant va prendre la place libérée.
un id en autoincrement en index unique évidemmentDrDroopy a dit:Comment faire, avec une table d'articles, pour connaitre les derniers ajout de manière fiable ? Rajouter un champ servant de compteur ?
c'est ce que Biscuit avait proposé et que j'utilise sans problème, vu qu'il ne semble pas y avoir de solution plus optimiséee-kiwi a dit:si tu trouve vraiment pas, tu prend les 20 derniers, tu les met dans un tableau php, et tu va chercher les resultats avec un rand() php
L'autoincrement ne va pas réattribuer un id qui a été suppriméLeonick a dit:un id en autoincrement en index unique évidemment
non car la valeur max est conservée. Quand tu copies la structure d'une table, l'autoincrement est sauvé sos la forme AUTO_INCREMENT=valmax et donc, même si tu supprimes toutes les données, tu recommenceras à valmax et pas à 0DrDroopy a dit:L'autoincrement ne va pas réattribuer un id qui a été suppriméLeonick a dit:un id en autoincrement en index unique évidemment
(Leonick sur tous les fronts )