requette sur une date (mysql)

Eléphanteau du PHP | 10 Messages

10 oct. 2005, 15:01

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

ViPHP
pjl
ViPHP | 2119 Messages

10 oct. 2005, 15:07

as tu regardé la doc de MySQL avec les fonctions concernant les dates ?
http://www.nexen.net/docs/mysql/annotee ... ?lien=date

Eléphanteau du PHP | 10 Messages

11 oct. 2005, 10:41

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 oct. 2005, 10:51

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'];
}
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éphanteau du PHP | 10 Messages

11 oct. 2005, 11:02

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!!!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 oct. 2005, 11:04

Est-ce que tu as essayé d'afficher ta requete génerer et de la tester directement avec PHPMyAdmin ?
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

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

11 oct. 2005, 11:21

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.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 10 Messages

11 oct. 2005, 14:23

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