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 :

verification heure avec regex


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Août 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 112
    Par défaut verification heure avec regex
    bonsoir,
    j'ai voulu créer un formulaire qui demande l'heure (à l'aide du fichier index.html) et ensuite vérifier que l'heure rentrée est de la forme hh.mm.ss (à l'aide du fichier traitement.php)

    pour le fichier index.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Titre</title>
        </head>
     
        <body>
    <!-- début création du formulaire -->
    	<form method="post" action="traitement.php">
    		<p>
    		<label for="heure"> Donner l'heure: </label> 
    		<input name="heure" id ="heure" type="text" />
    		</p>
    	</form>
    <!-- fin création du formulaire -->
    pour le fichier traitement.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    	if ((isset $_POST['heure']) AND (preg_match(#^[0-9]{2}.[0-9]{2}.[0-9]{2}$#,$_POST['heure'])))
    	{
    	echo "l'heure est valide";
    	}
    	else
    	{
    	echo "l'heure n'est pas valide";
    	}
    ?>

    ça ne fonctionne pas, j'ai peut être (surement fait des erreurs de code) mais pire je ne comprends pas la logique d'exécution du code html ou php(qui génére du html)
    je ne sais pas où placer mon code php ? pouvez vous m'éclairer svp?


    je concois les choses comme cela:
    un utilisateur se connecte sur le site, il attérit sur la page index.html qui lui est envoyé donc il a un formulaire à remplir.
    en appuyant sur le bouton envoi du formulaire, il envoit ce qu'il a rentré dans la variable $_POST['heure'] sur le serveur

    mais le if etc ... du code php dans traitement.php n'est pas lancé ?

    tout est confus dans ma tête

    merci

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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
    Billets dans le blog
    12
    Par défaut
    Salut,

    Voici ton code corrigé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php
     
    // au 1er appel => $_POST['heure'] n'est pas défini => le if est passé 
    if (isset($_POST['heure'])) {
       // tu avais oublié de mettre des quotes au pattern ainsi que d'échapper le caractère . (point)
       if (preg_match('#^[0-9]{2}\.[0-9]{2}\.[0-9]{2}$#', $_POST['heure'])) {
          echo "l'heure est valide";
       }
       else {
          echo "l'heure n'est pas valide";
       }
       // une fois le résultat affiché
       // évite de réafficher le formulaire ci dessous
       exit;
    }
     
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Titre</title>
        </head>
     
        <body>
    <!-- début création du formulaire -->
       <form method="post" action="traitement.php">
          <label for="heure"> Donner l'heure: </label>
          <input name="heure" id ="heure" type="text" />
          <input type="submit" value="Envoyer">
       </form>
    <!-- fin création du formulaire -->

  3. #3
    Membre confirmé
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Août 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 112
    Par défaut
    bonjour et merci de ton aide, j'ai réussi à faire fonctionner le code en m'aidant de ce que tu as écrit mais même si ça tourne je ne comprends pas l'intérêt de toutes les lignes de code ...

    en prenant ton code rigoureusement:

    question 1: le fichier doit s'appelait traitement.php puisque le formulaire envoie là les données rentrées?

    question 2: dans ton code php au départ , au 1er appel la variable $_POST['heure'] n'existe pas donc le if est FALSE donc on sort d'où le exit
    mais je ne comprends pas ta structure j'aurais fait

    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if isset($_POST['heure'])
    {
    le preg_match .... là nouveau if avec le alors .... sinon 
    }
    else
    {
    exit;
    }


    question 3: "if isset($_POST['heure']) AND preg_match " ne veut pas tourner je trouve cela bizarre , je réunis les 2 if : si les 2 conditions sont remplies


    merci

  4. #4
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Par défaut
    Salut,

    Question 1 : Oui, mais c'est à ta convenance. Il a fait comme ceci pour son fichier de test pour ne pas à faire deux fichiers (supposition).

    Question 2 : Si tu mets le exit dans ton else, au premier appel il sera "exécuté" et donc le reste de ta page ne sera pas affiché.

    Question 3 : Si ta question porte sur ton premier code, c'est normal que cela ne fonctionne pas. Comme l'a dit rawsrc, tu n'avais pas mis ton pattern entre parenthèses. De plus, passer par deux conditions te permet de mieux contrôler les erreurs. Ainsi, tu peux déterminer si l'heure a bien été saisie (isset()) et si le format est valide (preg_match()).
    Je ne suis pas schizophrène, nous sommes unanime !!!

    ► Pensez à la balise code et au CODE HTML GENERE !!!!
    ► Au si c'est le cas et au à ceux qui vous ont aidé.
    ► Vous souhaitez participer aux rubriques CSS et (X)HTML ? Contactez-nous !

    Créer des colonnes de même hauteur en CSS
    Glossaire CSS
    Les bordures en CSS3
    Les transitions en CSS3

  5. #5
    Membre confirmé
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Août 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 112
    Par défaut
    je commence à mieux comprendre

    j'ai pigé pour le exit

    c'est cette partie qui n'est pas encore assimilé correctement
    au 1er appel => $_POST['heure'] n'est pas défini => le if est passé
    if (isset($_POST['heure'])) {


    pour moi isset permet de vérifier si la variable $_POST['heure'] existe ou est définie
    donc au 1er appel je me dis que le isset($_POST['heure']) va renvoyer FALSE et que ce qu'il y a dans else va s'éxécuter

    mais d'après vos explications , je me plante ... je ne comprends pas ce qui cloche dans ma façon de voir

    merci

  6. #6
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Par défaut
    En fait, c'est simple.

    La fonction exit() affiche un message et arrête le script courant.

    Ce qui veux dire que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (isset($_POST)) {
        // traitement
    }
    else {
        exit; // Termine le script et donc n'exécute pas la suite de ton script.
    }
    Fait que, SI on a soumis le formulaire, alors on procède au traitement, SINON, on affiche un message (ici je n'affiche rien) et le script s'arrête.
    Or comme ta page contient, à la fois la vérification du formulaire et le formulaire en question, au premier chargement ton formulaire ne sera jamais affiché puisque tu rentres directement dans le SINON qui stop la suite de ton script.

    Je sais pas si c'est plus clair ?
    Je ne suis pas schizophrène, nous sommes unanime !!!

    ► Pensez à la balise code et au CODE HTML GENERE !!!!
    ► Au si c'est le cas et au à ceux qui vous ont aidé.
    ► Vous souhaitez participer aux rubriques CSS et (X)HTML ? Contactez-nous !

    Créer des colonnes de même hauteur en CSS
    Glossaire CSS
    Les bordures en CSS3
    Les transitions en CSS3

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

Discussions similaires

  1. Verification d'un champ avec regex sous Talend
    Par tomlaurent dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 06/11/2008, 10h31
  2. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48
  3. Pb de verif form avec un champ array []
    Par deloo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/09/2005, 11h33
  4. probleme date et heure avec mysql.
    Par argon dans le forum Langage SQL
    Réponses: 1
    Dernier message: 11/07/2005, 22h42
  5. Réponses: 3
    Dernier message: 13/08/2004, 18h52

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