Floriannn Posté 5 Octobre 2005 Posté 5 Octobre 2005 Bonjour, J'ai dans l'envie, pour mon site, de créer un petit script php qui regroupera mes news par date. Je veux aller les chercher dans ma base de données, puis les regrouper du style: Le 14/05/2005: -News 1 -News 2 au lieu de 14/05/2005: News 1 14/05/2005: News 2. J'ai fais un petit code ci dessous, mais je ne sais pas comment le finaliser pour faire ce que je voudrai faire. Pouvez-vous m'éclairer ? Je vous remercie d'avance. include("include/configuration.php");$retour = mysql_query("SELECT * FROM news GROUP BY timestamp2 ORDER BY timestamp2 DESC LIMIT 0,7");while ($donnees = mysql_fetch_array($retour)){echo "<b>";$donnees2[timestamp2] = date('d/m/Y', $donnees[timestamp2]);echo $donnees2[timestamp2]; echo "</b><br />"; $retour2 = mysql_query("SELECT id, timestamp, titre, timestamp2 FROM news WHERE timestamp2='".$donnees[timestamp2]."' ORDER BY timestamp2 DESC");while ($donnees2 = mysql_fetch_array($retour2)){echo "$donnees2[titre] <br />";}echo "<br />";}
hcplayer Posté 5 Octobre 2005 Posté 5 Octobre 2005 (modifié) en créant une varible bidon du genre $j hors de la boucle $j = timestamp2; //timestamp 2 du passage d'avant et dans la boucle tu testes si $j = timestamp2 -> affiche juste news si $j != timestamp2 -> affiche timestamp <br> news jy reviendrais si j'ai pas été clair, mais je vais au dodo pour ce soir. Modifié 5 Octobre 2005 par hcplayer
NorSeb Posté 6 Octobre 2005 Posté 6 Octobre 2005 Lorsque tu parcours tes résultats tu stocke la date en cours et tu la compare avec celle de chaque enregistrement... Si elle change, tu l'affiche et tu remplace la date en cours. Et ainsi de suite... Personne ne connait de sites d'apprentissage des algorithmes ??
Floriannn Posté 9 Octobre 2005 Auteur Posté 9 Octobre 2005 Bonjour, Désolé, mais peut être que pour vous, en expliquant comme ça, ça parait simple, mais je n'ai toujours pas compris. Pouvez-vous me donner un exemple s'il vous plait ? Merci d'avance.
smile Posté 9 Octobre 2005 Posté 9 Octobre 2005 Bon j'au lu rapidement en quelques secondes et je ne vois pas pourquoi tu fais 2 requetes, 1 seule par group by date devrait suffire ...
smile Posté 9 Octobre 2005 Posté 9 Octobre 2005 (modifié) ou alors tu fais ceci comme il est dit plus haut : $retour = mysql_query("SELECT * FROM news ORDER BY timestamp2 DESC LIMIT 0,7");while ($donnees = mysql_fetch_array($retour)){$dt=date('d/m/Y', $donnees[timestamp2]); if ($dt!="$reserve") { echo "$dt "; } echo"<br/> - $donnees[titre] "; $reserve="$dt";} A verifier mais ca doit fonctionner Edit car y'a plus simple, voila c'est mieux Modifié 9 Octobre 2005 par smile
Floriannn Posté 12 Octobre 2005 Auteur Posté 12 Octobre 2005 (modifié) Bonjour, Un grand merci smile, ça à l'air de focntionner, mais il y a un mais. En faite avec le "DESC LIMIT 0,7", je pensais à la limite des 7 dernières dates différentes, donc des 7 derniers jours. Mais il me prend les 7 dernières dates qu'elles soient les mêmes ou non. Comment faire pour qu'il me selectionne les 7 dernières dates différentes ? Modifié 12 Octobre 2005 par Floriannn
Portekoi Posté 12 Octobre 2005 Posté 12 Octobre 2005 SELECT DISTINCT chp1, chp2 FROM news ORDER BY timestamp2 DESC LIMIT 0,7 Evite le '*' . Si tu as la date seule, cela fonctionnera mais si tu as l'heure en plus, il faut que tu fasses un substring (je me souviens plus si ca existe sous mysql)
smile Posté 12 Octobre 2005 Posté 12 Octobre 2005 Je crois pas que le distinct va aller, puisqu'il va enlever les news qui ont la meme date. Sinon pour la date, il faut utliser un where et pas limit
smile Posté 12 Octobre 2005 Posté 12 Octobre 2005 Regarde ici les fonctions mysql avec les dates, sympa non http://dev.mysql.com/doc/mysql/fr/date-and...-functions.html
Portekoi Posté 12 Octobre 2005 Posté 12 Octobre 2005 Je crois pas que le distinct va aller, puisqu'il va enlever les news qui ont la meme date. Sinon pour la date, il faut utliser un where et pas limit Ben justement ' 7 dernières dates différentes', c'est ce qu'il veut Exemple pratique : id date txt 1 11/10/2005 News1 2 11/10/2005 News2 3 10/10/2005 News3 4 09/10/2005 News4 select distinct date, txt from news ORDER BY date DESC LIMIT 0,7 Sortira News1, News3, News4 Portekoi
smile Posté 12 Octobre 2005 Posté 12 Octobre 2005 Ben pas pigé ca moi, il veut les 7 dernières dates differentes avec toutes les news qui s'y rapportent : date 1 - news1 - news 2 date 2 -news3 - news 4 jusqu'a date 7, donc le distinct ne marche pas, ou alors j'en perd mon latin
Floriannn Posté 12 Octobre 2005 Auteur Posté 12 Octobre 2005 Oui, tu as bien compris Smile, mais à partir du moment où je supprime le "LIMIT 0,7" et je mets un "WHERE timestamp2", les news seront toujours bien placées, mais il n'y aura plus aucune limite, même pas en jour.
Floriannn Posté 12 Octobre 2005 Auteur Posté 12 Octobre 2005 Autant pour moi, j'avais mal compris <{POST_SNAPBACK}> Merci quand même.
smile Posté 12 Octobre 2005 Posté 12 Octobre 2005 Utilise une fonction que je t'es fait voir WHERE TO_DAYS(now())-TO_DAYS(champs_date) < 8 là t'auras les 7 derniers jours
Floriannn Posté 12 Octobre 2005 Auteur Posté 12 Octobre 2005 Cette fonCtion ne focntionne pas. Elle ne selectionne pas 7 jours et en plus, les jours qu'elle selectionne sont dans le désordre
smile Posté 12 Octobre 2005 Posté 12 Octobre 2005 c'est parce que ton champs est de type timestamp ou alors tu fais toi meme ta fonction, date du jour - 7 et cela de type timestamp et fias un order by pour que ca soit classé.
smile Posté 12 Octobre 2005 Posté 12 Octobre 2005 (modifié) Fonction date-7 : $d=time() - (7 * 24 * 60 * 60);$retour = mysql_query("SELECT * FROM news where timestamp2>='$d' ORDER BY timestamp2 DESC");while ($donnees = mysql_fetch_array($retour)){$dt=date('d/m/Y', $donnees[timestamp2]);if ($dt!="$reserve") { echo "$dt "; }echo"<br/> - $donnees[titre] "; $reserve="$dt";} voilà est ce que ca marche ? Modifié 12 Octobre 2005 par smile
Floriannn Posté 12 Octobre 2005 Auteur Posté 12 Octobre 2005 Il ne va me chercher que trois jours, mais si tu peux faire en sorte qu'il aille m'en cherche quatre ça serait bon. Merci.
smile Posté 12 Octobre 2005 Posté 12 Octobre 2005 Je t'ai donné le principe à toi maintenant de manipuler les dates, fais une petite recherche, tu trouveras
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant