Aller au contenu

Je coince avec les dates


Sujets conseillés

Posté (modifié)

ce n'est pas une question de sécurité mais de méthodologie

par exemple ça te permettrai de voir que $res[date] ne peut rien renvoyer et que c'est ça qui doit te créer une erreur

voici la bonne requête :

$req="SELECT mot, specialite, CONCAT(DAYOFMONTH(date),'-', MONTH(date) ,'-',YEAR(date)) madate, site FROM maTable ORDER BY DATE(date) DESC LIMIT 0,5"

et pour récupérer la date, à ce moment tu fais :

$res[madate]

Modifié par dread
Posté (modifié)

Bon je viens de remplacer DAY par DAYOFMONTH

c'est pareil.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource on line 22

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource on line 39

Modifié par recherche_webmaster
Posté

Bonjour !

En php, ça serait facile :

str_pad($variable, 2, "0", STR_PAD_LEFT);

Avec la valeur "5", il t'afficherait "05"...

Mais je ne connais pas son équivalent en SQL :wacko:

Il serait bête de repasser par un explode en PHP pour bien t'afficher ta date tout de même... Donc désolé je peux pas t'aider plus ;)

Posté (modifié)

$req="SELECT mot, specialite, CONCAT(  IF(DAYOFMONTH(now())<10,CONCAT('0',DAYOFMONTH(now())), DAYOFMONTH(now())),'-',IF(MONTH(now())<10,CONCAT('0',MONTH(now())),MONTH(now())) , '-',YEAR(date) ) madate, site FROM maTable ORDER BY DATE(date) DESC LIMIT 0,5"

Ok ca devient un peu usine a gaz :o)

Enfin ceci dit avec une expression reguliere, on aurait transformer la date correctement avec l'ajout des '0' supplémentaire en une ligne lol

Modifié par petit-ourson
Posté (modifié)

ok mais là j'ai une date comme ça maintenant :

20-08-0

au lieu de 20-08-2005

ou 20-8-2005 comme avant cette solution.

edit: non c'est bon, je crois que c'est parce que j'ai une date par défaut à 00-00-0000 dans la base.

Merci !

Vous l'avez appris comment le language sql ? parce que je vois pas vraiment de cours pour ça?

Modifié par recherche_webmaster
Posté
quand même c'est mal fichu ces histoire de date avec mysql.

les zeros s'affichent pas, les formats doivent être bidouillés etc...

<{POST_SNAPBACK}>

Mysql est une base de données, elle est faite pour stocker des données, pas forcément pour manipuler des données.

Tant que ca reste simple, tu peux le faire en sql, sinon le mieux est de le faire en php. Ou plus exactement, tu aurais dû prendre un autre format de date, histoire de ne pas te casser la tete.

Le format que tu as pris est très bien, lorsqu'il s'agit uniquement d'afficher la date d'un champ.

Lorsque tu veux te lancer dans des manipulations, ca devient assez vite usine à gaz, parce que justement ca n'est pas concu pour ca.

Lorsque tu as affaire à des dates qu'il te faudra manipuler, trier, etc.., tu devrais systématiquement choisir un format 'timestamp'. Ce format traduit une date en nombre, et permet toutes les manipulations que l'on veut, très facilement.

De plus, son affichage/utilisation/manipulation en php est assez triviale, une fois que l'on a 'compris' le truc, et une fois que l'on connait les 2-3 fonctions basiques.

Bref, la prochaine fois, te fais pas avoir, passes tes dates en 'timestamp'. ;)

Posté

ORDER marche très bien avec les champs date et datetime, jusqu'à preuve du contraire... J'utilise ORDER sur tous mes champs de date et de datetime sans aucun souci ! ;)

Posté

Ta requête doit etre erronée ... Je (on) donne des pistes, pas forcément une réponse complête. A toi après d'adapter à ton travail.

Enfin j'ai l'impression que cela tourne un peu en rond comme sur un autre post. Il est probable également que je n'ai pas compris le but d'un forum.

En fait j'ai l'impression que tu ne comprends pas trop ce que tu fais donc je te conseillerai (enfin ce ne sont que des conseils venant de moi) de te documenter sur les différentes pistes que l'on a donné afin d'avancer et de pouvoir réutiliser cela les prochaines fois.

(désolé)

Veuillez vous connecter pour commenter

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



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