IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Conversion date FR -> US


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Conversion date FR -> US
    Bonjour,

    Je réalise une barre de recherche pour mon site. Les utilisateur peuvent rentrée un nom, un prénom, un chantier ou une date. Tout fonctionne sauf la date. Les utilisateurs doivent marquer la date au format JJ/MM/AA.

    Après pas mal de recherche sur Google je n'ai toujours pas réussi à résoudre mon problème, c'est pourquoi je me tourne vers ce forum pour m'aider.

    Voici un morceau de code qui permet le fonctionnement de ma barre de recherche.
    Nom : 1.PNG
Affichages : 3286
Taille : 12,9 Ko

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Merci de ta réponse mais je ne comprend pas bien le fonctionnement de cette fonction :/

    Peux-tu m'expliquer comment je dois m'y prendre stp ?

    Voici ce que je viens de faire pour essayer de comprendre comment cette fonction fonctionne :

    Nom : 2.PNG
Affichages : 3269
Taille : 3,7 Ko

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as les exemples dans la documentation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $dateMAJ->format('Y-m-d');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Je suis vraiment désolé mais je ne comprends vraiment pas comment faire, même en lisant la documentation ><

    Es-tu sûr d'avoir bien compris ce qu'il me fallait ?

    Pour mon site, la date sera stockée dans la variable $recherche et elle sera au format FR (19/15/16). Et il faut donc que je la transforme au format US (16/15/19) pour réaliser ma requête select sur la base de données.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ au lieu de joindre des images de ton code, COPIE directement ton code dans le contenu du message !
    Utilise ensuite l'icône "#" du menu pour ajouter les balises [CODE]

    2/ Comment sont enregistrées tes dates dans la table (BdD) ?
    Et dans $recherche ? (fais-tu une vérification de la date entrée par l'utilisateur ?)
    Dernière modification par Invité ; 19/12/2016 à 11h59.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    En effet ca sera mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $RequeteSelect = $BDD -> query('SELECT * from chantier C inner join effectuer E on C.Id_Chantier=E.Id_Chantier 
    inner join personne P on E.Id_Personne=P.Id_Personne 
    inner join typetravaux T on T.Id_TypeTravaux=E.Id_TypeTravaux 
    where Lib_Chantier like "%' . $recherche . '%" 
    OR Nom_Personne like "%' . $recherche . '%" 
    OR Prenom_Personne like "%' . $recherche . '%" 
    OR DateTravaux = "' . $recherche . '"
    order by E.DateTravaux desc
    limit ' . $PremiereEntree . ', ' . $LigneParPage);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $format=('y-m-d');
    $dateMAJ = date_create_from_format($format, $recherche);
    echo $dateMAJ->format('y-m-d');
    Pouvez-vous m'éclairer vers le droit chemin svp ? ^^

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $recherche = '19/12/16';
     
    $format_entree = 'd/m/y'; // format entrée : JJ/MM/AA
    $format_sortie = 'Y-m-d'; // format sortie : AAAA-MM-DD
    $dateMAJ = date_create_from_format($format_entree, $recherche);
    echo $dateMAJ->format($format_sortie);
    ?>
    Voir : fonction date() (pour la définition des paramètres y, Y,...)

    • d : Jour du mois, sur deux chiffres (avec un zéro initial) -> 01 à 31
    • m : Mois au format numérique, avec zéros initiaux01 à 12
    • Y : Année sur 4 chiffres -> 1999 ou 2003
    • y : Année sur 2 chiffres -> 99 ou 03

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Merci énormément de ta réponse, ça fonctionne très bien, j'aurais juste une dernière question à te poser : si l'utilisateur entre autre chose qu'un date au bon format ça me retourne un message d'erreur. Comment je peux faire pour éviter l'apparition de ce message d'erreur ?

    En fait, si effectue une recherche sur autre chose que la date (nom, prénom ...), ça ne fonctionne plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //Format de la date 
    $format_entree = 'd/m/y'; // format entrée : DD/MM/AA
    $format_sortie = 'Y-m-d'; // format sortie : AAAA-MM-DD
    $dateMAJ = date_create_from_format($format_entree, $recherche);
    //echo $dateMAJ->format($format_sortie);
     
     
    $RequeteSelect = $BDD -> query('SELECT * from chantier C inner join effectuer E on C.Id_Chantier=E.Id_Chantier inner join personne P on E.Id_Personne=P.Id_Personne inner join typetravaux T on T.Id_TypeTravaux=E.Id_TypeTravaux
    where Lib_Chantier like "%' . $recherche . '%" 
    OR Nom_Personne like "%' . $recherche . '%" 
    OR Prenom_Personne like "%' . $recherche . '%" 
    OR DateTravaux = "' . $dateMAJ->format($format_sortie) . '"
    order by E.DateTravaux desc limit ' . $PremiereEntree . ', ' . $LigneParPage);
    Voici le message :

    Nom : 11.PNG
Affichages : 3260
Taille : 7,5 Ko

    Merci !

  10. #10
    Invité
    Invité(e)
    Par défaut
    Il faut ajouter une condition et vérifier si $recherche ressemble ("match") xx/xx/xx où X est un chiffre.

    Voir regex et preg_match().
    Dernière modification par Invité ; 20/11/2018 à 16h24.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Ah oui, parfait, je sais comment faire normalement, merci beaucoup de ton aide !!

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Il faut ajouter une condition et vérifier si $recherche ressemble ("match") xx/xx/xx où X est un chiffre.

    Voir regex et preg_match().
    Salutations,

    Euh, je dirais pas du tout.
    La fonction date_create_from_format() renvoie false si la date n'est pas valide.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $d = date_create_from_format('Y-m-d', 'jreaux62');   // $d = false
    @++

  13. #13
    Invité
    Invité(e)
    Par défaut
    Ça reste une condition.

    Et ça ne vaut pas un

    Même si ta solution est effectivement meilleure.

  14. #14
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Disons qu'il n'est pas nécessaire de rajouter une vérification de format, juste de vérifier le résultat de la fonction avant l'utiliser

    Par contre, je ne me suis jamais posé la question, mais est-ce que date_create_from_format gère les dates pourries ? du genre 2016-25-42 ?
    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)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème conversion date vb.net access 2010
    Par ismaiila dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/04/2014, 10h49
  2. problème conversion date en format yyMMdd
    Par CosaNostra dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 08/06/2010, 13h41
  3. Problème conversion date
    Par pit007 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 20/11/2007, 17h12
  4. problème conversion date en chaîne
    Par fakhita dans le forum Langage
    Réponses: 6
    Dernier message: 12/07/2007, 14h16
  5. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo