Contrôle des zones remplies

Eléphant du PHP | 69 Messages

10 avr. 2008, 23:47

Bonjour tout le monde,

Je commence, et ça fait 2 jours que je fait le tour des forums et des tutos sans trouver de solution.
Voilà, j'ai ce code et après avoir remplis les zones sauf le "nom", il ne me met pas le message "VOUS DEVEZ REMPLIR LA ZONE NOM". Il me valide correctement la saisie

Voici mon code :
<html>
  <head>
    <title>inscription Marathon 2008</title>
  </head>
<body>
<form name="index.html" action="insertion2.php" method="POST">

   <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
   <?
      if (($nom == "") && ($valider <> ""))
        echo "<font color='#FF0000'> Le Nom DOIT être rempli :</font><BR>";
    ?>
      <td>nom</td>
      <td><input type="text" name="nom" value=<?echo $nom;?>></td>
    </tr>
    <tr align="center">
      <td>prenom</td>
      <td><input type="text" name="prenom"></td>
    </tr>
    <TR align="center">
	<TD>titre</TD>
	<TD>
        <SELECT name="titre">
		<OPTION VALUE="GMI">GMI</OPTION>
		<OPTION VALUE="MI">MI</OPTION>
		<OPTION VALUE="Maitre Fide">Maitre Fide</OPTION>
		<OPTION VALUE="Fide">Fide</OPTION>
		<OPTION VALUE="aucun">Aucun</OPTION>
	</SELECT></TD>
     </TR>
    <tr align="center">
      <td>club</td>
      <td><input type="text" name="club"></td>
    </tr>
    <tr align="center">
      <td>licence</td>
      <td><input type="text" name="licence"></td>
    </tr>
    <tr align="center">
      <td>elo</td>
      <td><input type="text" name="elo"></td>
    </tr>
    <TR align="center">
	<TD>tournoi</TD>
	<TD>
        <SELECT name="tournoi">
		<OPTION VALUE="17e Marathon">17e Marathon</OPTION>
		<OPTION VALUE="7e Open - Tournoi A">7e Open - Tournoi A</OPTION>
                <OPTION VALUE="7e Open - Tournoi B">7e Open - Tournoi B</OPTION>
	</SELECT></TD>
     </TR>
      <tr align="center">
      <td>mail</td>
      <td><input type="text" name="mail"></td>
    </tr>
 
    <tr align="center">
      <td colspan="2"><input type="submit" name="valider" value="valider" ></td>
    </tr>
  </table>
</form>
</body>

</html>
Pour moi la partie en rouge (Note de zeus : la partie PHP), est le code qui doit obligé à remplir la zone.
Ou ai je fais une erreur ? ou qu'est ce que j'ai oublié ?

Merci de votre aide

Mammouth du PHP | 686 Messages

10 avr. 2008, 23:57

Essaie ceci :
if (!isset($nom) && isset($valider))
Parce que j'en conclu que ta boucle c'est si $nom est vide et si $valider est diffèrent de null ou zero ?

Eléphant du PHP | 69 Messages

11 avr. 2008, 00:10

Idem, j'ai mis ta fonction

if (!isset($nom) && isset($valider))

à la place de

if (($nom == "") && ($valider <> ""))

et j'ai exactement le même souci, ça me valide les saisies même si le champs nom n'est pas saisie.

Mammouth du PHP | 686 Messages

11 avr. 2008, 00:20

ok je voie le soucis, en fait c'est pas sur cette page là que tu dois verifier si tes champs sont remplis mais c'est sur celle ou tu envoie les données en l'occurance insertion2.php, mais tu as une methode plus simple avec javascript qui ne t'oblige pas à rafraichir la page

Code : Tout sélectionner

<script language="JavaScript" type="text/javascript"> <!-- function validate(){ if ( ( document.form1.nom.value == "" )) { alert( "Assurez-vous d'avoir rempli correctement votre nom avant de le valider." ); } else { document.form1.action = "insertion2.php" document.form1.method = "post" document.form1.submit(); } } //--> </script> <form name="form1"> <table border="0" align="center" cellspacing="2" cellpadding="2"> <tr align="center"> <td>nom</td> <td><input type="text" name="nom" value=<?echo $nom;?>></td> </tr> <tr align="center"> <td>prenom</td> <td><input type="text" name="prenom"></td> </tr> <TR align="center"> <TD>titre</TD> <TD> <SELECT name="titre"> <OPTION VALUE="GMI">GMI</OPTION> <OPTION VALUE="MI">MI</OPTION> <OPTION VALUE="Maitre Fide">Maitre Fide</OPTION> <OPTION VALUE="Fide">Fide</OPTION> <OPTION VALUE="aucun">Aucun</OPTION> </SELECT></TD> </TR> <tr align="center"> <td>club</td> <td><input type="text" name="club"></td> </tr> <tr align="center"> <td>licence</td> <td><input type="text" name="licence"></td> </tr> <tr align="center"> <td>elo</td> <td><input type="text" name="elo"></td> </tr> <TR align="center"> <TD>tournoi</TD> <TD> <SELECT name="tournoi"> <OPTION VALUE="17e Marathon">17e Marathon</OPTION> <OPTION VALUE="7e Open - Tournoi A">7e Open - Tournoi A</OPTION> <OPTION VALUE="7e Open - Tournoi B">7e Open - Tournoi B</OPTION> </SELECT></TD> </TR> <tr align="center"> <td>mail</td> <td><input type="text" name="mail"></td> </tr> <tr align="center"> <td colspan="2"><input type="submit" name="valider" value="valider" ></td> </tr> </table> </form>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 avr. 2008, 00:27

