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 04/06/2007, 11h02   #1
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 1
Points : 1
Par défaut Probleme avec formulaire :/

Bonjour,

Voici mon problème, quand je clique sur envoyer, il ne se passe strictement rien , mon formulaire me renvoie sur la meme page mais normalement il doit inserer les informations dans ma base de données et les echo doivent s'afficher bref cela ne fonctionne pas

Vous allez me dire vas voir dans les tutoriaux pour corriger ton probleme , c'est fait mais je ne vois toujours pas où est le problème , bref si vous pouviez m'aider ...

Voici un bout de mon code (sachant que la connection à la base est déjà faite :
Code php :
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
 
$action = (isset($_POST['action']))?$_POST['action']:'';
switch($action) {
case "add":
 
$connexion= @mysql_connect($serv,$user,$pass);
if(!$connexion) {echo "Connexion impossible à la base de données <b>$bdd</b> sur le serveur <b>$serv</b><br>Vérifiez les paramètres du fichier conf.php"; exit;}
 
 
if($_POST['Pseudo']==""){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Mdp']==""){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Nom']==""){echo "Vous devez rentrer un nom<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Prenom']==""){echo "Vous devez rentrer un prénom<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Addresse']==""){echo "Vous devez rentrer une addresse<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['CP']==""){echo "Vous devez devez rentrer un code postal<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Ville']==""){echo "Vous devez devez rentrer une ville<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Tel']==""){echo "Vous n'avez pas saisi votre numéro de téléphone<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
 
 
$requete=mysql_db_query($bdd,"select * from clients where Pseudo=\"$_POST\[\'Pseudo\'\]\"",$connexion) or die(mysql_error());
$num=mysql_num_rows($requete);
if($num!=0)
	{
	echo "Ce pseudo existe déjà, veuillez en choisir un autre<br><br><a href=\"javascript:window.history.back()\">Retour</a>";
	}
else
{
	$requete=mysql_db_query($bdd,"select max(Code_cli) from clients",$connexion) or die(mysql_error());
	$idmax=mysql_result($requete,0,"max(Code_cli)");
 
	$idnew=$idmax+1;
	$requete=mysql_db_query($bdd,"insert into clients values ($idnew,\"$_POST\[\'Pseudo\'\]\",\"$_POST\[\'Mdp\'\]\",\"$_POST\[\'Nom\'\]\",\"$_POST\[\'Prenom\'\]\",\"$_POST\[\'Addresse\'\]\",\"$_POST\[\'CP\'\]\",\"$_POST\[\'Ville\'\]\",\"$_POST\[\'Tel\'\]\",\"$_POST\[\'Fax\'\]\",\"$_POST\[\'Societe\'\]\")",$connexion) 
	or die(mysql_error());
 
	echo "Merci, vous êtes bien enregistré. Cliquez <a href=\"..\index.php\">ici</a> pour retourner à l'accueil.";
}	
 
mysql_close($connexion);
 
break;
default :
?>
<center>
<form action='Inscriptions.php' method="POST" name="action" value="add">  <p> 
Login*<input type="text" name="Pseudo" size="25" ><br>
Mot de passe*<input type="password" name="Mdp"  size="25" ><br>
Nom*<input type="text" name="Nom" size="25"  ><br>
Prénom*<input type="text" name="Prenom"  size="25" ><br>
Addresse*<input type="text" name="Addresse"  size="25" ><br>
Code Postal* <input type="text" name="CP" size="25" ><br>
Ville*<input type="text" name="Ville" size="25" ><br>
Téléphone*<input type="text" name="Tel" size="25" ><br>
Fax<input type="text" name="Fax" size="25" ><br>
Societé<input type="text" name="Societe" size="25" >	  <br>
 
<br><br><br>
<p align="center" ><font size="1"><i> Les champs comportant un * sont obligatoires</i></font></p>
<br>	  
 
	  <input type="submit" ><br >
</center>	  	  
</form>
<?
break;
}
?>
Hulrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 11h05   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
je pense que le problème vient du fait que "action" ne vaut jamais add. Il faut que ton action soit un champ input de type hiddent dans ton formulaire (ou mettre le nom action a ton submit, au choix) mais pas que ca soit dans la balise <form ... />
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 11h20   #3
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451


Comme le dit koopajah, le nom de ton formulaire N'EST PAS une variable transmise par post. Pour coder ses suggestions :
Code html :
1
2
3
4
5
 
//champ caché
<input type="hidden" name="action" value="add">
// ou bouton submit :
<input type="submit" name="action" value="add">

Par ailleurs, je te conseille de n'utiliser le switch-case que si $action peut avoir plusieurs valeurs. Si vraiment tu as besoin d'utiliser des case, n'oublie les {} autour des blocs
Code php :
1
2
3
4
5
6
7
8
9
10
11
switch($action) {
  case "add" : 
   {
    ...
   }
   break
  default :
   {
    ...
   }
}
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 11h23   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Citation:
Envoyé par Celira
Par ailleurs, je te conseille de n'utiliser le switch-case que si $action peut avoir plusieurs valeurs. Si vraiment tu as besoin d'utiliser des case, n'oublie les {} autour des blocs
Pourquoi mettre des {} autour de chaque "case" ?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 11h27   #5
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 1
Points : 1
Merci ca marche, mais maintenant ce qui rentre dans chacun de mes champs dans ma base de données c'est : Array['Pseudo'] , Array['Mdp'] , etc

