Page 1 sur 1

Contrôle des zones remplies

Posté : 10 avr. 2008, 23:47
par coucou
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

Posté : 10 avr. 2008, 23:57
par sylvaing26
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 ?

Posté : 11 avr. 2008, 00:10
par coucou
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.

Posté : 11 avr. 2008, 00:20
par sylvaing26
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>

Posté : 11 avr. 2008, 00:27
par zeus
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.

Posté : 11 avr. 2008, 00:29
par zeus
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.

Posté : 11 avr. 2008, 00:38
par sylvaing26
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>"; 
}

Posté : 11 avr. 2008, 17:47
par coucou
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>

Posté : 12 avr. 2008, 22:27
par coucou
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]

Posté : 14 avr. 2008, 17:34
par sylvaing26
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> 

Posté : 14 avr. 2008, 19:45
par dunbar
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");

  ?>

        

Posté : 14 avr. 2008, 21:52
par coucou
Merci beaucoup DUNBAR et SYLVAING :D

Posté : 14 avr. 2008, 22:25
par sylvaing26
ya pas de quoi :wink: