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 :

preg_match , checkdate et champ date


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut preg_match , checkdate et champ date
    Salam ; pour un champ date , j'ai choisi de mettre dans un formulaire un champs de type input avec placeholder ( JJ/MM/AAAA) .
    voua allez dire qu'il y'a calendar en javascript et d'autre en php , techniquement en deux cliques la date est affecter dans le champ , par contre dans mon champ l'utilisateur tape 10 caractères , je crois qu'il y'a bien une différence.
    pourquoi ce choix ?
    je préfère faire des contrôle coté serveur.
    j'ai pas essaye de développez une fonction calendar en php ( php et moi ça fait ).
    je me demande est ce que pour le champ date ma proposition est une bonne résolution ?
    qu'elle est la méthode la plus sur pour vérifier le champ date ?
    merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ton format, JJ/MM/AAAA est un format non standard, le format (français) est JJ/MM/AA, si t'as l'extension Intl pas de problème, sinon oublie et fait un format plus standard AAAA-MM-JJ

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re ;
    si t'as l'extension Intl
    tu peut être plus explicite svp.
    un format plus standard AAAA-MM-JJ
    là ou je suis le type de date JJ/MM/AAAA ou JJ/MM/AA fait partie des habitudes de l'utilisateur.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par redoran Voir le message
    Re ;
    tu peut être plus explicite svp.
    http://php.net/manual/fr/book.intl.php

    Citation Envoyé par redoran Voir le message
    là ou je suis le type de date JJ/MM/AAAA ou JJ/MM/AA fait partie des habitudes de l'utilisateur.
    C'est pas une habitude, ça part quand même d'une manière officiel d’écrire une date.

  5. #5
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    là ou je suis le type de date ( je voulais dire format )JJ/MM/AAAA ou JJ/MM/AA fait partie des habitudes de l'utilisateur.
    pour le lien je vais me mettre

  6. #6
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re ;
    pour un champ date , j'ai choisi de mettre dans un formulaire un champs de type input avec placeholder ( JJ/MM/AAAA) .
    un moment de reflexion et je constate que cette méthode n'est pas la bonne résolution!!!
    pourquoi ?
    • je dois vérifier les jours: soit inférieur a 31.
    • je dois vérifier les mois : entre 1 et 12.
    • et les années.!!! aucune idée.
    • ensuite faut combiné:
    • vérification jour et mois : pour les mois de 30 jours et mois de 31 jours.
    • mois de février 28 jours et 29 jours.

    alors là pour faire un algorithme c'est du
    la solution javascript je la laisse en dernier.
    j'aimerai bien le faire en php mais sans vous c'est du
    ok je vais tenté une expérience et on verra le résultat.

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    ton format, JJ/MM/AAAA est un format non standard, le format (français) est JJ/MM/AA, si t'as l'extension Intl pas de problème, sinon oublie et fait un format plus standard AAAA-MM-JJ
    Et tu le tiens d'où ton standard ? Le seul vrai standard c'est la norme ISO 8601 qui préconise le format yyyy-mm-dd.

    Ensuite il est convenu que la date en france peut s'écrire dd/mm/yyyy ou dd/mm/yy mais si tu as des documents officiel sur l'utilisation de 2 digits pour l'année je suis preneur.

    J'ai une préférence pour l'année à 4 digit.

    J'aurais faitu n truc comme ça pour tester les date au format français (2ou 4 digit pour l'année) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function checkMyDate($date)
    {
    	if(preg_match('`^\d{1,2}/\d{1,2}/(\d{4}|\d{2})$`',$date ))
    	{
    		list($d,$m,$y) = explode('/',$date);
    		return checkdate($m,$d,$y);	
    	}
    	return false;
    }
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    ton format à la base c'est j/m/Y pas j-m-Y
    ta proposition ne mache pas faut respecté le format j-m-y.
    je crois que je vais retourné sur mon code parce que je voi pas comment le DateTime::createFromFormat() va contrôlé la validité de la date

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par redoran Voir le message
    ta proposition ne mache pas faut respecté le format j-m-y.
    je crois que je vais retourné sur mon code parce que je voi pas comment le DateTime::createFromFormat() va contrôlé la validité de la date
    si le format format n'est pas bon il retourne false, en tout cas je te conseil d'apprendre les base de PHP avec te lancé dans un projet, et surtout de cherché dans le forum, puisque c'est un sujet traité de nombreuse fois

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par grunk Voir le message
    Et tu le tiens d'où ton standard ? Le seul vrai standard c'est la norme ISO 8601 qui préconise le format yyyy-mm-dd.

    Ensuite il est convenu que la date en france peut s'écrire dd/mm/yyyy ou dd/mm/yy mais si tu as des documents officiel sur l'utilisation de 2 digits pour l'année je suis preneur.

    J'ai une préférence pour l'année à 4 digit.

    J'aurais faitu n truc comme ça pour tester les date au format français (2ou 4 digit pour l'année) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function checkMyDate($date)
    {
    	if(preg_match('`^\d{1,2}/\d{1,2}/(\d{4}|\d{2})$`',$date ))
    	{
    		list($d,$m,$y) = explode('/',$date);
    		return checkdate($m,$d,$y);	
    	}
    	return false;
    }
    c'est le format standard Unicode, (donc ICU), avant on écrivait 21/05/98 (et pas 21/05/1998), le format à été sans doute choisie à cette période

    attention pour les regex faut pas utiliser l'opérateur d’exécution

  11. #11
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Citation Envoyé par redoran Voir le message
    ta proposition ne mache pas faut respecté le format j-m-y.
    Effectivement faut peut être remplacé les / par des - ...

    Citation Envoyé par stealth35 Voir le message
    c'est le format standard Unicode, (donc ICU), avant on écrivait 21/05/98 (et pas 21/05/1998), le format à été sans doute choisie à cette période
    ok, pour ceux que ça intéresse : http://www.localeplanet.com/icu/fr-FR/index.html

    Par contre utiliser intl si le site n'est pas multi langue me semble un peu "compliqué" non ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par grunk Voir le message
    Par contre utiliser intl si le site n'est pas multi langue me semble un peu "compliqué" non ?
    oui et non, je pense que c'est une bon habitude d’utiliser ce genre de chose, c'est pareil pour les format de nombre ou de monnaie

    en mode non strict on peux utiliser plusieurs format

Discussions similaires

  1. formater un champ date dans un select
    Par sbeu dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/04/2006, 16h44
  2. Champ Date à '01/01/0001' -> Pb conversion de variant !!!
    Par AnnSo dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/06/2004, 16h54
  3. récuperer année d'un champ date
    Par tomm dans le forum Bases de données
    Réponses: 11
    Dernier message: 12/05/2004, 16h24
  4. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56
  5. procedure stockée champ date
    Par tripper.dim dans le forum SQL
    Réponses: 5
    Dernier message: 25/04/2003, 09h47

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