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 25/01/2008, 15h03   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 16
Points : 4
Points : 4
Par défaut Vérification des données d'un formulaire

Bonjour,

J'essaie de créer un formulaire qui vérifie si l'utilisateur a bien entré les champs demandés mais ça ne marche pas. Mon code est le suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<head>
<title>formulaire</title>
<head>
<body>
<form name="formulaire" method="post" action="insert.php">
<TABLE BORDER=0>
<TR>
	<TD>Nom</TD>
	<TD>
	<INPUT type="text" name="nom">
	</TD>
</TR>
</TABLE>
</FORM>
</body>
</html>
Et la page index.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$nom = $_POST['nom'];
function taille_variable($nom,$taille_min=1,$taille_max=10){
global $_POST;
if(!isset($_POST['$nom'])){
// valeur non définie
return false;
}elseif (strlen($_POST['$nom'])<'$taille_min'){
return False;
}elseif(strlen($_POST['$nom'])>'$taille_max'){
return FALSE;
}
return True;
}
mysql_connect('localhost','root','') or die ("erreur de connexion");
mysql_select_db('base') or die ("erreur de connexion base");
mysql_query("INSERT INTO liste VALUES ('','$nom')");
mysql_close();
?>
Qu'est-ce qui cloche ? Merci.
Cédric22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 15h10   #2
Membre régulier
 
Inscription : octobre 2007
Messages : 286
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 286
Points : 96
Points : 96
A ta place j'utiliserai du Java script et je limiterai, en html, ton input avec : . Sinon en regardant ton code peut-etre qu'écrire false avec des majuscules ne fonctionne pas. Et aussi dans ton forme tu veux que cela aille a insert.php et ta page tu l'as nomme index.php
kev484 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 15h25   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 25
Points : 12
Points : 12
Code :
1
2
3
4
 
}elseif (strlen($_POST['$nom'])<'$taille_min'){
 
}elseif(strlen($_POST['$nom'])>'$taille_max'){
Le problème vient de là. Supprimer les quote autour des variable sinon, php ne va pas regarder leurs valeurs, mais les considérés comme chaîne de caractères
nicolas54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 14h07   #4
Invité de passage
 
Inscription : janvier 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 16
Points : 4
Points : 4
J'ai enlevé les quote et mis false en minuscules mais ça ne marche toujours pas...
Cédric22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 21h11   #5
Membre régulier
 
Inscription : octobre 2007
Messages : 286
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 286
Points : 96
Points : 96
Tiens essaies sa pour le php :
Code :
1
2
3
4
5
6
7
8
9
<?php
$connexion = mysql_pconnect('localhost','root','') or die ("erreur de connexion");
mysql_select_db("base",$connexion) or die ("erreur de connexion base");
if(isset($_POST['nom']) && !empty($_POST['nom'])){
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
}
mysql_query("INSERT INTO liste VALUES ('','$nom')");
mysql_close();
?>
Et pour le html :
Code :
<INPUT type="text" name="nom" maxlength="10">
Dis moi si cela marche. Je ne garantie rien.
kev484 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 11h04   #6
Invité de passage
 
Inscription : janvier 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 16
Points : 4
Points : 4
Non, hélas ça n'a pas l'air de marcher...
Cédric22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 12h35   #7
Invité de passage
 
Inscription : janvier 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 16
Points : 4
Points : 4
J'ai essayé d'une autre façon, en insérant du javascript dans le head de ma page html mais ça n'a pas l'air de marcher non plus. Est-ce que quelqu'un voit l'erreur ?

Code HTML :
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
<html>
<head>
<title>formulaire</title>
<script type="text/javascript" language}"javascript">
<!function verification()
{if(document.formulaire.nom.value==""){
document.formulaire.nom.focus();
return false;
}
else
return true;
}
//>
</script>
<head>
<body>
<form name="formulaire" method="post" action="insert8.php">
<TABLE BORDER=0>
<TR>
	<TD>Nom</TD>
	<TD>
	<INPUT type="text" name="nom" maxlength="10">
	</TD>
