Ordonner les résultats d'une requete

Résolu/Fermé
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 - 13 janv. 2010 à 16:18
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 - 15 janv. 2010 à 09:05
Bonjour,

J'ai une table agenda (id, evenement, date (en timestamp))

Je souhaiterais afficher le résultat comme ceci :

Janvier 2010:
- le 8: Fete de la carotte
- le 15: Fete de la biere

Fevrier 2010:
- le 1: Fete du Champomie (pas e pub lol)

Is it possible s'il vous please ?
A voir également:

17 réponses

Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
13 janv. 2010 à 17:10
Oui php ! Je ne sais ps trop par ou commencer, avec un format timestamp je peux difficilement faire un group by ou order by... ?
1
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
13 janv. 2010 à 16:56
sa se fais à parti de la ou tu va afficher les résultat de ta requête, déjà commence par construire ta requête et ensuite tout dépend du langage que tu veut utilisé par la suite,
je suppose php?
0
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
13 janv. 2010 à 17:13
non pas besoin mais tu sera obligé de retraité les données une par une dans ton code php
0
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
13 janv. 2010 à 17:19
Tu peux me donner un exemple rapidement, je ne vois pas ce que tu veux dire...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
13 janv. 2010 à 17:30
$sql="SELECT evenement, date FROM agenda WHERE date=ton_mois";

et dans php tu récupére ta données
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
while ($mois = mysql_fetch_array($req)) { 
echo" le ".$mois['nom_de_mois']." fete du ".$mois['evenement']."
}

voilà de tête de ce que je me rappel creuse dans ce sens
0
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 39
14 janv. 2010 à 08:39
n'oublie pas de passé ton sujet en résolu...
0
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
14 janv. 2010 à 09:18
Sauf si ça n'est pas vraiment le cas... Ta proposition ne me permet pas vraiment d'organiser mes résultats... Comment je peux faire dat-e = ton mois avec une date en timestamp ? Avec un between ?

Et je peux pas faire ça :
echo 'le mois + l'année';
echo '<hr>';
echo 'la liste des fêtes du mois de cette forme: le jour : la fete';

Comme ceci :
Février 2010:
-------------------------- (hr)
le 6 : fete de la pluie
le 12 : fete de la neige...
0
Bonjour

La fonction getdate
https://www.php.net/manual/fr/function.getdate.php
te permet de décomposer ton timestamp en jour, mois et année.
Si tu as fait ton SELECT avec un ORDER BY sur le timestamp, c'est déjà trié, tu n'as plus qu'une simple boucle à faire avec comme seule subtilité la détection de changement de mois pour générer l'en-tête de chaque mois
0
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
14 janv. 2010 à 09:52
Je vois à peux prêt ce que tu veux dire, mais je n'ai pas trop d'idée concernant cette subtilité... Pourrais-tu développer rapidement cette idée. Pas besoin de te casser trop la tête, mais juste le principe au moins... Je mettrai le résultat quand je l'aurai trouvé pour ceux qui suivront... Merci le père.
0
Avant ton while, tu initialises deux variables $mois_courant=''; et $annee_courante='';

Pour chaque timestamp rendu par ta requête
tu le décomposes en jour, mois, année avec getdate
Tu compares le mois et l'année avec ceux mémorisés dans $mois_courant et $annee_courante
Si il y a une différence (ce qui sera vrai au 1er passage) :
tu affiche l'en-tête du mois ( le mois et ton <hr /> )
tu mémorises les nouveaux mois et année dans $mois_courant et $annee_courante
finsi
tu affiches le jour et la manifestation
finpour
0
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
14 janv. 2010 à 14:44
Je vois pas bien comment je peux regrouper les résultats maintenant ?

Je dois faire plusieurs requetes ?

Comment se présenterait le while ?
0
Je vois pas bien comment je peux regrouper les résultats maintenant ?
Quels résultats veux-tu regrouper ? Si tu parles de les regrouper par mois, c'est justement à ça que répond l'algorithme du message 10

Comment se présenterait le while ?
C'est le "pour .. finpour" du message 10, en paratique en php il ressemblera à ça :
$resultat = mysql_query ("SELECT * from matable ORDER BY champtimestamp") or die (mysql_error());

while ($donnes=mysql_fetch_array($resultat)) {
...
}
0
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
14 janv. 2010 à 16:47
Oui mais dans ce cas, je ne pourrais pas faire autrement que d'afficher :

Janvier 2010:
le 6 : Epiphanie

Janvier 2010:
le7 : fête du moment ou les rois mages ses sont cassés de l'étable...

Je ne pourrais pas les regrouper comme suit :

Janvier 2010:
le 6 : ...
le 7 : ...
0
Justement si
C'est ça le rôle de l'algorithme que je t'ai donné message 10. Il est pourtant simple à comprendre ! Tu n'affiches le mois que si tu changes de mois, c'est tout.
0
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
14 janv. 2010 à 17:32
Désolé d'avoir paru lourd mais ce n'est pas si évident... J'ai quand même bien réfléchis (chose qui là, m'a semblée dure lol)...

Alors voici ma proposition pour les suivants. Le code peut sembler long et beaucoup vont le critiquer parce qu'il y a plus symple sans doute, mais tant pis, il n'est jamais trop tard pour proposer une amélioration.

Merci le père...

Code :
						$manifestations = mysql_query ("SELECT * FROM manifestations ORDER BY date") or die (mysql_error());
						
						$mois_courant = '';
						$annee_courante = '';
						
						while ($manifestation = mysql_fetch_array ($manifestations)) {
							if ($annee_courante != date('Y',$manifestation['manifestation_date']))  {
								$annee_courante = date('Y',$manifestation['manifestation_date']);
								echo '<p class="annee">'.$annee_courante.' :</span>';
							}
							if ($mois_courant != date('m',$manifestation['manifestation_date'])) {
								require('mois.php'); // Un switch sur le resultat date('m',resultat de la requete en timestpamp) qui permet de donner le nom des mois : case '01': $mois = janvier; break; case '02': ...
								$mois_courant = date('m',$manifestation['manifestation_date']);
								echo '<p class="mois">'.$mois.' ('.date('m',$manifestation['manifestation_date']).') :</span>';
							}
							echo '<p class="evenement">
								<span class="jour">Le '.date('d',$manifestation['manifestation_date']).' : </span>
								<span class="evenement">'.$manifestation['manifestation_manifestation'].' </span>
								</p>';
						}


Et ca marche, c'est l'essentiel !
0
il y a plus symple sans doute
Oui, écrire "simple" avec un i au lieu d'un y par exemple ^^
Autre petit détail : quand tu changes d'année, efface le mois courant. Sinon, si tu as une manifestation en janvier 2009 et la suivante en janvier 2010 (j'espère que tu en as plus que ça) après avoir affiché 2010 tu ne ré-afficherais pas janvier parce que ce serait déjà le mois courant.
0
Fetide68 Messages postés 746 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 16 septembre 2024 32
15 janv. 2010 à 09:05
Symple c'est un mélange entre simple et sympa... Non je plaisante, merci de me le faire remarqué... et merci encore pour toute ton aide... Je deviendrai bientôt un presque pro du PHP...

Bonne année !
0