Modération :
coucou, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

De plus, merci de ne pas abuser des capitales dans ton titre.
C'est moins lisible et ça n'apporte rien de plus.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 avr. 2008, 00:29

Sinon, concernant la dernière réponse de sylvaing26, il faut tout de même que tu sois conscients que les vérifications JS sont un confort et sont très facilement détournable (il suffit de désactiver le javascript ;) )
L'avantage du JS, c'est que tu informes l'utilisateur de ses erreurs avant soumission du formulaire, donc éviter un chargement de page, la perte de sa saisie, ...

Dans tout les cas, sur ta page de traitement, il faudra que tu refasses le test en PHP.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 686 Messages

11 avr. 2008, 00:38

ok, donc après la juste remarque de Zeus, il faudrai que tu nous donne le code de ta page insertion2.php car c'est sur celle ci qu'il faut que tu effectue la vérification des donnée, cette page là verifira si la variable $nom a bien été rempli et dans le cas contraire tu peux rediriger vers ton formulaire avec un parametre erreur du genre formulaire.php?erreur=true qui te rajoutera ta ligne
if($erreur =="true")
{
echo "<font color='#FF0000'> Le Nom DOIT être rempli :</font><BR>"; 
}

Eléphant du PHP | 69 Messages

11 avr. 2008, 17:47

Bonjour,

Ben voilà le code "insertion2.php", j'avais essayé avant de poster, mais en vain.
<?php
  //connection au serveur
  $cnx = mysql_connect( "serveur", "pseudo", "pass" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "chess32" ) ;
 
  //récupération des valeurs des champs:
  //nom:
  $nom     = $_POST["nom"] ;
  //prenom:
  $prenom = $_POST["prenom"] ;
  //titre:
  $titre = $_POST["titre"] ;
  //club:
  $club = $_POST["club"] ;
  //licence:
  $licence        = $_POST["licence"] ;
  //elo:
  $elo       = $_POST["elo"] ;
  //tournoi:
  $tournoi       = $_POST["tournoi"] ;
  //mail:
  $mail       = $_POST["mail"] ;

   
  //création de la requête SQL:
  $sql = "INSERT  INTO marathon08 (nom, prenom, titre, club, licence, elo, tournoi, mail)
            VALUES ( '$nom', '$prenom', '$titre', '$club', '$licence', '$elo', '$tournoi', '$mail') " ;
  
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }
  
  ?>

<html>
<tr align="center">
      <form name="index.html" action="http://www.chess32.tonsite.biz/index.php?file=News" method="POST">
      <td colspan="2"><input type="submit" name="retour_index" value="retour" ></td>
    </tr>
  </form>
</html>

Eléphant du PHP | 69 Messages

12 avr. 2008, 22:27

salut la compagnie,

Alors j'ai essayé de faire avec " if() " dans le code "insertion2" comme disait Sylvaing26 et ça me met le bon résultat "le Nom doit etre rempli" mais ça reste là et ça ne reviens plus sur la zone à saisir. Et forcement je trouve pas sur le net.
Help me :wink:
<?php
  //connection au serveur
  $cnx = mysql_connect(  ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db(  ) ;


  //récupération des valeurs des champs:
  //nom:
  $nom     = $_POST["nom"] ;
  //prenom:
  $prenom = $_POST["prenom"] ;
  //titre:
  $titre = $_POST["titre"] ;
  //club:
  $club = $_POST["club"] ;
  //licence:
  $licence        = $_POST["licence"] ;
  //elo:
  $elo       = $_POST["elo"] ;
  //tournoi:
  $tournoi       = $_POST["tournoi"] ;
  //mail:
  $mail       = $_POST["mail"] ;

    //controle des zones bien remplies: 
  
      if ($Nom == "")
        {
        echo "<font color='#FF0000'>";
        echo "Le Nom DOIT être rempli :";
        echo "</font>";
        echo "<BR>";
        }
        return
  //création de la requête SQL:
  $sql = "INSERT  INTO marathon08 (nom, prenom, titre, club, licence, elo, tournoi, mail)
            VALUES ( '$nom', '$prenom', '$titre', '$club', '$licence', '$elo', '$tournoi', '$mail') " ;
  
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }

  ?>

