Bon OK cette question a du être posée des centaines de fois mais après 2 jours de tentatives et de passage d'un site à un autre, je craque et demande de l'aide.
Je travaille actuellement sur un formulaire pas super compliqué (je le construis avec dreamweaver j'avoue) mais je n'arrive pas à faire un truc sans doute simple c la vérification du formulaire avant l'insertion dans la base de donnée.
Je vous mets ici en exemple ce que j'arrive à écrire mais qui ne fonctionne pas et je ne sais pas why. pour écrire tout ça je me suis servi des différents sites que j'ai lu. Mon formulaire exemple comprend :
- 4 champs texte dont 1 email donc il faut vérifier que l'adresse est correctement écrite
- 1 liste - menu ms pas de vérif spéciale à faire car la personne peut ne pas répondre si elle veut
- 1 case-à-cocher qu'il faudrait vérifier aussi
voici donc mon code
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
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
 
<?php require_once('Connections/connquestionnaire.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
 
  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
 
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
 
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
 
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO questionnaire (sexe, age, nationalite, ville_residence, note_eau, aimer_milkshake, email) VALUES (%s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['sexe'], "text"),
                       GetSQLValueString($_POST['age'], "text"),
                       GetSQLValueString($_POST['nationalité'], "text"),
                       GetSQLValueString($_POST['villeresidence'], "text"),
                       GetSQLValueString($_POST['eau'], "text"),
                       GetSQLValueString($_POST['aimer_milkshake'], "text"),
                       GetSQLValueString($_POST['email'], "text"));
 
  mysql_select_db($database_connquestionnaire, $connquestionnaire);
  $Result1 = mysql_query($insertSQL, $connquestionnaire) or die(mysql_error());
}
 
mysql_select_db($database_connquestionnaire, $connquestionnaire);
$query_Recordset1 = "SELECT * FROM questionnaire";
$Recordset1 = mysql_query($query_Recordset1, $connquestionnaire) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<?php
/**
 * On commence par vérifier si le bouton soumettant le formulaire a été
 * cliqué, "envoi" étant l'attribut "name" du bouton "submit"
  */
if(isset($_POST['envoi']))
{
    /* Récupération des données du formulaire */
	$sexe      = isset($_POST['sexe'])      ? $_POST['sexe']            : "";
    $age    = isset($_POST['age'])    ? trim($_POST['age'])    : "";
    $nationalite       = isset($_POST['nationalite'])       ? trim($_POST['nationalite'])       : "";
    $villeresidence = isset($_POST['villeresidence']) ? trim($_POST['villeresidence']) : "";
    $aimer_milkshake      = isset($_POST['aimer_milkshake'])      ? $_POST['aimer_milkshake']            : "";
	$email     = isset($_POST['email'])     ? trim($_POST['email'])     : "";
	$eau       = isset($_POST['eau'])       ? $_POST['eau']             : "";
 
    /**
     * Définition des variables servant au traitement de l'adresse électronique: on utilise ici des expressions régulières.
     */
    $valid = "#^[^-_\.][a-z0-9-_\.]+[^-_\.]@[^-_\.][a-z0-9-_\.]+[^-_\.]\.[a-z]{2,4}$#";
 
    /**
     * Traitement de vérification des champs vides ou invalides (email)
     * Conditions de mauvaises réponses (champ vide par exemple)
     */
 
    if ($age == '' || $nationalite == '' || $villeresidence == '' || $email == '' || !(preg_match($valid, $email)))
    {
        /* Action à adopter */
 
        if ($age == '')
        {
            /* Si le champ "age" est vide, */
            print "<p>Vous n'avez pas précisé votre âge</p>\n";
        }
        if ($nationalite == '')
        {
            /* Si le champ "nationalite" est vide, */
            print "<p>Vous n'avez pas précisé votre nationalité</p>\n";
        }
		 if ($villeresidence == '')
        {
            /* Si le champ "villeresidence" est vide, */
            print "<p>Vous n'avez pas précisé votre ville de résidence</p>\n";
        }
        if(!$email)
        {
            /* Si le champ "adresse électronique" est vide, */
            print "<p>Vous avez omis de mentionner une adresse électronique !</p>\n";
        }
        if(($email) && !(preg_match($valid, $email))) /* Si il y a une adresse inscrite mais invalide */
        {
            /* On vérifie LES DEUX conditions réunies (avec le sugne "&&"): si on ne vérifie que la validité, en ne
            mettant pas d'adresse dans le formulaire, on obtient l'affichage des deux messages, or l'adresse à
            ce moment là n'est pas invalide, elle est absente: le message d'invalidité ne s'applique donc pas. */
            print "<p>L'adresse électronique saisie est invalide.</p>\n";
        }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test validation du formulaire</title>
</head>
 
<body>
<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
<p class="titre">Informations personnelles</p>
<fieldset id="informationspersonnelles">
<p id="sexe"><label>Sexe : </label>
<input type="radio" name="sexe" value="homme"/>Homme<br />
<input type="radio" name="sexe" value="femme" />Femme</p>
<label>Age : </label>
<input name="age" type="text" id="age" size="30" />
<br />
<label>Nationalité : </label>
<input name="nationalité" type="text" id="nationalité" size="30" />
<br />
<label>Ville de résidence : </label>
<input name="villeresidence" type="text" id="villeresidence" size="30" />
<br />
</fieldset>
<p class="titre">Donnez une note de 1 à 10</p>
<fieldset id="noterafraichissement">
<label>Eau :
<select name="eau"> 
<option value="0" selected="selected"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</fieldset>
<p class="titre">Milkshake</p>
<fieldset id="milkshake">
<p id="aimer_milkshake"><label>Aimez-vous les milkshakes ?</label>
<br /><br />
<input name="aimer_milkshake" type="radio" value="beaucoup"/>Beaucoup
<br />
<input type="radio" name="aimer_milkshake" value="assez" />Assez
<br />
<input type="radio" name="aimer_milkshake" value="pastrop"/>Pas trop
<br />
<input type="radio" name="aimer_milkshake" value="pasdutout" />Pas du tout</p>
</fieldset>
<p class="titre">Si vous voulez suivre ce projet, laissez-nous votre email :</p>
<fieldset id="email">
<label>Email : </label>
<input name="email" type="text" id="email" size="30" />
</fieldset><br />
<input type="submit" class="verif" name="envoi" value="Envoyer" />
<input type="hidden" name="MM_insert" value="form1" />
</form>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
Qu'est-ce qui cloche ds ce code?
Dois-je faire une vérif php ou javascript? et quelle est la différence des 2 ?

merci d'avance pour votre aide