Page 1 sur 1

enregistrement les plus récents, aléatoires...

Posté : 27 mai 2008, 18:15
par docdamien
Salut,

j'ai une base de donnée avec une table pour stocker les jeux de mon site (http://jeuxenligne.freehostia.com/jeu/).
Voici le code:

Code : Tout sélectionner

CREATE TABLE `jeu` ( `ID` mediumint(9) NOT NULL auto_increment, `nom` varchar(50) NOT NULL default '', `but` text NOT NULL, `trucs` text NOT NULL, `larg` text NOT NULL, `haut` text NOT NULL, `date` date NOT NULL, //date d'ajout `categorie` enum('course','tir','action','reflexion','sport','arcade') NOT NULL default 'course', `adresseabs` varchar(250) NOT NULL default '', `aprouve` enum('0','1') default '0', UNIQUE KEY `ID` (`ID`), UNIQUE KEY `adresseabs` (`adresseabs`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
elle me sert à générer des pages dynamiques pour chaque jeu.

Fini pour l'introduction, passons aux choses sérieuses:

J'aimerais sélectionner 5 enregistrements de cette table selon ce critère: la date d'ajout (=> jeux les plus récents) et 5 autres aléatoirement.

Quelqu'un aurait t-il une idée de comment sa marche? Un truc genre

Code : Tout sélectionner

SELECT * FROM `jeu` WHERE date=récente LIMIT 0,5
et

Code : Tout sélectionner

SELECT * FROM `jeu` WHERE au hasard LIMIT 0,5
Pas mal de questions, je sais. Mais bon...

Merci d'avance

Posté : 27 mai 2008, 18:42
par dunbar
Salut,

Pour les derniers engistrement
ORDER BY xxxxx DESC 
Et pour ton affichage aléatoire regarde du coter de
array_rand
Peut-être :?: :wink:

Posté : 27 mai 2008, 20:09
par docdamien
Merci beaucoup pour les enregistrements aléatoires. =D> :agenouille:
Pour les derniers enregistrement
ORDER BY xxxxx DESC
J'ai pas compris par contre pour le tri par date. Pourrais tu préciser? :?:

Posté : 27 mai 2008, 20:22
par dunbar
Merci beaucoup pour les enregistrements aléatoires. =D> :agenouille:
Pour les derniers enregistrement
ORDER BY xxxxx DESC
J'ai pas compris par contre pour le tri par date. Pourrais tu préciser? :?:
J'ai lu trop vite j'ai mis cela pour les dernier enregistrement sorry :oops:

Maintenant concernant une recher par date essaye de jouer avec ces fonction
WHERE YEAR(date) = YEAR(CURDATE()) AND MONTH(date) = MONTH(CURDATE())

Posté : 27 mai 2008, 22:06
par AB
Sinon pour les plus récents, si j'ai bien compris les commentaires de ta table, les plus récents correspondent à ceux qui sont les derniers ajoutés. En même temps tu as une colonne ID auto incrémentée donc l'idée première de dumbar devrait fonctionner

Code : Tout sélectionner

SELECT * FROM `jeu` ORDER BY ID DESC LIMIT 0,5

Posté : 27 mai 2008, 22:25
par AB
Concernant la fonction array_rand(), pour l'utiliser tu devras faire un tableau correspondant à tes enregistrements donc faire au préalable une requête sur tous tes enregistrements et lister ce résultat dans ton tableau.

Si tu n'a pas besoin de cette requête complète (et donc du tableau complet) tu peux simplement faire le tri aléatoire au niveau de ta requête
SELECT * FROM jeu ORDER BY RAND() LIMIT 5

Posté : 28 mai 2008, 20:38
par docdamien
Merci, vous êtes des dieux

:agenouille: :boire4: \:D/