Aller au contenu

Sujets conseillés

Posté (modifié)

Bonjour,

J'ai un problème avec cette requête :

$req="SELECT nom CONCAT(  IF(DAYOFMONTH(now())<10,CONCAT('0',DAYOFMONTH(date)), DAYOFMONTH(date)),'-',IF(MONTH(date)<10,CONCAT('0',MONTH(date)),MONTH(date)) , '-',YEAR(date) )date FROM liens ORDER BY date DESC LIMIT 0,5"

J'ai donc un champ datetime où les dates sont stockées ainsi :

2005-08-27 00:00:00 .

Le but de cette requête est donc d'obtenir l'affichage :27-08-2005

Le fait est que cela fonctionne mais si jamais le jour n'a qu'un chiffre, et bien l'affichage est alors 8-08-2005, par exemple, sans le premier zero donc.

De plus de ce fait mon ORDER BY date DESC ne fonctionne plus et la date qui n'a qu'un chiffre au jour s'affiche tout en haut même si elle est plus ancienne alors que si le jour a deux chiffres, cela fonctionne normalement.

qu'est ce que je dois faire SVP ?

J'ai aussi une autre question : Pourquoi si j'enlève le (now) du début de la requête et que je le remplace par (date) qui est le nom du champ alors j'ai une erreur mysql_fetch-array is not valid etc... ?

Modifié par recherche_webmaster
Posté

Bonsoir,

tu peux faire ceci directement de cette manière :

$req="SELECT nom, DATE_FORMAT(date,"%d-%m-%Y") FROM liens ORDER BY date DESC LIMIT 0,5"

Et pour ta deuxième question je ne vois pas vraiement pourquoi au premier abord... lerreur provient du fait que ta requête n'a sûrement pas pu être exécutée. Peut être as-tu laissé traîner des parenthèses en trop en elevant now ... tu peux récupérer lêrreur mySQL en utilisant ceci après la requête dans ton fichier PHP :

echo mysql_errno() . ": " . mysql_error();

Posté

Bonsoir TheRec,

Je viens juste d'essayer ta requête, comme cela :

$req="SELECT nom, DATE_FORMAT(date,'%d-%m-%Y') FROM liens ORDER BY date DESC LIMIT 0,5"

J'ai remplacé simplement les apostrophes par des quotes.

ça ne me déclenche pas de message d'erreur mais les dates ne s'affichent plus du tout, les cases du tableau sont vides.

Posté (modifié)

Le message d'erreur nous aiderait à te répondre sûrement, et si tu utilises la ligne en PHP que je t'ai indiquée plus haut cela nous donnera encore plus d'informations.

Merci d'avance.

PS: Mea culpa pour les guillemets, j'ai écris la ligne sans la tester. Tu as eu raison de les remplacer par des apostrophes...

Modifié par TheRec
Posté (modifié)

Bien le problème c'est qu'il n'y a pas d'erreur à proprement parler, simplement rien ne s'affiche.

Par contre si je met des guillements j'obtiens

Parse error: parse error, unexpected '%' in /home/dicopsy/scripts/centre-accueil.php on line 26

Je vais essayer de placer un 'or die' après le mysql_query pour voir, quand même.

edit, bon bah vu ton edit, ma réponse n'était pas utile lol.

Bon je regarde avec le or die

Modifié par recherche_webmaster
Posté (modifié)

Oui c'est ma faute ...

il faut donner un nom à l'expression "calculée" :

$req="SELECT nom, DATE_FORMAT(date,'%d-%m-%Y') AS date_fr FROM liens ORDER BY date DESC LIMIT 0,5"

Attention le champ s'appelle dans mon exemple "date_fr" ensuite... le champ "date" n'est pas récupéré dans cette requête, il est juste utilisé pour formater la date comme tu le souhaites.

Tu peux utiliser "AS date", mais dans ce cas utilise "ORDER BY liens.date" ... j'ai utilisé date_fr pour que tu voies vien que c'est un alias...

Désolé, si j'avais testé directement on aurait gagné du temps..comme quoi des fois réflechir avant de parler c'est pas mal hein ;)

Modifié par TheRec

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...