recherche_webmaster Posté 27 Août 2005 Posté 27 Août 2005 (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é 27 Août 2005 par recherche_webmaster
TheRec Posté 27 Août 2005 Posté 27 Août 2005 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();
recherche_webmaster Posté 27 Août 2005 Auteur Posté 27 Août 2005 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.
TheRec Posté 27 Août 2005 Posté 27 Août 2005 (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é 27 Août 2005 par TheRec
recherche_webmaster Posté 27 Août 2005 Auteur Posté 27 Août 2005 (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é 27 Août 2005 par recherche_webmaster
recherche_webmaster Posté 27 Août 2005 Auteur Posté 27 Août 2005 Comme j'ai dit il n'y a pas d'erreur, je viens de mettre un or die après mysql_query, il n'a aucun message, pas de bug. Simplement la case du tableau qui affiche normalement la date est vide.
TheRec Posté 27 Août 2005 Posté 27 Août 2005 (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é 27 Août 2005 par TheRec
recherche_webmaster Posté 27 Août 2005 Auteur Posté 27 Août 2005 T'es balaise mec, ça a l'air de fonctionner ! Attend je vais tester un peu plus quand même Si je reviens pas à la charge c'est que c'est bon Merci
TheRec Posté 27 Août 2005 Posté 27 Août 2005 De rien, pas de problème. Si tu veux plus d'informations sur les fonctions pour les champs de dates (pas le fruit hein, la référence temporelle ) de mySQL tu as cette page du manuel qui est complète (tu y retrouve les spécificateurs %Y, %d, ...) et en plus en français (que demande la peuple) : http://dev.mysql.com/doc/mysql/fr/date-and...-functions.html
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant