Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/06/2007, 14h56   #1
Invité de passage
 
Inscription : février 2007
Messages : 62
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 62
Points : 4
Points : 4
Par défaut Probleme de contrôle de champs

Bonjour,

j'ai un formulaire pour une inscription en ligne avec le contrôle des champs obligatoires (nom, mail...)

si les gens ne remplissent pas ces champs il s'affichent en rouge et l'utilisateur doit resaisir...

dans le cas où les champs sont bien renseignés il sera dirigé vers une page : "OK VOUS ETES ENREGISTRES"

mais ce n'est pas le cas meme si les champs sont renseignés...
voici mon code de mes 2 pages...

merci
Pierre

Code :
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
class testTools {
  var $errTab; //Tableau contenant les erreurs détectées
  var $Count; //Variable contenant le nombre d'erreurs détectées
  var $fstyle; //Nom du style CSS par défaut quand il y a une erreur.
 
  //Constructeur de la classe ici on passe en paramêtre le nom du style d'erreur par defaut.
  function testTools($fstyle)
  {
    $this->Count=0;
    $this->fstyle=$fstyle;
  }
 
  //Fonction qui permet de securiser un champ texte de manière à pouvoir être stocké dans une base de données.
  //Si vous voulez autoriser les tag HTML alors il faut mettre la ligne du strip_tags en commentaire.
  function secure($var)
  {
    $vars=$var;
    if (!is_numeric($var))
    {
      $vars=htmlentities($vars);
      $vars=strip_tags($vars);
    }
    return $vars;
  }
 
  //Fonction principale de la classe qui ajoute un nom de style CSS à un nom de champ de formulaire.
  function add($title,$style)
  {
    $this->errTab[0][$this->Count]=$title;
    $this->errTab[1][$this->Count++]=$style;
  }
 
  //Fonction qui permet d'effectuer un test sur un champ de type EMAIL.
  function mailtest($var,$name)
  {
    if (!eregi("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@([0-9a-z](-?[0-9a-z])*\\.)+[a-z]{2}([zmuvtg]|fo|me)?$",$var))
      $this->add($name,$this->fstyle);
  }
 
  //Fonction qui permet d'effectuer un test sur un champ de type INT.
  function inttest($var,$name)
  {
    if (($var==0)||(!is_numeric($var)))
      $this->add($name,$this->fstyle);
  }
 
  //Fonction qui permet d'effectuer un test sur un champ de type TIME.
  function timetest($varh,$varm,$vars,$name)
  {
    if ((($varh>24)||($varm>59)||($vars>59))||(($varh<0)||($varm<0)||($vars<0)))
      $this->add($name,$this->fstyle);
  }
 
  //Fonction qui permet d'effectuer un test sur un champ de type URL.
  function urltest($var,$name)
  {
    if ((substr($var,0,4)!="www.")&&(substr($var,0,7)!="http://"))
      $this->add($name,$this->fstyle);    
  }
 
  //Fonction qui permet d'effectuer un test sur un champ de type STRING.
  function stringtest($var,$name)
  {
    if (strlen(trim($var))==0)
      $this->add($name,$this->fstyle);    
  }
 
  //Fonction qui permet d'effectuer un test sur un champ de type DATE.
  function datetest($var1,$var2,$var3,$name)
  {
    if (!checkdate($var2,$var1,$var3))
      $this->add($name,$this->fstyle);    
  }
 
  //Fonction qui recherche un style CSS associé à un champ donné.
  function fieldError($name,$default)
  {
    if (is_array($this->errTab[0]))
      foreach($this->errTab[0] as $key => $value)
      {
        if ($value==$name)
          return $this->errTab[1][$key];
      }
    return $default;
  }
 
}
?>
Code :
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
75
76
77
78
79
80
81
82
83
<?php 
include ("validator.php");
$test = new testTools("fielderror");
 
if ($_POST["f"]==1) { 
  $formPrenom = $test->secure($_POST["Prenom"]);
 
  $formNom = $test->secure($_POST["Nom"]);
  $test->stringtest($formNom,"Nom");
 
  $formSociete = $test->secure($_POST["Societe"]);
  $test->stringtest($formSociete,"Societe");
 
  $formFonction = $test->secure($_POST["Fonction"]);
  $formAdresse = $test->secure($_POST["Adresse"]);
  $formTelephone = $test->secure($_POST["Telephone"]);
 
  $test->mailtest($_POST["Mail"],"Mail");
 
  $formCommentaires = $test->secure($_POST["Commentaires"]);
  $test->stringtest($formCommentaires,"Commentaires");
 
  if ($test->Count==0) {
    //Traitement lorsque tous les tests sont passés avec succès
 
    header("location: envoiOk.php");
  }
}
?>
<html>
<head>
<title>Test de formulaire</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
  .fielderror { color: red; }
  .fieldreq { color: blue;}
