Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 22/08/2011, 15h28   #1
Membre à l'essai
 
pat lacaze
Inscription : décembre 2009
Messages : 105
Détails du profil
Informations personnelles :
Nom : pat lacaze

Informations forums :
Inscription : décembre 2009
Messages : 105
Points : 22
Points : 22
Par défaut erreur session ou bdd ?

bonjour,
je suis en train d'apprendre la bdd et pour cela j'ai créé un formulaire qui doit incrémenter une bdd en local
hors cela ne marche pas
je ne trouve pas mon erreur

voici mon script php
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
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
<?php 
 
session_start();
 
// connexion à la base
 
 
$db = mysql_connect('localhost','root','')  or die('Erreur de connexion '.mysql_error());
 
// sélection de la base  
 
mysql_select_db('bienvenu',$db)  or die('Erreur de selection '.mysql_error());
 
 
//Initialisation var
 
$Msg='';
$id=$_REQUEST['id'];
$admin=$_POST['admin'];
$motpasse=$_POST['motpasse'];
$age=$_POST['age'];
$sitfam=$_POST['sitfam'];
$tel=$_POST['tel'];
$email=$_POST['email'];
$sexe=$_POST['sexe'];
 
 
 
	//Mise en session des valeurs du formulaire		
	while ( list($cle, $val) = each( $_POST ) ){ 		 
		$_SESSION[$cle] =$_POST[$cle]; 		
	}		
 
	//Si validation du formulaire
	if(isset($_POST['Submit'])){
 
		//Verif champ obligatoire
		if(empty($_POST['admin'])){		
			$Msg .= "<BR>Erreur de saisie : Vous n'avez pas précisé votre code administrateur !";				
		}
		if(empty($_POST['motpasse'])){		
			$Msg .= "<BR>Erreur de saisie : Vous n'avez pas précisé votre mot de passe !";				
		}
		if(empty($_POST['age'])){		
			$Msg .= "Erreur de saisie : Vous n'avez pas précisé votre age !";			
		}		
		if(empty($_POST['sitfam'])){		
			$Msg .= "<BR>Erreur de saisie : Vous n'avez pas précisé votre situation familiale !";				
		}
		if(empty($_POST['tel'])){		
			$Msg .= "<BR>Erreur de saisie : Vous n'avez pas précisé votre N° de téléphone !";				
		}
		if( !eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$", $_POST['email']) ){		
			$Msg .= "<BR>Votre adresse email semble invalide !";				
		}
		if(empty($_POST['sexe'])){		
			$Msg .= "<BR>Erreur de saisie : Vous n'avez pas précisé votre sexe !";				
		}
 
}
 
 
// Aucun champ n'est vide, on peut enregistrer dans la table
else     
    {
 
 
    // on écrit la requête sql
    $sql = "INSERT INTO client(id,admin,motpasse,age,sitfam,tel,email,sexe) 
	VALUES('','$admin','$motpasse','$age','$sitfam','$tel','$email','$sexe')";
 
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
	$Msg="dossier enregistre";
 
 
 
    mysql_close($db);  // on ferme la connexion
 
header("location:client.php");
    }
 
 
 
	//Menu select age	
	$Printage = array(
		"moins de 25 ans" => "1",
		"de 25 à 50 ans" => "2",
		"+ de 50 ans" => "3",
	);
 
	foreach($Printage as $cle=>$valeur){ 
		if (isset($_SESSION['age']) && $_SESSION['age']== $valeur && !empty($_SESSION['age'])  ){
			$Printage.= "<option value=\"".$valeur."\" selected>".$cle."</option>\n";
		}else{
			$Printage.= "<option value=\"".$valeur."\">".$cle."</option>\n";
		}
	}
 
	//Menu select sitfam	
	$Printsitfam = array(
		"Vie seul(e)" => "1",
		"En couple" => "2",
	);
 
	foreach($Printsitfam as $cle=>$valeur){ 
		if (isset($_SESSION['sitfam']) && $_SESSION['sitfam']== $valeur && !empty($_SESSION['sitfam'])  ){
			$Printsitfam.= "<option value=\"".$valeur."\" selected>".$cle."</option>\n";
		}else{
			$Printsitfam.= "<option value=\"".$valeur."\">".$cle."</option>\n";
		}
	}
 
	//Menu select sexe	
	$Printsexe = array(
		"masculin" => "1",
		"féminin" => "2",
	);
 
	foreach($Printsexe as $cle=>$valeur){ 
		if (isset($_SESSION['sexe']) && $_SESSION['sexe']== $valeur && !empty($_SESSION['sexe'])  ){
			$Printsexe.= "<option value=\"".$valeur."\" selected>".$cle."</option>\n";
		}else{
			$Printsexe.= "<option value=\"".$valeur."\">".$cle."</option>\n";
		}
	}
 
 
	?>
et mon formulaire
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
	<div id="definition">
            <td height="525" align="center" valign="top"><form action="" method="post" name="form1"  id="form1">
                <p>
 