Et donc au bout de la deuxieme inscriptions , ca me met le pseudo existe deja
Hulrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 11h51   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
JE remplacerai ca :
Code php :
$requete=mysql_db_query($bdd,"select * from clients where Pseudo=\"$_POST\[\'Pseudo\'\]\"",$connexion) or die(mysql_error());

par ca
Code php :
$requete=mysql_db_query($bdd,"select * from clients where Pseudo='" .$_POST['Pseudo']  "'",$connexion) or die(mysql_error());

et idem pour les autres lignes qui utilisent $_POST[] dans une requete.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h03   #7
Membre du Club
 
Inscription : novembre 2004
Messages : 151
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : novembre 2004
Messages : 151
Points : 69
Points : 69
bonjour,

Personnellement pour plus de clarté j'écrirais les requete avec des simples quotes ...
ca sert à rien d'écrire avec des doubles.
AsQuel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h06   #8
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Comment ça, ca sert a rien ?
Il faut bien mettre des quotes autour de la requete, ET des quote autour de chaque valeur a insérer dans la table (si c'est du texte).

Donc je trouve plus clair ca :
Code :
"Select * FROM matable WHERE monchamp = '". $mavaleur . "'";
Que ca :
Code :
'Select * FROM matable WHERE monchamp = "'. $mavaleur . '"';
Après c'est une question d'habitude mais je vois pas en quoi ca ne sert a rien les quote.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h16   #9
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 1
Points : 1
Les quotes sont censé remplacer les \ ?

Car le code que tu as filé marche pas
Hulrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h19   #10
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
ca veut dire quoi "ne marche pas"?
t'as une erreur sQL? ca te met pas les bonnes données dans la base?

PArce que tu peux voir que dans mon exemple j'ai oublié un . juste avant le "'".

Le but est effectivement de remplacer tes \ qui ne fonctionnent pas par quelquechose qui marche. Jusqu'a maintenant ce que faisait ta requete c'était de récupèrer la valeur de $_POST (donc Array) et ca t'affichait ensuite ['Pseudo'] apparemment. Or tu veux la valeur de $_POST['Pseudo'] donc le mieux c'est de sortir cette variable des " " pour qu'elle soit analysée correctement.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h35   #11
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 1
Points : 1
Ca marche avec le point que tu avais oublié mais c'est le meme problème, ca me rentre dans ma base Array['Pseudo'] , ...

Et au passage je te remercie de te pencher sur mon problème
Hulrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h46   #12
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Tu peux remontrer ton code modifié s'il te plait?
Et au passage, tu as bien vidé la base entre temps?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h52   #13
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 1
Points : 1
Oui j'ai vidé ma base

Voici mon code :

Code php :
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
$action = (isset($_POST['action']))?$_POST['action']:'';
switch($action) {
case "Envoyer":
 
$connexion= @mysql_connect($serv,$user,$pass);
if(!$connexion) {echo "Connexion impossible à la base de données <b>$bdd</b> sur le serveur <b>$serv</b><br>Vérifiez les paramètres du fichier conf.php"; exit;}
 
 
if($_POST['Pseudo']==""){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Mdp']==""){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Nom']==""){echo "Vous devez rentrer un nom<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Prenom']==""){echo "Vous devez rentrer un prénom<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Addresse']==""){echo "Vous devez rentrer une addresse<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['CP']==""){echo "Vous devez devez rentrer un code postal<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Ville']==""){echo "Vous devez devez rentrer une ville<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($_POST['Tel']==""){echo "Vous n'avez pas saisi votre numéro de téléphone<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
 
 
$requete=mysql_db_query($bdd,"select * from clients where Pseudo='" .$_POST['Pseudo']."'",$connexion) or die(mysql_error());
 
$num=mysql_num_rows($requete);
if($num!=0)
	{
	echo "Ce pseudo existe déjà, veuillez en choisir un autre<br><br><a href=\"javascript:window.history.back()\">Retour</a>";
	}
else
{
	$requete=mysql_db_query($bdd,"select max(Code_cli) from clients",$connexion) or die(mysql_error());
	$idmax=mysql_result($requete,0,"max(Code_cli)");
 
	$idnew=$idmax+1;
	$requete=mysql_db_query($bdd,"insert into clients values ($idnew,\"$_POST\[\'Pseudo\'\]\",\"$_POST\[\'Mdp\'\]\",\"$_POST\[\'Nom\'\]\",\"$_POST\[\'Prenom\'\]\",\"$_POST\[\'Addresse\'\]\",\"$_POST\[\'CP\'\]\",\"$_POST\[\'Ville\'\]\",\"$_POST\[\'Tel\'\]\",\"$_POST\[\'Fax\'\]\",\"$_POST\[\'Societe\'\]\")",$connexion) 
	or die(mysql_error());
 
	echo "Merci, vous êtes bien enregistré. Cliquez <a href=\"index.php\">ici</a> pour retourner à l'accueil.";
}	
 
mysql_close($connexion);
 
break;
default :
?>
<center>
<form action='Inscriptions.php' method="POST" name="action" value="add">  
<table><font color ="#346065">
        <tr>
		    <td> Login*</td>
			<td><input type="text" name="Pseudo" size="25" ></td>
		</tr>
		<tr>
		   <td>Mot de passe*</td>
		   <td><input type="password" name="Mdp"  size="25" ></tdW
		</tr>
		<tr>
		     <td>Nom*</td>
			 <td><input type="text" name="Nom" size="25"  ></td>
		</tr>
		<tr>
		    <td>Prénom*</td>
			<td><input type="text" name="Prenom"  size="25" ></td>
		</tr>
		<tr>
		     <td>Addresse*</td>
			 <td><input type="text" name="Addresse"  size="25" ></td>
		</tr>
		<tr>
		    <td>Code Postal*</td>
			<td><input type="text" name="CP" size="25" ></td>
		</tr>
		<tr>
		      <td>Ville*
			  <td><input type="text" name="Ville" size="25" ></td>
		</tr>
		<tr>
		      <td>Téléphone*</td>
			  <td><input type="text" name="Tel" size="25" ></td>
		</tr>
		<tr>
		      <td>Fax</td>
			  <td><input type="text" name="Fax" size="25" ></td>
		</tr>
		<tr>
		       <td>Societé</td>
			   <td><input type="text" name="Societe" size="25" ></td>
		</tr>
</table></font>
<br><br><br>
<p align="center" ><font size="1"><i> Les champs comportant un * sont obligatoires</i></font></p>
<br>	  
 
	  <input type="submit" name="action" value="Envoyer"><br >
</center>	  	  
</form>
<?
break;
}
?>
Hulrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h59   #14
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Si tu regardes ta requete d'insertion dans la base, tu verras que tu n'as pas remplacé les $_POST[] proprement, tu as laissé les \ c'est normal que ca ne fonctionne tjs pas

