Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Web » PHP / ASP » Probleme avec les dates

sasuke83
ProgBoarder
Citer Windows XP Firefox 2 - Posté le 29/03/2007 à 23:00
Bonjour à tous ! (sourire)

J'ai un problème de php, pour l'affichage de mes dates. :euh:

En gros, quoi que je mette comme type de champ (varchar,int,char,date....), la date que j'ai saisie dans mon formulaire, ne s'affiche pas correctement sur mes pages. :colere2:

C'est soit sous forme "XXXX-XX-XX" soit je n'est que les 2 premiers nombre de ma date.

Je sais qu'il existe de nombreuses façons de prendre la date de forme "xxxxxx-xx-xx" et de l'afficher de façon différente, mais je crois que celà implique de devoir saisir la date sous cette forme (xxxx-xx-xx).


Ce que je tien a faire, c'est saisir la date, dans mon formulaire, sous cette forme:
29/03/07, et je veux que la date s'affiche avec la même forme.

Mais je n'est pas trouvé de 'type' de champ qui supporte cette forme.

Pouvez vous m'aider ?

Merci (sourire)

Edité par sasuke83 ( 29/03/2007 23:00:58 )
neliger
Webmaster
RemonterCiter Linux Firefox 2 - Posté le 29/03/2007 à 23:13
Si tu parles de tables MySQL, tu peux stocker ce type de date dans un varchar(8), elle sera simplement prise comme une chaine de caractères et non comme une date.
Computaid SPRL - Conception - Développement - Infogérance : http://www.computaid.be
eTigris - Hébergement mutualisé - Serveurs dédiés : http://www.etigris.com
Mazzu
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 30/03/2007 à 10:42
MySQL dispose aussi d'un type date ( http://dev.mysql.com/doc/refman/4.1/en/datetime.html ) qui te permettrait de trié dessus ou faire plein d'autres opérations que tu aurais du mal à faire avec un varchar

Ce type date s'utilise de la façon suivante, quand tu veux faire un UPDATE par exemple :

UPDATE nom_de_table_qui_va_bien
SET date_creation = 'YYYYMMDD'
WHERE condition = qui_va_bien


Où les 4 Y sont les 4 chiffres de l'année (year), les 2 M les 2 chiffres du mois (month) et les 2 D les 2 chiffre du jour (day). Il est important de bien garder ce format YYYYMMDD sinon tu risques d'avoir des surprises.
Note bien aussi que si tu veux lui donner la date en cours, MySQL a une fonction qui la retourne : CURDATE(). De tel sorte que tu puisse faire un " SET date_creation = CURDATE() "

Ensuite pour récupérer la date, il faut faire un requête un peu comme ça :

SELECT DATE_FORMAT(date_creation, '%d/%m/%y')
FROM table_qui_va_bien
WHERE ...


La fonction DATE_FORMAT() ( http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-format ) permet de récupérer une date sous la forme d'une chaîne de caractère au format que tu le veux.
Dans l'exemple, le %d sera remplacer par le jour sur 2 chiffres, le %m par le mois sur 2 chiffres et le %y par les 2 derniers chiffres de l'année. Ensuite, si tu veux une année sur 4 chiffres, il suffit de remplacer le %y pas %Y


Tout ça c'est purement du côté de la base de données que ça se passe.
Côté PHP maintenant, avec l'exemple de SELECT que je t'ai donnée, tu récupère une chaîne de caractère que tu peux afficher tel quel.

Edité par Mazzu ( 30/03/2007 10:45:06 )
zuzuf
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 30/03/2007 à 13:03
sous PHP:
date("le format que tu veux", strtotime( $la_date ) )
et voilà (sourire)

avec par exemple "le format que tu veux" = "j/m/y" devrait donner qqch du genre 30/03/07 ( regarde la doc sur la fonction date pour plus de détails )
Linux a un noyau, windows un pepin
sasuke83
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 30/03/2007 à 18:01
Merci pour vos réponses !

mais je ne m'en sort toujours pas... lol

merci pour tes explication MAZZU, mais c'est un peu trop compliqué, et je ne veut pas vraiment changer quelque chose dans la requete SQL ...

Merci aussi zuzuf, mais je ne comprend pas tes explications (je débute désolé), c'est une requete sql que tu a marqué ?

Le style de solution que je voulais c'est celle de NELIGER, mais j'ai tester, et un varchar(8) ne me garde pas les "0"

exemple "03/03/07" m'affiche "3/3/7", et dans phpmyadmin, on voit qu'il n'a pas stocker les "0".

J'ai pousser le vice en créant 3 champs (jour,mois,annee), avec un menu deroulant pour chaque.

Et bien que je mette comme type de champ TEXT,VARCHAR,INT etc... ça ne me stock jamais le "0"

IL N'Y A AUCUN MOYEN DE STOCKER UN 0 DANS UN CHAMPS PHPMYADMIN (question)
qu'il me garde "03" comme valeur ... et pas que le "3"


MERCI (exclamation)!!!!
neamar
Modérateur
RemonterCiter Windows XP Firefox 2 - Posté le 30/03/2007 à 18:08
Pourquoi ne pas utiliser un type tinytext ?

Et plus simple encore pourquoi pas un timestamp ?
Voilà qui pourra sûrement aider :
http://www.siteduzero.com/tuto-3-186-1-les-dates.html
Before you criticize someone, you should walk a mile in their shoes. That way when you criticize them, you are a mile away from them and you have their shoes.

http://neamar.free.fr
Ou le portail général : http://neamar.fr
zuzuf
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 30/03/2007 à 19:32
le code que j'ai tapé c'est du PHP donc normalement pas de modif de requête SQL, il s'agit seulement de réordonner les valeurs à afficher que tu auras stocké dans ta base de données au format DATE (c'est très rapide et efficace ), j'utilise ça pour faire des calendriers.
Linux a un noyau, windows un pepin
sasuke83
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 02/04/2007 à 11:01
Merci pour vos reponses,

ça semble marcher avec un tinytext, mais pourquoi je n'y arrivais pas avec un text normal ?

Je vais voir avec timestamp, le tuto reprend aussi ta methode zuzuf (clein d'oeil)

Mais qu'elle prise de tete pour stocker un "0" ....
du coup j'ai le même problème pour l'heure lol (j'avais pas fait attention).

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,068 s - Crédits - Stats
1 connecté