<?php echo $Msg ?>
  <table width="80%" border="0" align="center" cellpadding="5" cellspacing="0">
    <tr>
      <td align="center"><table width="500" border="0" cellpadding="5" cellspacing="0">
 
 
 
 
                  <tr>
                    <td align="right" class="style11">Votre Age* : </td>
                    <td align="left"  class="style13"><select name="age" id="age">
                        <option value="">Selectionnez</option>
                        <?php echo $Printage ?>
                    </select></td>
                  </tr>		
 
 
                  <tr>
                    <td align="right" class="style11">votre Situation familiale* : </td>
                    <td align="left"  class="style13"><select name="sitfam" id="sitfam">
                        <option value="">Selectionnez</option>
                        <?php echo $Printsitfam ?>
                    </select></td>
                  </tr>	
 
        <tr>
          <td align="right">votre téléphone* :</td>
          <td align="left"><input name="tel" type="text" class="Select" id="tel" value="<?php  if (isset($_SESSION['tel'])){ echo htmlentities( stripslashes($_SESSION['tel']));} ?>" size="12" /></td>
        </tr>
 
        <tr>
          <td align="right">votre E-Mail* :</td>
          <td align="left"><input name="email" type="text" class="Select" id="email" value="<?php  if (isset($_SESSION['email'])){ echo htmlentities( stripslashes($_SESSION['email']));} ?>" size="40" /></td>
        </tr>
 
                  <tr>
                    <td align="right" class="style11">votre Sexe * : </td>
                    <td align="left"  class="style13"><select name="sexe" id="sexe">
                        <option value="">Selectionnez</option>
                        <?php echo $Printsexe ?>
                    </select></td>
                  </tr>	
 
        <tr>
          <td align="right">Votre code adminstrateur *:</td>
        <td align="left"><input name="admin" type="text" class="Select" id="admin" value="<?php  if (isset($_SESSION['admin'])){ echo htmlentities( stripslashes($_SESSION['admin']));} ?>" size="6" /></td>
 
          </tr>
        <tr>
          <td align="right">Votre mot de passe :</td>
        <td align="left"><input name="motpasse" type="password" class="Select" id="motpasse" value="<?php  if (isset($_SESSION['motpasse'])){ echo htmlentities( stripslashes($_SESSION['motpasse']));} ?>" size="6" /></td>
 
          </tr>
        <tr>
          <td colspan="2" align="center"><input type="submit" name="Submit" value="Envoyer" /></td>
        </tr>
 
        <tr>        </tr>
      </table></td>
    </tr>
  </table>
</form></div>
merci de votre aide
kogoi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 15h48   #2
Membre Expert
 
Avatar de David Guillot
 
Homme David Guillot
Chef de projet en SSII
Inscription : mars 2004
Messages : 879
Détails du profil
Informations personnelles :
Nom : Homme David Guillot
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 879
Points : 1 149
Points : 1 149


Merci de nous dire ce que tu obtiens, car "ça marche pas" ne nous aide pas beaucoup...
__________________
Avant de poser une question ici :

Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé
David Guillot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 16h10   #3
Membre à l'essai
 
pat lacaze
Inscription : décembre 2009
Messages : 105
Détails du profil
Informations personnelles :
Nom : pat lacaze

Informations forums :
Inscription : décembre 2009
Messages : 105
Points : 22
Points : 22
Par défaut formulaire ou bdd

autant pour moi
lorsque je valide le formulaire, la bdd n'est pas incrémentée et je ne passe pas au fichier suivant : je reste au formulaire initial.

les champs sont bien pré remplis mais si le champ n'est pas valide (email non conforme par ex) mon message d'erreur n'apparait pas.

l'erreur vient très probablement du formulaire , mais je ne trouve pas
kogoi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 16h17   #4
Membre Expert
 
Avatar de David Guillot
 
Homme David Guillot
Chef de projet en SSII
Inscription : mars 2004
Messages : 879
Détails du profil
Informations personnelles :
Nom : Homme David Guillot
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 879
Points : 1 149
Points : 1 149
Après avoir regardé ton code je dirais que le lancement de l'enregistrement dans la base de données n'est pas déclenché au bon moment (tu le déclenches sur le "sinon" d'un "si j'ai validé mon formulaire"....). Remonte-le dans le if et place-le dans un "SI $MSG est vide"

Sinon 2 petites remarques liées à ton code :
- Mets tes messages d'erreurs dans un tableau qu'ensuite tu splittes à l'affichage avec des <br/> (et non pas <BR>). C'est plus propre, ça évite de balancer du code HTML au beau milieu d'un script de traitement
- Protège les données que tu insères en base, pour éviter les failles d'injection SQL (mysql_escape_string(), htmlspecialchars(), etc.)
__________________
Avant de poser une question ici :

Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé
David Guillot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 16h39   #5
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
Pour ajouter aux conseils de torvalds17 ...

- (je parle juste du formulaire)
Mettre une bonne identation à ton code (passages à la ligne, tabulations, ...) te permettrait d'y voir plus clair (et de constater que tu as des balises en trop, notamment)
- les <table> (surtout imbriquées), ... ca ne se fait plus. Sauf pour les données tabulaires.
Les div et CSS sont là pour ca (mise en page).
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 16h41   #6
Membre à l'essai
 
pat lacaze
Inscription : décembre 2009
Messages : 105
Détails du profil
Informations personnelles :
Nom : pat lacaze

Informations forums :
Inscription : décembre 2009
Messages : 105
Points : 22
Points : 22
Par défaut formulaire ou bdd

bien vu
tout fonctionne
je vais également tenir compte de tes conseils
merci pour ta réponse rapide et efficace
kogoi 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 09h43.


 
 
 
 
Partenaires

Hébergement Web