(penses a mettre ton code en forme avec le bouton # pour qu'il soit lisible, stp!
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 13h26   #15
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 1
Points : 1
Désolé je ne savait pas pour les balises # ^^

Sinon qu'est-ce que tu veux que je fasse sur cette ligne? :

Code :
1
2
$requete=mysql_db_query($bdd,"insert into clients values ($idnew,\"$_POST\[\'Pseudo\'\]\",\"$_POST\[\'Mdp\'\]\",\"$_POST\[\'Nom\'\]\",\"$_POST\[\'Prenom\'\]\",\"$_POST\[\'Addresse\'\]\",\"$_POST\[\'CP\'\]\",\"$_POST\[\'Ville\'\]\",\"$_POST\[\'Tel\'\]\",\"$_POST\[\'Fax\'\]\",\"$_POST\[\'Societe\'\]\")",$connexion) 
	or die(mysql_error());
Hulrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 13h39   #16
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
La meme chose qu'avant, puisque ton problème est que le $_POST['qqch'] est mal interprété il faut faire la modif partout :

Code :
1
2
$requete=mysql_db_query($bdd,"insert into clients values (" . $idnew . ",'" . $_POST['Pseudo'] ."','" . $_POST['Mdp'] ."','" . $_POST['Nom'] ."')",$connexion) 
	or die(mysql_error());
J'ai pas remis tous les champs, mais tu le peux le faire tout seul, et faut faire ca partout où tu as $_POST.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 13h43   #17
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Pour résumer : il faut que dans ta requête les valeurs soient entre quotes.
Ta requête étant une chaine de caractères, elle doit elle-même être entre quotes, tout en permettant l'interprétation des variables. Concernant ce dernier point, je te conseille d'aller voir ce sujet où le problème était assez proche du tien. (parce que je n'ai pas le courage de refaire l'explication sur les ", ' et autres concaténations )

Bon courage !
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 13h53   #18
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 1
Points : 1
Merci ca marche, juste une derniere question , dans mon champs addresse , dans ma base g mis du type varchar et quand dans mon form je rentre une addresse avec une apostrophe (ex : rue de l'or ) Ca fais foiré mon insertion
Hulrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 14h39   #19
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Ca empêche l'insertion de fonctionner, c'est un peu mieux que "ca fais foiré". Il faut que tu remplaces les caractères spéciaux (dont ') par \'. Pour ca il y a la fonction mysql_real_escape_string().
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 15h41   #20
Invité de passage
 
Inscription : juin 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 8
Points : 1
Points : 1
C'est bon ca marche , merci beaucoup à ceux qui m'ont aider, en particulier koopajah merci beaucoup

La prochaine fois c'est moi qui vous aide ... enfin essaye xD

Problème résolu , encore merci

Amicalement Hulrick
Hulrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h36.


 
 
 
 
Partenaires

Hébergement Web