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

PHP & Base de données Discussion :

Vérification champs date


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Par défaut Vérification champs date
    Bonjour,

    Je souhaiterai vérifier le champs "date" de type text dans mon formulaire.

    J'ai trouvé sur google des petits script en JAVASCRIPT qui vérifie des champs mais comme j'ai un calendrier en JAVASCRIPT ca bug :'(

    Je me suis rabattu sur une vérification PHP de se fait.
    J'ai pu lire pas mal de chose pour la vérification mais rien ne fonctionne chez moi donc je pense que j'ai du oublier quelque chose mais je ne sais pas du tous quoi.

    Voici mon formulaire ou j'ai intégrer ma petite vérification en php

    Code PHP : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <form action="crea.php" method="post">
    Entrez la Date <input type="button" value="Calendrier" onClick="displayCalendar(document.forms[0].date,'dd/mm/yyyy',this)">
     <input readonly type="text" name="date" value=""><br>
    <table width="548" border="0">
     <tr><td width="36"></td>
     <td width="234">&nbsp;</td>
    <td width="130">Matin</td>
    <td width="130">Apr&egrave;s-midi</td>
     </tr>
      <tr></table>
     
    <?php
     
        while( $result = mysql_fetch_object( $users ) )
        {
    ?>
    <table width="548" border="1">
        <td>Agent:</td>
        <td><input type="text" size="20" name="agent<?php echo $indice;?>" value="<?php echo ($result->nom);?> <?php echo ($result->prenom);?>"></td>
    <td><select name="etat_mat<?php echo $indice;?>">
    <option>Pr&eacute;sent</option>
    <option>Cong&egrave;s Annuels</option>
    <option>Maladie</option>
    </select></td>
    <td><select name="etat_ap<?php echo $indice;?>">
    <option>Pr&eacute;sent</option>
    <option>Cong&egrave;s Annuels</option>
    <option>Maladie</option>
    </select></td>
     </tr>
    <input type="hidden" name="nchrono<?php echo $indice;?>" value="<?php echo ($result->nchrono);?>">
    <input type="hidden" name="login<?php echo $indice;?>" value="<?php echo ($result->login);?>">
    <input type="hidden" name="lservice<?php echo $indice;?>" value="<?php echo ($result->lservice);?>">
    <?php
    $indice++;
    }
    ?>
    <input type="hidden" name="numIndice" value="<?php echo $indice;?>"/>
    </table>
    <input type="submit" value="valider" name="valider">
    <?php
    if(isset($_POST["valider"]))
    {
     
    if(!isset($_POST["date"]) || $_POST["date"]=="")
    {
    $date = "Ce champ doit être renseigné.";
    }
    else {
    header('location:crea.php');
    }
    }
    ?>
    <input type="submit" value="Mise &agrave; jour" name="maj">
    </form>

    Merci de votre aide futur

  2. #2
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Par défaut
    J'ai re-testé avec un ti script en javascript que voici:

    Code html : 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
    <SCRIPT language="JavaScript">
    <!--
    function ControleVide()
    {
    if(document.Formulaire.date.value=='')
    {
    alert('Le champ date ne peut pas rester vide !');
    document.Formulaire.date.focus();
    }
    else
    {
    document.Formulaire.method = "POST";
    document.Formulaire.action = "crea.php";
    document.Formulaire.submit();
    }
    }
    //-->
    </script>

    Sur le bouton pour valider j'ai donc mis ceci
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" value="valider" name="valider" onClick="ControleVide()">
    Je dois mettre un input de type "button" et non pas "submit".


    Si je met rien dans le champs "date" j'ai bien le message d'erreur mais si j'ai mis une date, le fichier "crea.php" s'exécute, mais il n'arrive pas à rentrer dans mon "if" il va direct dans le "else" de fin.

    Si joint le code crea.php
    Code php : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <?php
        if(isset($_POST['valider']))
    {
     
    		$indice = $_POST['numIndice'];
    		$valider = $_POST['valider'];
    		$date = $_POST['date'];
    		$login = 'gpassis';
     
    			function user_exists($date)
    			{
    				$sql = 'SELECT `date` FROM presence_informatique WHERE date = \'' . addslashes($date) . '\' LIMIT 1';
    				$res = mysql_query($sql) or die ($sql.'<br />'.mysql_error());
    				return (mysql_num_rows($res) == 1);
    			}
     
     
    			if (user_exists($date))
    			{
    				echo('La date que vous avez saisie est d&eacute;j&agrave; enregistr&eacute;e!<br />');
    				echo('Si vous souhaitez effectuer une mise &agrave; jour retournez au <a href="accueil.php">menu principal</a><br />');
     
    			}
    			else
    			{
    					if ( $indice > 0 ) {
    						for ( $i=0; $i < $indice; $i++ )
    					{
    						$lservice=$_POST['lservice'.$i];
    						$agent=$_POST['agent'.$i];
    						$nchrono=$_POST['nchrono'.$i];
    						$etat_mat=$_POST['etat_mat'.$i];
    						$etat_ap=$_POST['etat_ap'.$i];
    						$login=$_POST['login'.$i];
     
    						$requete ="INSERT INTO presence_informatique (id,lservice,date,agent,nchrono,etat_mat,etat_ap,login) values ('','$lservice','$date','$agent','$nchrono','$etat_mat','$etat_ap','$login')";
     
    						mysql_query($requete);
    					}
    				mysql_close();
    				echo "La date &agrave; bien &eacute;t&eacute; prise en charge pour les ".$indice." agents ";
    				echo ('vous pouvez retourner au <a href="accueil.php">menu principal</a>');
    			}
    		}
    }
    else
        if(isset($_POST['maj']))
    {
     
    		$indice = $_POST['numIndice'];
    		$valider = $_POST['valider'];
    		$date = $_POST['date'];
     
      					if ( $indice > 0 ) {
    						for ( $i=0; $i < $indice; $i++ )
    					{
    						$lservice=$_POST['lservice'.$i];
    						$agent=$_POST['agent'.$i];
    						$nchrono=$_POST['nchrono'.$i];
    						$etat_mat=$_POST['etat_mat'.$i];
    						$etat_ap=$_POST['etat_ap'.$i];
    						$login=$_POST['login'.$i];
    						$requete ="UPDATE presence_informatique SET etat_mat = '$etat_mat', etat_ap = '$etat_ap' WHERE date = '$date' AND agent='$agent'";
    						mysql_query($requete);
    					}
    										}
    						echo "Mise &agrave; jour effectu&eacute;e <br>";
    						echo ('vous pouvez retourner au <a href="accueil.php">menu principal</a>');
     
    }
    else
    echo "Il y a eu une erreur";
     
    ?>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut
    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
    33
    34
    35
    36
    37
    38
     
    function verifDate($a,$m,$j)
    {
    	$verif = true;
    	if($m==02 and $j>=30)
    	{
    		$verif=false;
    	}
    	else
    	{
    		if($a%4==0 and ($a%100>0) || ($a%400==0))
    		{
    			$ab=true;
    		}
    		else
    		{
    			$ab=false;
    		}
    		if($m==02 and $ab==true)
    		{
    			if($j>29)
    			{
    				$verif=false;
    			}
    		}
    		else
    		{
    			if($m==02 and $ab==false)
    			{
    				if($j>28)
    				{
    					$verif=false;
    				}
    			}
    		}
    	}
    	return $verif;
    }

  4. #4
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Par défaut
    Se code je le met à la place de mon code php (1er cas) ou javascript (2eme cas)?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut
    modifi dans ton form en html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    jour :<input type="text" name="j">
    mois :<input type="text" name="m">
    annee :<input type="text" name="a">

    puis dans ton code php:
    rajoute cette condition

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    $a = $_POST['a'];
    $m = $_POST['m'];
    $j = $_POST['j'];
     
    $verif = true;
    if($m==02 and $j>=30)
    {
    	$verif=false;
    }
    else
    {
    	if($a%4==0 and ($a%100>0) || ($a%400==0))
    	{
    		$ab=true;
    	}
    	else
    	{
    		$ab=false;
    	}
    	if($m==02 and $ab==true)
    	{
    		if($j>29)
    		{
    			$verif=false;
    		}
    	}
    	else
    	{
    		if($m==02 and $ab==false)
    		{
    			if($j>28)
    			{
    				$verif=false;
    			}
    		}
    	}
    }
     
     
    //si $verif = à true alors la date est ok
    Cette vérification permet seulement de vérifier le type de date tel que les années bisextiles et le nombre de jour(30/31) et les mois (12) ...
    Pour vérifier si l'utilisateur rentre les bon chiffre je te conseil de faire des listes et d'utiliser seulement le script que je t'ai donné, moins de code en php du coup...

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Il existe une fonction native pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $a = $_POST['a'];
    $m = $_POST['m'];
    $j = $_POST['j'];
     
    if (checkdate($m, $j, $a))
    echo 'date valide';
    ?>

Discussions similaires

  1. Vérification champ date
    Par majduuus dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 30/07/2013, 13h51
  2. [Toutes versions] Vérification de date en champs Text
    Par prologic dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/04/2013, 09h18
  3. vérification dans un champ date avec le SQL
    Par adelcrb dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/01/2013, 08h18
  4. Contrainte de vérification sur champ DATE
    Par Toshtuk dans le forum Oracle
    Réponses: 12
    Dernier message: 15/09/2006, 11h47
  5. [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

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