<html>
<tr align="center">
      <form name="index.html" action="http://www.chess32.tonsite.biz/index.php?file=News" method="POST">
      <td colspan="2"><input type="submit" name="retour_index" value="retour" ></td>
    </tr>
  </form>
</html> 
C'est la parti controle de la zone remplie ou ça bloque
Merci pour votre aide :D

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 686 Messages

14 avr. 2008, 17:34

essaie comme ca :
<?php 
  //connection au serveur 
  $cnx = mysql_connect(  ) ; 
  
  //sélection de la base de données: 
  $db  = mysql_select_db(  ) ; 


  //récupération des valeurs des champs: 
  //nom: 
  $nom     = $_POST["nom"] ; 
  //prenom: 
  $prenom = $_POST["prenom"] ; 
  //titre: 
  $titre = $_POST["titre"] ; 
  //club: 
  $club = $_POST["club"] ; 
  //licence: 
  $licence        = $_POST["licence"] ; 
  //elo: 
  $elo       = $_POST["elo"] ; 
  //tournoi: 
  $tournoi       = $_POST["tournoi"] ; 
  //mail: 
  $mail       = $_POST["mail"] ; 

    //controle des zones bien remplies:  
   
      if ($Nom == NULL) 
        { 
        echo "<font color='#FF0000'>"; 
        echo "Le Nom DOIT être rempli :"; 
        echo "</font>"; 
        echo "<BR>"; 
        } 
       else
{
  //création de la requête SQL: 
  $sql = "INSERT  INTO marathon08 (nom, prenom, titre, club, licence, elo, tournoi, mail) 
            VALUES ( '$nom', '$prenom', '$titre', '$club', '$licence', '$elo', '$tournoi', '$mail') " ; 
   
  //exécution de la requête SQL: 
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;  
  } 

  ?> 

<html> 
<tr align="center"> 
      <form name="index.html" action="http://www.chess32.tonsite.biz/index.php?file=News" method="POST"> 
      <td colspan="2"><input type="submit" name="retour_index" value="retour" ></td> 
    </tr> 
  </form> 
</html> 

ViPHP
ViPHP | 2291 Messages

14 avr. 2008, 19:45

Comme ceci ???
<?php

  //connection au serveur
  $cnx = mysql_connect(  ) ;

  //sélection de la base de données:
  $db  = mysql_select_db(  ) ;


  //récupération des valeurs des champs:
  //nom:
  $nom     = mysql_real_escape_string($_POST["nom"]);
  //prenom:
  $prenom  = mysql_real_escape_string($_POST["prenom"]);
  //titre:
  $titre   = mysql_real_escape_string($_POST["titre"]);
  //club:
  $club    = mysql_real_escape_string($_POST["club"]);
  //licence:
  $licence = mysql_real_escape_string($_POST["licence"]);
  //elo:
  $elo     = mysql_real_escape_string($_POST["elo"]);
  //tournoi:
  $tournoi = mysql_real_escape_string($_POST["tournoi"]);
  //mail:
  $mail    = mysql_real_escape_string($_POST["mail"]);

  $message_erreur = "Erreur. Les champs suivants doivent &ecirc;tre obligatoirement remplis :<br/><br/>";
  $message        = $msg_erreur;



  //controle des zones bien remplies:

   if (empty($_POST['nom']))
       $message .= "Votre nom svp<br/>";

   if (empty($_POST['prenom']))
       $message .= "Votre prenom svp<br/>";

   if (empty($_POST['titre']))
       $message .= "Votre titre svp<br/>";

   if (empty($_POST['club']))
       $message .= "Votre club svp<br/>";

   if (empty($_POST['licence']))
       $message .= "Votre licence svp<br/>";

   if (empty($_POST['mail']))
       $message .= "Votre e mail svp<br/>";



// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($message_erreur)) {

  echo $message;
  echo '<a href="'.$_SERVER['HTTP_REFERER'].'">Retour</a>';
  exit();
// sinon c'est ok
} else {

  //création de la requête SQL:
  $sql = "INSERT
          INTO marathon08
          (nom, prenom, titre, club, licence, elo, tournoi, mail)
          VALUES
          ('".$nom."', '".$prenom."', '".$titre."', '".$club."', '".$licence."', '".$elo."', '".$tournoi."', '".$mail."') " ;

  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;

  }
  header("Location: http://www.chess32.tonsite.biz/index.php?file=News");

  ?>

        

Eléphant du PHP | 69 Messages

14 avr. 2008, 21:52

Merci beaucoup DUNBAR et SYLVAING :D

Mammouth du PHP | 686 Messages

14 avr. 2008, 22:25

ya pas de quoi :wink: