Page 1 sur 1

requette sur une date (mysql)

Posté : 10 oct. 2005, 15:01
par mister-yokyok
Bonjour à tous

Débutant php/msql, je suis chargé de concevoir un système de publication web d'actualités doublé d'un espace d'archivage consultable.

Pour ce qui est de la mécanique d'insertion des actualités en base et leur basculement en archive - aucun probleme. Par contre, en ce qui concerne la consultation des dites archives, je me heurte à un probleme dont je n'arrive pas à perçevoir la solution.

En effet, il m'est demandé que ces archives d'actualités soient consultables en fonction du mois et de l'année auxquelles les news ont été postée. Sur çe, j'opte donc pour un affichage d'une liste déroulante dans laquelle les balises "select" sont alimentées par une requete de type "select distinct" (pour eviter les doublons).

PB: J'obtient un affichage avec doublons car je ne parviens pas à écrire une requete qui ne tienne pas compte des jours inscrits sur ma date en base. J'aimerai en fait que mon "select distinct" ne cible que les mois et années de ma date en base...

Quelqun aurait-il une piste pour m'eclairer?

Merci d'avance

Posté : 10 oct. 2005, 15:07
par pjl
as tu regardé la doc de MySQL avec les fonctions concernant les dates ?
http://www.nexen.net/docs/mysql/annotee ... ?lien=date

Posté : 11 oct. 2005, 10:41
par mister-yokyok
je pense que je brule...

En base, ma date (dénommée 'dateActualites') est de format 'date' (YYYY MM DD). J'ai crée une requete de ce type:

Code : Tout sélectionner

$requete2 = mysql_query("select date_format('dateActualites','%M %y') from actualites order by date_format('dateActualites','%M %y') desc") or die ("requête d'affichage incorrecte");
Toutefois, je ne peux evaluer cette requete car j'obtient un affichage 'null'. En fait, je ne sais pas comment proceder pour afficher un tel résultat.

Généralement, je procede comme il suit pour afficher:

Code : Tout sélectionner

while ($donnees2=mysql_fetch_array($requete2)) { echo $donnees2['dateActualites']; }
Ne pensant pas que le probleme vienne de ma requete (peut etre à tort) je me demande quel est le parametre que je dois apeller dans mon echo...
En effet, j'apelle dateActualites qui ne me renvoi que trois lignes vides et un echo de dateActualites formaté avec date_format me provoque une erreur fatale...

Suis-je sur une piste ou non?

Merci d'avance

Posté : 11 oct. 2005, 10:51
par zeus
Il faut que tu donnes un alias à ta colonne de manière à pouvoir l'appeller

Code : Tout sélectionner

$requete2 = mysql_query("select date_format('dateActualites','%M %y') as date_formate from actualites order by date_format('dateActualites','%M %y') desc") or die ("requête d'affichage incorrecte");
while ($donnees2=mysql_fetch_array($requete2))
{
echo $donnees2['date_formate'];
}

Posté : 11 oct. 2005, 11:02
par mister-yokyok
tjrs aucun affichage :cry: ...

Je ne désèspere pas... Le probleme doit venir de ma date en base.
Avec le recul, je me dit que peut-etre c'est elle qui cloche étant donné que j'ai bien un echo complet des lignes de ma base (3 lignes) mais que celles-ci sont nulles.

Le pb doit donc être place en amont car si ma requete est mal ancrée elle ne peut que rien produire.

Je vous tiens informé... Merci!!!

Posté : 11 oct. 2005, 11:04
par zeus
Est-ce que tu as essayé d'afficher ta requete génerer et de la tester directement avec PHPMyAdmin ?

Posté : 11 oct. 2005, 11:21
par sadeq
ta requête :
$requete2 = mysql_query("select date_format('dateActualites','%M %y') as date_formate from actualites order by date_format('dateActualites','%M %y') desc") or die ("requête d'affichage incorrecte");
il faut enlever les quotes qui entourent le champ dateActualites car c'est un champ et non une chaine.

Posté : 11 oct. 2005, 14:23
par mister-yokyok
PB RESOLU!!!! :D

Je n'avais pas perçu cette subtilité... Comme quoi, en débutant, on apprend plein de choses...

Merci à tous pour votre aide