Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/10/2011, 10h41   #1
Membre à l'essai
 
Inscription : septembre 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 140
Points : 23
Points : 23
Par défaut rentrer une date "en français" dans un form

Bonjour !

J'ai lu dans le forum les propos de CinéPhil qui disait que c'était une mauvaise idée d'enregistrer une date au format français dans une BDD.... et alors je ne sais pas trop quoi faire...
Certains de mes visiteurs se servent très souvent de formulaires de mon site et doivent y rentrer des dates sous le format AAAA/MM/JJ et j'ai souvent des récriminations, ils se plantent, etc.
Si la date ne rentre pas comme ça, elle ne s'affiche pas correctement (format DATE dans la bdd), et j'ai besoin de garder ce format pour l'affichage de listes liées à la date du jour... N'y a -t-il pas de solutions "légères" pour résoudre ce problème ?
Merci de votre réponse !
evevev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 12h29   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Ben tu laisse la libre saisie de la date à l'utilisateur et ton programme transforme la date pour la mettre au bon format SQL.

Autre solution : tu utilises un calendrier en Javascript comme ça tu es sûr d'avoir toujours le même format de date à traiter et il n'y a qu'une seule manière de formater la date en SQL.

Et bien sûr, pour l'affichage des données, tu fais l'opération inverse.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 12h39   #3
Membre à l'essai
 
Inscription : septembre 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 140
Points : 23
Points : 23
Merci de ta réponse !
Je ne suis pas cap' de faire un programme pour la mettre au bon format, je suis "amateuse"...
La solution du calendrier javascript serait impeccable, mais j'y avais renoncé après avoir fait des essais avec des scripts relativement... malencontreux on va dire...
Tu en aurais un "sûr" à me conseiller ?
evevev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 13h06   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 180
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 180
Points : 8 557
Points : 8 557
je vrai format français est JJ/MM/AA
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 13h12   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 664
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 664
Points : 5 390
Points : 5 390
Personnellement j'utilise Jquery UI pour mon calendrier.
Sinon, une autre solution consiste à utiliser 3 listes déroulantes (jour, mois et année) et concaténer les 3 pour obtenir la date.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 13h48   #6
Membre à l'essai
 
Inscription : septembre 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 140
Points : 23
Points : 23
Citation:
Envoyé par Celira Voir le message
utiliser 3 listes déroulantes (jour, mois et année) et concaténer les 3 pour obtenir la date.
Avec cette solution, je pourrais avoir une requête de ce genre-là pour afficher ma liste : "SELECT * FROM pub, promo WHERE promo.dateFin >= CURRENT_DATE " ?
La date du jour sera "reconnue" quand même ?
evevev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 14h13   #7
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 664
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 664
Points : 5 390
Points : 5 390
Je vois pas trop le rapport entre les listes déroulantes et ta requête. Le champ du formulaire sert à renseigner en base le champ dateFin que tu testes ?
Tout dépend de ce que tu mets dans tes listes et de la façon dont tu concatènes le résultat. Le truc des 3 listes fonctionne aussi avec 3 simples champs texte.
Exemple (avec des champs textes, mais tu peux remplacer chaque champ par une liste déroulante) initialisé à aujourd'hui
Côté formulaire :
Code html :
1
2
3
<input type="text" name="date-jour" value="19" />
<input type="text" name="date-mois" value="10" /> 
<input type="text" name="date-annee" value="2011" />
Côté Php:
Code :
1
2
3
4
5
$jour = $_POST['date-jour'];
$mois = $_POST['date-mois'];
$annee = $_POST['date-annee'];
//date a enregistrer au format AAAA-MM-JJ
$date = $annee.'-'.$mois.'-'.$jour;
Bon, c'est brut de décoffrage. Il faudrait quelques validations pour vérifier que tes utilisateurs ne tapent pas n'importe quoi, ni n'inventent des dates au 31 février
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/10/2011, 15h28   #8
Membre à l'essai
 
Inscription : septembre 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 140
Points : 23
Points : 23
Si tu savais comme je suis contente d'avoir réussi grâce à toi, tu en rougirais pendant 15 jours ! Merci mille fois pour ton aide !!!

EDIT : me revoilà...
ça marche toujours, mais j'ai un petit pb d'affichage maintenant...

Quand j'avais
Code :
'".$_POST[dateDebut]."'
je faisais comme ça pour l'affichage :
Code :
 <?php if(!is_null($row_Recordset1['dateDebut'])) { ?> <?php echo $row_Recordset1['dateDebut']; ?><?php } ?>
mais maintenant que j'ai remplacé par ça :
Code :
'".$_POST['duAAAA'].'-'.$_POST['duMM'].'-'.$_POST['duJJ']."',
ça ne marche plus, et j'ai 0000-00-00 qui s'affiche si on ne choisit pas de date... il y a une solution à ta connaissance ?

EDIT : j'ai trouvé, merci !
evevev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h02.


 
 
 
 
Partenaires

Hébergement Web