Est-il possible de faire une requete suivant la date du jour

Eléphant du PHP | 113 Messages

29 mars 2006, 08:05

Bonjour,
Je voudrais afficher la citation du jour. Les citations sont tirées d'un bdd.
Est-ce possible d'afficher une nouvelle tous les jours par une condition ?

En ce moment, j'en ai une nouvelle à chaque actualisation de la page avec ça :

$reponse = mysql_query("SELECT citateurs_celebres.nom, citateurs_celebres.prenom, citations_celebres.citation FROM citateurs_celebres LEFT JOIN citations_celebres ON citateurs_celebres.id = citations_celebres.numcitateur ORDER BY rand() LIMIT 0, 1"); 
Merci.

Mammouth du PHP | 1776 Messages

29 mars 2006, 08:42

tu mets un clause WHERE dans ta requête en comparant ton champ date avec la date du jour :wink:

Eléphant du PHP | 113 Messages

29 mars 2006, 10:20

Ah! faut un champ date dans la base ? :?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 mars 2006, 10:31

Comment est-ce que tu définies que la citation est du jour ou non ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 113 Messages

29 mars 2006, 11:19

Actuellement ma requete appelle une citation au hasard dans la bdd.
Je voudrais rajouter une condition (si c'est possible), par ex, on est le 29 et on garde la même citation jusqu'au passage au 30 et ainsi de suite.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 mars 2006, 11:20

ça, j'ai compris. Ce que je voudrais savoir, c'est comment est-ce que tu sais, quand tu regardes les citations, quelle citation est de quel jour ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 312 Messages

29 mars 2006, 11:57

Sur ton serveur, tu génères un petit fichier xml contenant la date du jour et l'identifiant de la citation.

Avant de balancer ta requête pour récupérer ta citation, tu regardes ce fichier xml et tu compares la date signalée avec la date du jour.
Si c'est la même : tu fais un select sur ta table de citation avec l'ID du fichier XML (voir tu peux même stocker dans le XML la citation, ça t'évite de faire la requête).
Si c'est pas la même, tu changes la date dans le fichier XML pour mettre la date du jour, tu fais ton select pour avoir une citation aléatoire et tu enregistres son ID dans ton fichier xml.

Edit : et pour éviter qu'une citation se répète avant que toutes les autres ne soient passées, je pense que l'idéal est de mettre un champ booleen (par exemple "lue") dans la table.
Quand on choisi au hasard une citation, on met une clause "lue=false" pour n'avoir que celles qui n'ont jamais été lues et on met le champ "lue" à vrai pour celle qu'on choisi.

Si le résultat de la requête est vide, alors on met à jour la table en remettant le champ "lue" à faux pour toutes les citations.
Modifié en dernier par Hermès le 29 mars 2006, 12:09, modifié 2 fois.

Eléphant du PHP | 113 Messages

29 mars 2006, 12:03

Je sui pas sûr de bien comprendre ta question Zeus.
Mais peu importe si c'est la citation a ou b qui s'affiche aujourd'hui (je n'ai pas de préférence). je veux "simplement" que ce soit l'autre demain.
Même si la fonction au hasard du code bug un peu, c'est à dire si elle répète une citation avant de les avoir toutes passées, c'est pas bien grave.

Mais, à te lire, j'ai l'impression qu'il faut que j"associe chaque citation à un jour du mois.