requête sql ( sélection aléatoire )

Répondre
Michael_Lee
Michael_Lee
Déconnecté
Bonjour ...

Je dispose d'une table avec le shémat suivant :
  1. CREATE TABLE news (
  2. id_news integer auto_increment not null,
  3. titre_news varchar (50) not null,
  4. news longtext not null,
  5. primary key (id_news)
  6. )type=myisam; 


La table contient par exemple 15 enregistrements ( donc 15 lignes selon mysql_fetch_array() et mysql_num_rows() ) et je souhaiterai afficher les 5 dernières lignes ajoutés mais dans un ordre aléatoire avec une requete sql.

j'ai essayé avec celle-ci :

  1. SELECT * FROM news ORDER BY id_news DESC LIMIT 5, RAND() 


mais je présume bien que c'est une erreur de syntaxe de ma requete lorsque je la lance avec PHP.

Comment alors faire pour retirer les 5 dernières lignes de ma table et les afficher aléatoirement sur mon résultat HTML ?

Merci pour votre aide ...
Keika
Keika
Déconnecté
Le PHP --> C'est dur !
je pense utiliser rand(), mais la fonction PHP.

Je la mettrais dans la boucle d'affichage CEPENDANT, rand peut resortir les meme nombres a la suite, ca lui fait pas peur, donc je suggere la creation d'une SESSION qui stock les nombres donnes par rand et qui les compare avec le nouveau, s'il n'est pas dans la SESSION on l'y ajoute et laisse le script s'effectuer, s'il y est, on recharge le rand jusqu'a ce qu'il sorte le bon nombre...
Mais ca me parait un peu degueu comme technique...
Sammuel
Sammuel
Déconnecté
Je ne sais pas si ca va fonctionner, mais comme cela, ça donne quoi :

  1. SELECT * FROM news
  2. ORDER BY RAND() DESC
  3. LIMIT 5 


smiley
Michael_Lee
Michael_Lee
Déconnecté
non, ça affiche une sélection aléatoire avec une limite de 5 id maximum. mais pas les 5 derniers enregistrements ...
Keika
Keika
Déconnecté
Le PHP --> C'est dur !
ORDER BY date DESC RAND() ?
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
(Keika) Non, le order est fait avant la clause limit. En conséquence, le tri se fait sur l'ensemble des tuples sélectionnés.

Ce que veut faire (Michael_Lee) n'est pas possible directement.

Au pire, et si on a pas peur de faire des trucs ignobles :

  1. <?php
  2. select * from 
  3.    ( select * from news 
  4.        order by id asc 
  5.       limit 5 
  6.    ) order by rand() ;  
  7. ?> 
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Php - Breizh Blog