</TR>
</TABLE>
<input type="submit" name="submit" value="inserer">
</FORM>
</body>
</html>
Cédric22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 17h22   #8
Membre régulier
 
Inscription : octobre 2007
Messages : 286
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 286
Points : 96
Points : 96
Enre regardant ton code vite fait tu as fait plein d'erreur de frappe: tu as mis } au lieu de = dans la déclaration du script. Enuiste ta balise head n'est pas fermé. Pour ce qui est de la fonction je te dis sa tout a l'heure et le php aussi car ce que je t'ai donné fonctionne.
kev484 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 17h57   #9
Membre régulier
 
Inscription : octobre 2007
Messages : 286
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 286
Points : 96
Points : 96
Donc voila ce que je te propose : pour le html :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>formulaire</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="formulaire.js" type="text/javascript"></script>
</head>
<body>
<form name="formulaire" method="post" action="insert8.php" onsubmit="return verif();">
<table border=0>
<tr>
	<td>Nom</td>
	<td>
	<input type="text" name="nom" id="nom" maxlength="10" />
	</td>
</tr>
</table>
<input type="submit" name="submit" value="inserer" />
</form>
</body>
</html>
Pour le php que tu appelles insert8.php
Code :
1
2
3
4
5
6
7
8
9
<?php
$connexion = mysql_pconnect('localhost','root','') or die ("erreur de connexion");
mysql_select_db("base",$connexion) or die ("erreur de connexion base");
if(isset($_POST['nom']) && !empty($_POST['nom'])){
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
}
mysql_query("INSERT INTO liste VALUES ('','$nom')");
mysql_close();
?>
Et le Java script :
Code :
1
2
3
4
5
6
7
8
9
10
11
function verif()
{
  if(document.getElementById('nom').value == "")
  {
    alert("Le champ doit etre rempli.");
    return false;
  }else
  {
    return true;
  }
}
que tu enregistres sous formulaire.js.
Normalement tout devrait fonctionner.
kev484 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 18h58   #10
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
hello

Je changerais ces éléments :

Code :
}elseif (strlen($_POST['$nom'])<'$taille_min'){
en

Code :
}elseif (strlen($_POST['nom']) < $taille_min){
--> $_POST['nom'] : sans le $, ce n'est une variable c'est l'index POST nom.
--> enlever les quotes autour de $taille_min car les variables entre quotes ne sont pas interprétées.

Fait de même pout tout ton code (fonction)

Ensuite on verra...
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 16h57   #11
Invité de passage
 
Inscription : janvier 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 16
Points : 4
Points : 4
Merci pour ce code. Effectivement il marche. Par contre, j'ai enlevé le $ et les quote mais ça veut pas marcher :-(
Cédric22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 18h44   #12
Membre régulier
 
Inscription : octobre 2007
Messages : 286
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 286
Points : 96
Points : 96
Ba utilises alors mon code car tu n'as pas besoin des trucs qui ne fonctionnent pas. Et pas de soucis pour l'aide.
kev484 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 12h52   #13
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
Hello,

Tu ne fait pas appel à ta fonction dans ton code : tu la déclare, mais sans y faire appel. Egalement : est ce normal que dans ton formulaire tu n'ai pas de bouton de soumission ?

Mais bon ce n'est pas tout car j'ai essayé de faire fonctionner ton code hier soir pendant au moins 20 minutes sans succès...

Il est en général déconseillé de faire les vérifications d'un formulaire uniquement en javascript : que se passe t'il si la personne a désactivé le javascript !

Pourquoi une fonction ? Il y a plus simple, genre :

Code :
1
2
3
4
5
6
7
8
 
if (empty($nom_form_ann)) {
    $err_vide[] = "Le champ de saisie nommé <em>'Nom'</em> est vide, ce champ est à remplir obligatoirement.\n";
}
 
if (empty($err_vide)) {
    //execution de ton code...
}
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys 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 07h20.


 
 
 
 
Partenaires

Hébergement Web