</style>
</head>
<body>
<form action="form.php" method="post" name="Contact" id="Contact">
Veuillez s'il vous plait remplir les champs suivants: <br><br>
<?php
if ($_POST["f"]==1)
  echo "Les champs en rouge doivent être remplis!";               
?>
<strong class="<?=$test->fieldError("Nom","fieldreq")?>">Nom:</strong> <br>
<input name="Nom" type="text" class="textbox" size="50" value="<?=$formNom?>" maxlength="50">
<br>
<br>
<strong class="<?=$test->fieldError("Prenom","fieldreq")?>">Prénom</strong>: <br>
<input name="Prenom" type="text" class="textbox" id="Boite" size="50" value="<?=$formPrenom?>" maxlength="50">
<br>
<br>
<strong class="<?=$test->fieldError("Societe","fieldreq")?>">Soci&eacute;t&eacute;</strong>: <br>
<input name="Societe" type="text" class="textbox" id="Boite" size="50" value="<?=$formSociete?>" maxlength="50">
<br>
<br>
<strong class="<?=$test->fieldError("Fonction","fieldreq")?>">Fonction:</strong> <br>
<input name="Fonction" type="text" class="textbox" id="Fonction" size="50" value="<?=$formFonction?>" maxlength="50">
<br>
<br>
<strong class="<?=$test->fieldError("Adresse","fieldreq")?>">Adresse:</strong> <br>
<input name="Adresse" type="text" class="textbox" id="Fonction" size="50" value="<?=$formAdresse?>" maxlength="50">
<br>
<br>
<strong class="<?=$test->fieldError("Telephone","fieldreq")?>">Téléphone</strong> <br>
<input name="Telephone" type="text" class="textbox" id="Fonction" size="50" value="<?=$formTelephone?>" maxlength="50">
<br>
<br>
<strong class="<?=$test->fieldError("Mail","fieldreq")?>">Mail:</strong> <br>
<input name="Mail" type="text" class="textbox" id="Mail" size="50" value="<?=$_POST["Mail"]?>" maxlength="50">
<br>
<br>
<strong class="<?=$test->fieldError("Commentaires","fieldreq")?>">Commentaires: </strong><br>
<textarea name="Commentaires" cols="50" rows="10" class="textbox" id="Commentaires"><?=$formCommentaires?></textarea>
<br>
<br>
<input name="Submit2" type="submit"  value="Envoyer">
<input name="Submit2" type="reset"  value="Annuler">
<input type="hidden" name="f" value="1">
</form>
</body>
</html>
cutpeter56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 21h56   #2
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
salut,
il faudrait que tu sois déjà sûr que toutes tes valeurs de champs sont transmises lors de l'envoie du formulaire. Pour cela, tu fais un simple en debut de fichier.

Ensuite il faudrait que tu essaies de localiser quel champ ne passe pas le test, pour qu'on voit quelle fonction pose un problème.
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 08h34   #3
Expert Confirmé
 
Avatar de trotters213
 
Inscription : janvier 2005
Messages : 2 572
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2005
Messages : 2 572
Points : 2 605
Points : 2 605

De même lorsque tu reçoit ton POST, tu es censé tester chaque valeur avec isset(). De cette façon, et si les E_NOTICE sont activées, tu verras si tes variables $_POST["xxx"] sont afféctées où pas.
__________________
Pensez au tag
Les règles du Forum

Dev. Web : FAQ (X)HTML/CSS | Tutos (X)HTML | Tutos CSS

PHP : FAQ PHP | Tutos PHP | Benchmark PHP 5

SQL : Cours SQL
trotters213 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 17h03   #4
Futur Membre du Club
 
Inscription : janvier 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 41
Points : 17
Points : 17
Et bien mieu encore "A MON AVIS", pense à faire des tests en JavaScript (qui est du coté client) biensur s'il est activé chez le client, pour ne pas alourdir le serveur par des tests non nécessaires...
NiGHtyWolf est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h23.


 
 
 
 
Partenaires

Hébergement Web