Messagerie internet en php

Résolu/Fermé
Manones - 19 avril 2012 à 14:28
 Manones - 21 avril 2012 à 01:55
Bonjour!

Je suis en train de créer une fonction sur mon site internet pour que les utilisateurs puissent modifier les informations de leur profil après les avoir enregistrées. J'ai suivit un tuto sur supportduweb.com que j'ai adapté à mon cas, mais visiblement j'ai du faire une erreur que je n'arrive pas à retrouver!
Ce qu'il se passe c'est que quand je clique sur "valider" ma page reste sur le formulaire et réinitialise les informations que je viens modifiées... Bien évidement elles ne s'enregistrent pas non plus dans la base de donnée. Je suis dessus depuis plusieurs jours maintenant et j'ai beau relire, relire et relire mon code je n'arrive pas à trouver mon erreur! Je commence à être légèrement désespérée. Est-ce que quelqu'un pris de pitié pourrait m'aider ? :D

Avec un énorme merci par avance pour celui ou celle qui saura m'aider!


Voici mon code : edit_profile.php

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		
		<link rel="stylesheet" href="style_home.css" />

        <title>Edit profile</title>
    </head>
    <body>

<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', ' root', '******');

// on sélectionne la base
mysql_select_db('majorproject',$db);


// On prolonge la session
session_start();


//On verifie si lutilisateur est connecte
if(isset($_SESSION['email']))
{


/*HEADER*/
	include('header.php');


/*MENU*/
	include('menu.php');
	
	
	?>
	<div id="info_profile">
	<?php	


	//On verifie si le formulaire a ete envoye
	if(isset($_POST['id'], $_POST['firstname'], $_POST['surname'], $_POST['email'], $_POST['password'], $_POST['pass2'], $_POST['gender'], $_POST['age'], $_POST['current_country'], $_POST['current_city'], $_POST['origin_country'], $_POST['exchange_situation'], $_POST['description']))
	{
		//On enleve lechappement si get_magic_quotes_gpc est active
		if(get_magic_quotes_gpc())
		{
			$_POST['firstname'] = stripslashes($_POST['firstname']);
			$_POST['surname'] = stripslashes($_POST['surname']);
			$_POST['email'] = stripslashes($_POST['email']);
			$_POST['password'] = stripslashes($_POST['password']);
			$_POST['pass2'] = stripslashes($_POST['pass2']);
			$_POST['gender'] = stripslashes($_POST['gender']);
			$_POST['age'] = stripslashes($_POST['age']);
			$_POST['current_country'] = stripslashes($_POST['current_country']);
			$_POST['current_city'] = stripslashes($_POST['current_city']);
			$_POST['origin_country'] = stripslashes($_POST['origin_country']);
			$_POST['exchange_situation'] = stripslashes($_POST['exchange_situation']);
			$_POST['description'] = stripslashes($_POST['description']);
		}
		//On verifie si le mot de passe et celui de la verification sont identiques
		if($_POST['password']==$_POST['pass2'])
		{

		//On verifie si lemail est valide
		if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_'{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_'{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
				{
		//On echape les variables pour pouvoir les mettre dans une requette SQL
		$firstname = mysql_real_escape_string($_POST['firstname']);
		$password = mysql_real_escape_string($_POST['surname']);
		$email = mysql_real_escape_string($_POST['email']);
		$pass2 = mysql_real_escape_string($_POST['pass2']);
		$gender = mysql_real_escape_string($_POST['gender']);
		$age = mysql_real_escape_string($_POST['age']);
		$current_country = mysql_real_escape_string($_POST['current_country']);
		$current_city = mysql_real_escape_string($_POST['current_city']);
		$origin_country = mysql_real_escape_string($_POST['origin_country']);
		$exchange_situation =mysql_real_escape_string($_POST['exchange_situation']);
		$description = mysql_real_escape_string($_POST['description']);
					
		//On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
		$dn = mysql_fetch_array(mysql_query('select count(*) as nb from users where email="'.$email.'"'));
		//On verifie si le pseudo a ete modifie pour un autre et que celui-ci n'est pas deja utilise
		if($dn['nb']==0 or $_POST['email']==$_SESSION['email'])
		{
						//On modifie les informations de lutilisateur avec les nouvelles
						if(mysql_query('update users set firstname="'.$firstname.'", surname="'.$surname.'", email="'.$email.'", password="'.$password.'", gender="'.$gender.'", age="'.$age.'", current_country="'.$current_country.'", current_city="'.$current_city.'", origin_country="'.$origin_country.'", exchange_situation="'.$exchange_situation.'", description="'.$description.'" where id="'.mysql_real_escape_string($_SESSION['userid']).'"'))
						{
							//Si ca a fonctionne, on naffiche pas le formulaire
							$form = false;
							//On supprime les sessions email et userid au cas ou il aurait modifie son email
							
							// On le vide intégralement
							$_SESSION['email']= array();
							$_SESSION['userid']= array();
							// Destruction de la session
							session_destroy();
							// Destruction du tableau de session
							unset($_SESSION['email']);
							unset ($_SESSION['userid']);
						
							?>
							Your profile has been actualized. You need to reconnect yourself.<br />
							<a href="connect.html">Connect</a>
							<?php
						}
						else
						{
							//Sinon on dit quil y a eu une erreur
							$form = true;
							$message = 'An error occurred when changes.';
						}
					}
					else
					{
						//Sinon, on dit que le pseudo voulu est deja pris
						$form = true;
						$message = 'An account already exist for this email.';
					}						
				}
				else
				{
					//Sinon, on dit que lemail nest pas valide
					$form = true;
					$message = 'Your email is not valid.';
				}
		}
		else
		{
			//Sinon, on dit que les mots de passes ne sont pas identiques
			$form = true;
			$message = 'Passwords are not the same.';
		}
	}
	else
	{
		$form = true;
	}
if($form)
{
	//On affiche un message sil y a lieu
	if(isset($message))
	{
		echo '<strong>'.$message.'</strong>';
	}
	//Si le formulaire a deja ete envoye on recupere les donnes que lutilisateur avait deja insere
	if(isset($_POST['firstname'],$_POST['surname'],$_POST['email'],$_POST['password'],$_POST['email'],$_POST['gender'],$_POST['current_country'],$_POST['current_city'],$_POST['exchange_situation']))
	{
		$email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');
		if($_POST['password']==$_POST['pass2'])
		{
			$password = htmlentities($_POST['password'], ENT_QUOTES, 'UTF-8');
		}
		else
		{
			$password = '';
		}
		$email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');
	}
	else
	{
		//Sinon, on affiche les donnes a partir de la base de donnee
		$e=$_SESSION['email'];
		$rrr=mysql_query('SELECT firstname,surname,email,password,gender,age,current_country,current_city,origin_country,exchange_situation,description FROM users where email="'.$e.'"');
		$dnn = mysql_fetch_array($rrr);
		$firstname = htmlentities($dnn['firstname'], ENT_QUOTES, 'UTF-8');
		$surname = htmlentities($dnn['surname'], ENT_QUOTES, 'UTF-8');
		$email = htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8');
		$password = htmlentities($dnn['password'], ENT_QUOTES, 'UTF-8');
		$gender = htmlentities($dnn['gender'], ENT_QUOTES, 'UTF-8');
		$age = htmlentities($dnn['age'], ENT_QUOTES, 'UTF-8');
		$current_country = htmlentities($dnn['current_country'], ENT_QUOTES, 'UTF-8');
		$current_city = htmlentities($dnn['current_city'], ENT_QUOTES, 'UTF-8');
		$origin_country = htmlentities($dnn['origin_country'], ENT_QUOTES, 'UTF-8');
		$exchange_situation = htmlentities($dnn['exchange_situation'], ENT_QUOTES, 'UTF-8');
		$description = htmlentities($dnn['description'], ENT_QUOTES, 'UTF-8');
	}
	
	//On affiche le formulaire
	?>
	<div class="content">
		<form action="edit_profile.php" method="post">
			You can re-edit your informations:<br />
			<div class="center">
				<table>
					<tr>
						<td><label for="firstname">Firstname</label></td>
						<td><input type="text" name="firstname" id="firstname" value="<?php echo $firstname; ?>" /></td>
					</tr>				
					<tr>
						<td><label for="surname">Surname</label></td>
						<td><input type="text" name="text" id="surname" value="<?php echo $surname; ?>" /></td>
					</tr>					
					<tr>
						<td><label for="email">Email</label></td>
						<td><input type="text" name="email" id="email" value="<?php echo $email; ?>" /></td>
					</tr>					
					<tr>
						<td><label for="password">Password</label></td>
						<td><input type="password" name="password" id="password" value="<?php echo $password; ?>" /></td>
					</tr>					
					<tr>	
						<td><label for="pass2">Re-enter password</label></td>
						<td><input type="password" name="pass2" id="pass2" value="<?php echo $password; ?>" /></td>
					</tr>					
					<tr>
						<td><label for="gender">Gender</label></td>
						<td><input type="radio" name="gender" id="gender" value="<?php echo $gender; ?>">Female</td>
						<tr>
						<td><input type="radio" name="gender" id="gender" value="<?php echo $gender; ?>">Male</td>
						</tr>
					</tr>					
					<tr>					
						<td><label for="gender">Age</label></td>
						<td><input type="text" name="age" id="age" value="<?php echo $age; ?>" /></td>
					</tr>					
					<tr>					
						<td><label for="current_country">Current country</label></td>
						<td><input type="text" name="current_country" id="current_country" value="<?php echo $current_country; ?>" /></td>
					</tr>					
					<tr>					
						<td><label for="current_city">Current city</label></td>
						<td><input type="text" name="current_city" id="current_city" value="<?php echo $current_city; ?>" /></td>
					</tr>					
					<tr>					
						<td><label for="origin_country">Country of origin</label></td>
						<td><input type="text" name="origin_country" id="origin_country" value="<?php echo $origin_country; ?>" /></td>
					</tr>					
					<tr>					
						<td><label for="exchange_situation">Exchange situation</label>	</td>
						<td><input type="radio" name="exchange_situation" id="exchange_situation" value="<?php echo $exchange_situation; ?>" >In exchange</td>
						<tr>
						<td><input type="radio" name="exchange_situation" id="exchange_situation" value="<?php echo $exchange_situation; ?>" >Was in exchange</td>
						</tr>
						<tr>
						<td><input type="radio" name="exchange_situation" id="exchange_situation" value="<?php echo $exchange_situation; ?>" >Want to be exchange</td>
						</tr>
					</tr>					
					<tr>					
						<td><label for="description">Description</label></td>
						<td>
						<textarea name="message" rows="5" cols="17"><?php echo $description; ?></textarea></td>
					</tr>					
					<tr>					
						<td colspan="2" align="right"><input type="image" id="bouton-submit" src="images/ok.png" onClick="envoie(this.form)"></td>
					<tr>
				</table>
			</div>
		</form>
	</div>
	<?php
}

}
else
{
?>
You need to log in to access this page.<br />
<a href="connect.html">Connect</a>
<?php
}
?>

</div>
		
	</body>
</html>


Encore merci!

13 réponses

Bonjour

Pour commencer...
Dans ton formulaire, tu as <td><input type="text" name="text" id="surname"
Ce ne serait pas plutôt name="surname" ?
Vérifie bien les noms de tous tes champs.
0
En effet.... A avoir le nez dedans on remarque même plus les erreurs bêtes!
J'ai donc vérifié tout les noms des champs et ça me semble bon pour le reste.

Mais selon moi l'erreur se situerait dans la première partie de mon code, parce que il ne m'indique rien quand les deux mots de passe sont différent, il ne me dit jamais que mon email n'est pas valide ou encore qu'un autre utilisateur utilise déjà mon adresse mail.

Autre chose, je viens de tester de remplacer la ligne 136 :
	else
	{
		$form = true;
	}


par
	else
	{
		$form = false;
	}


Et quand je fais ça la page n'affiche plus rien. Ça veut dire que mon erreur vient de la ligne 42 ? :
//On verifie si le formulaire a ete envoye
if(isset($_POST['id'], $_POST['firstname'], $_POST['surname'], $_POST['email'], $_POST['password'], $_POST['pass2'], $_POST['gender'], $_POST['age'], $_POST['current_country'], $_POST['current_city'], $_POST['origin_country'], $_POST['exchange_situation'], $_POST['description']))
	{


Ou je suis à côté de la plaque ? SI c'est le cas je l'ai pourtant bien relu et comparé avec le code du tuto d'origine et je ne vois vraiment pas le problème.
J'espère que je suis assez claire.

Merci de ton aide le père! :)
0
1 - Merci d'utiliser 'répondre au sujet' pour répondre. la fonction 'Ajouter un commentaire' sert à ... ajouter un commentaire, ce qui n'est pas la même chose.
2 - A avoir le nez dedans on remarque même plus les erreurs bêtes c'est fou le nombre de personnes qui me font cette réponse bidon.

Ces deux points sont des commentaires.
0
J'ai donc vérifié tout les noms des champs

Je lis :
<textarea name="message"...
et
if(isset($_POST['id'],..., $_POST['description']))
Ça aussi ça a été corrigé ?
0
Alors je me suis rererelu, j'ai corrigé le :
<textarea name="description"
mais le
if(isset($_POST['id'],..., $_POST['description']))
c'est normal comme c'est le nom de mon champ.

J'ai aussi trouvé une autre erreur que j'ai corrigé :
$_POST['surname'] = stripslashes($_POST['surname']);

Mais tout ça ne change rien à mon problème...
Il ne se passe toujours rien dans ma base de donnée et les informations se réinitialisent toujours quand j'essaye de valider.

Tu veux peux être que je re-copie le code pour que ce soit plus clair ?


Merci de ton aide, et promis je ne recommencerais plus pour le commentaire! :D
0
Ne t'inquiète pas pour le commentaire, c'est mon côté intégriste qui reprend le dessus de temps en temps ^^. Mais la plupart des utilisateurs du forum cliquent un peu au hasard sur l'un ou l'autre, ça ne l'empêche pas de marcher.
0
Y'a pas de soucis, j'accepte les critiques si c'est pour une bonne raison, et je comprends que ce soit chiant les gens qui l'utilise n'importe comment :).
0
oui
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le code :
edit-profile.php

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		
		<link rel="stylesheet" href="style_home.css" />

        <title>Edit profile</title>
    </head>
    <body>

<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');

// on sélectionne la base
mysql_select_db('majorproject',$db);


// On prolonge la session
session_start();


//On verifie si lutilisateur est connecte
if(isset($_SESSION['email']))
{


/*HEADER*/
	include('header.php');


/*MENU*/
	include('menu.php');
	
	
	?>
	<div id="info_profile">
	<?php	


	//On verifie si le formulaire a ete envoye
	if(isset($_POST['id'], $_POST['firstname'], $_POST['surname'], $_POST['email'], $_POST['password'], $_POST['pass2'], $_POST['gender'], $_POST['age'], $_POST['current_country'], $_POST['current_city'], $_POST['origin_country'], $_POST['exchange_situation'], $_POST['description']))
	{
		//On enleve lechappement si get_magic_quotes_gpc est active
		if(get_magic_quotes_gpc())
		{
			$_POST['firstname'] = stripslashes($_POST['firstname']);
			$_POST['surname'] = stripslashes($_POST['surname']);
			$_POST['email'] = stripslashes($_POST['email']);
			$_POST['password'] = stripslashes($_POST['password']);
			$_POST['pass2'] = stripslashes($_POST['pass2']);
			$_POST['gender'] = stripslashes($_POST['gender']);
			$_POST['age'] = stripslashes($_POST['age']);
			$_POST['current_country'] = stripslashes($_POST['current_country']);
			$_POST['current_city'] = stripslashes($_POST['current_city']);
			$_POST['origin_country'] = stripslashes($_POST['origin_country']);
			$_POST['exchange_situation'] = stripslashes($_POST['exchange_situation']);
			$_POST['description'] = stripslashes($_POST['description']);
		}
		//On verifie si le mot de passe et celui de la verification sont identiques
		if($_POST['password']==$_POST['pass2'])
		{

				//On verifie si lemail est valide
				if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_'{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_'{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
				{
					//On echape les variables pour pouvoir les mettre dans une requette SQL
					$firstname = mysql_real_escape_string($_POST['firstname']);
					$surname = mysql_real_escape_string($_POST['surname']);
					$email = mysql_real_escape_string($_POST['email']);
					$pass2 = mysql_real_escape_string($_POST['pass2']);
					$gender = mysql_real_escape_string($_POST['gender']);
					$age = mysql_real_escape_string($_POST['age']);
					$current_country = mysql_real_escape_string($_POST['current_country']);
					$current_city = mysql_real_escape_string($_POST['current_city']);
					$origin_country = mysql_real_escape_string($_POST['origin_country']);
					$exchange_situation = mysql_real_escape_string($_POST['exchange_situation']);
					$description = mysql_real_escape_string($_POST['description']);
					
					//On verifie sil ny a pas deja un utilisateur inscrit avec le pseudo choisis
					$dn = mysql_fetch_array(mysql_query('select count(*) as nb from users where email="'.$email.'"'));
					//On verifie si le pseudo a ete modifie pour un autre et que celui-ci n'est pas deja utilise
					if($dn['nb']==0 or $_POST['email']==$_SESSION['email'])
					{
						//On modifie les informations de lutilisateur avec les nouvelles
						if(mysql_query('update users set firstname="'.$firstname.'", surname="'.$surname.'", email="'.$email.'", password="'.$password.'", gender="'.$gender.'", age="'.$age.'", current_country="'.$current_country.'", current_city="'.$current_city.'", origin_country="'.$origin_country.'", exchange_situation="'.$exchange_situation.'", description="'.$description.'" where id="'.mysql_real_escape_string($_SESSION['userid']).'"'))
						{
							//Si ca a fonctionne, on naffiche pas le formulaire
							$form = false;
							//On supprime les sessions email et userid au cas ou il aurait modifie son email
							
							// On le vide intégralement
							$_SESSION['email']= array();
							$_SESSION['userid']= array();
							// Destruction de la session
							session_destroy();
							// Destruction du tableau de session
							unset($_SESSION['email']);
							unset ($_SESSION['userid']);
						
							?>
							Your profile has been actualized. You need to reconnect yourself.<br />
							<a href="connect.html">Connect</a>
							<?php
						}
						else
						{
							//Sinon on dit quil y a eu une erreur
							$form = true;
							$message = 'An error occurred when changes.';
						}
					}
					else
					{
						//Sinon, on dit que le pseudo voulu est deja pris
						$form = true;
						$message = 'An account already exist for this email.';
					}						
				}
				else
				{
					//Sinon, on dit que lemail nest pas valide
					$form = true;
					$message = 'Your email is not valid.';
				}
		}
		else
		{
			//Sinon, on dit que les mots de passes ne sont pas identiques
			$form = true;
			$message = 'Passwords are not the same.';
		}
	}
	else
	{
		$form = true;
	}
if($form)
{
	//On affiche un message sil y a lieu
	if(isset($message))
	{
		echo '<strong>'.$message.'</strong>';
	}
	//Si le formulaire a deja ete envoye on recupere les donnes que lutilisateur avait deja insere
	if(isset($_POST['firstname'],$_POST['surname'],$_POST['email'],$_POST['password'],$_POST['email'],$_POST['gender'],$_POST['current_country'],$_POST['current_city'],$_POST['exchange_situation']))
	{
		$email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');
		if($_POST['password']==$_POST['pass2'])
		{
			$password = htmlentities($_POST['password'], ENT_QUOTES, 'UTF-8');
		}
		else
		{
			$password = '';
		}
		$email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');
	}
	else
	{
		//Sinon, on affiche les donnes a partir de la base de donnee
		$e=$_SESSION['email'];
		$rrr=mysql_query('SELECT firstname,surname,email,password,gender,age,current_country,current_city,origin_country,exchange_situation,description FROM users where email="'.$e.'"');
		$dnn = mysql_fetch_array($rrr);
		$firstname = htmlentities($dnn['firstname'], ENT_QUOTES, 'UTF-8');
		$surname = htmlentities($dnn['surname'], ENT_QUOTES, 'UTF-8');
		$email = htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8');
		$password = htmlentities($dnn['password'], ENT_QUOTES, 'UTF-8');
		$gender = htmlentities($dnn['gender'], ENT_QUOTES, 'UTF-8');
		$age = htmlentities($dnn['age'], ENT_QUOTES, 'UTF-8');
		$current_country = htmlentities($dnn['current_country'], ENT_QUOTES, 'UTF-8');
		$current_city = htmlentities($dnn['current_city'], ENT_QUOTES, 'UTF-8');
		$origin_country = htmlentities($dnn['origin_country'], ENT_QUOTES, 'UTF-8');
		$exchange_situation = htmlentities($dnn['exchange_situation'], ENT_QUOTES, 'UTF-8');
		$description = htmlentities($dnn['description'], ENT_QUOTES, 'UTF-8');
	}
	
	//On affiche le formulaire
	?>
	<div class="content">
		<form action="edit_profile.php" method="post">
			You can re-edit your informations:<br />
			<div class="center">
				<table>
					<tr>
						<td><label for="firstname">Firstname</label></td>
						<td><input type="text" name="firstname" id="firstname" value="<?php echo $firstname; ?>" /></td>
					</tr>				
					<tr>
						<td><label for="surname">Surname</label></td>
						<td><input type="text" name="surname" id="surname" value="<?php echo $surname; ?>" /></td>
					</tr>					
					<tr>
						<td><label for="email">Email</label></td>
						<td><input type="text" name="email" id="email" value="<?php echo $email; ?>" /></td>
					</tr>					
					<tr>
						<td><label for="password">Password</label></td>
						<td><input type="password" name="password" id="password" value="<?php echo $password; ?>" /></td>
					</tr>					
					<tr>	
						<td><label for="pass2">Re-enter password</label></td>
						<td><input type="password" name="pass2" id="pass2" value="<?php echo $password; ?>" /></td>
					</tr>					
					<tr>
						<td><label for="gender">Gender</label></td>
						<td><input type="radio" name="gender" id="gender" value="<?php echo $gender; ?>">Female</td>
						<tr>
						<td><input type="radio" name="gender" id="gender" value="<?php echo $gender; ?>">Male</td>
						</tr>
					</tr>					
					<tr>					
						<td><label for="gender">Age</label></td>
						<td><input type="text" name="age" id="age" value="<?php echo $age; ?>" /></td>
					</tr>					
					<tr>					
						<td><label for="current_country">Current country</label></td>
						<td><input type="text" name="current_country" id="current_country" value="<?php echo $current_country; ?>" /></td>
					</tr>					
					<tr>					
						<td><label for="current_city">Current city</label></td>
						<td><input type="text" name="current_city" id="current_city" value="<?php echo $current_city; ?>" /></td>
					</tr>					
					<tr>					
						<td><label for="origin_country">Country of origin</label></td>
						<td><input type="text" name="origin_country" id="origin_country" value="<?php echo $origin_country; ?>" /></td>
					</tr>					
					<tr>					
						<td><label for="exchange_situation">Exchange situation</label>	</td>
						<td><input type="radio" name="exchange_situation" id="exchange_situation" value="<?php echo $exchange_situation; ?>" >In exchange</td>
						<tr>
						<td><input type="radio" name="exchange_situation" id="exchange_situation" value="<?php echo $exchange_situation; ?>" >Was in exchange</td>
						</tr>
						<tr>
						<td><input type="radio" name="exchange_situation" id="exchange_situation" value="<?php echo $exchange_situation; ?>" >Want to be exchange</td>
						</tr>
					</tr>					
					<tr>					
						<td><label for="description">Description</label></td>
						<td>
						<textarea name="description" rows="5" cols="17"><?php echo $description; ?></textarea></td>
					</tr>					
					<tr>					
						<td colspan="2" align="right"><input type="image" id="bouton-submit" src="images/ok.png" onClick="envoie(this.form)"></td>
					<tr>
				</table>
			</div>
		</form>
	</div>
	<?php
}

}
else
{
?>
You need to log in to access this page.<br />
<a href="connect.html">Connect</a>
<?php
}
?>

</div>
		
	</body>
</html>


Par contre j'ai la vague impression que c'est pas très facile à lire la façon dont le code s'affiche...
0
if(isset($_POST['id'], ...
Sauf erreur de ma part, tu n'as aucun champ dans ton formulaire qui s'appelle id. Donc $_POST['id'] n'est pas défini.
0
Oui c'est normal qu'il ne soit pas dans mon formulaire, l'id je m'en sers simplement dans ma base de donnée mais à aucun moment l'utilisateur n'a son id à disposition. Tu penses que je devrais du coup ne pas le prendre en compte dans cette page ? Je viens de le retirer pour tester et ça ne change toujours rien.
J'ai aussi une ligne qui dit :
if(mysql_query('update users set .............. where id="'.mysql_real_escape_string($_SESSION['userid']).'"'))

J'ai donc remplacer "id" par "email" comme c'est le paramètre qui sert à identifier la connexion des utilisateurs mais ça n'a rien changé non plus. Après c'était peu être une idée stupide je sais pas trop mais bon, qui ne tente rien n'a rien...
0
Je crois surtout que tu n'as pas du tout compris le principe des formulaires.
Les champs d'une base de donnée n'ont strictement AUCUN rapport avec ceux d'un formulaire.

Le principe est le suivant :
1 - tu crées un formulaire avec des <input type='...' name='qqchose' />
2 - quand le formulaire est envoyé avec la méthode post, tu récupères dans le script PHP une variable $_POST['qqchose']
3 - dans ton script php, tu vérifies que $_POST['qqchose'] existe bien.

Mais dans ton cas, comme tu n'as pas de champ id dans ton formulaire il n'y a aucune raison pour que $_POST['id'] existe. Il n'est pas du tout question ici du fait que tu aies ou nom un champ id dans ta base de données

4 - tu récupères ta valeur de $_POST['qqchose'] dans une variable que tu peux appeler $qqchose, mais que tu peux aussi appeler $truc ou $machin ou tout autre nom de variable autorisé en PHP
$truc=mysql_real_escape_string($_POST['qqchose']); est parfaitement normal et courant en php.

5 - tu te sers de cette variable pour créer une requête qui va modifier un champ. Le nom du champ n' a absolument aucune obligation d'être le même que celui de la variable (mais il faut qu'il existe dans ta table, évidemment..)
"UPDATE matable set monchamp='$truc'" est parfaitement normal.

Il peut être pratique d'utiliser le même nom pour le champ du formulaire, la variable et le champ de ta table, mais ce sont 3 choses qui n'ont aucun rapport.
0
D'accord, je sais que j'ai quelques problèmes à me repérer à ce niveau là c'est pour ça que je leur ai tous donné le même nom... Mais merci de ton explication elle est plutôt claire pour moi! :)

Du coup, ce problème là de mon code est réglé il me semble, après une énième relecture. Il faut juste que je me le mette bien en tête et que je relise les autres pages de mon code au cas où...

Est-ce que tu aurais une autre piste pour mon problème ? Le fait que ça réinitialise mes informations et que ça n'amène jamais à la page "connect" ?
0
Si tu as compris mon explication...
Tu as bien retiré le $_POST['id'] du if (isset($_POST['id'] ?
Sinon, pour savoir pourquoi tu ne vas jamais à la page connect, il suffit de mettre des 'echo 'coucou1', echo 'coucou2', au début de chaque 'if' et de chaque 'else' pour savoir par où ton programme passe exactement. ça te permettra de vérifier quelle est la condition qui n'est pas comme tu t'y attends, et de la regarder de plus près.
0
Tout à fait je l'ai retiré! :)

Alors j'avais déjà testé avec les echo mais j'avais pas réussi à bien suivre ce que ça renvoyait. J'ai retesté comme tu m'as dit et voilà ce qu'il se passe :
Le programme passe directement au :
else
{
$form = true;
}

qui correspond au premier if qui est :
if(isset($_POST['firstname'], $_POST['surname'],......

Il lit ensuite le formulaire en passant par le :
if($form)
{

et va ensuite au :
else
{
//Sinon, on affiche les donnes a partir de la base de donnee
$e=$_SESSION['email'];
$rrr=mysql_query('SELECT firstname,surname,email,password,gender,age,current_country,current_city,origin_country,exchange_situation,description FROM users where email="'.$e.'"');
$dnn = mysql_fetch_array($rrr);
$firstname = htmlentities($dnn['firstname'], ENT_QUOTES, 'UTF-8');
$surname = htmlentities($dnn['surname'], ENT_QUOTES, 'UTF-8');
$email = htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8');
$password = htmlentities($dnn['password'], ENT_QUOTES, 'UTF-8');
$gender = htmlentities($dnn['gender'], ENT_QUOTES, 'UTF-8');
$age = htmlentities($dnn['age'], ENT_QUOTES, 'UTF-8');
$current_country = htmlentities($dnn['current_country'], ENT_QUOTES, 'UTF-8');
$current_city = htmlentities($dnn['current_city'], ENT_QUOTES, 'UTF-8');
$origin_country = htmlentities($dnn['origin_country'], ENT_QUOTES, 'UTF-8');
$exchange_situation = htmlentities($dnn['exchange_situation'], ENT_QUOTES, 'UTF-8');
$description = htmlentities($dnn['description'], ENT_QUOTES, 'UTF-8');
}

qui correspond au if suivant :
if(isset($_POST['firstname'],$_POST['surname'],$_POST['email'],.......


Ce qui veut dire que c'est au niveau de mes deux if que j'ai un problème, mais je ne comprends pas parce que mes champs sont les bons... C'est mon if qui est mal formulé ? Je ne comprends pas du tout....
0
J'ai essayé de réécrire mes deux if qui posent problème de cette façon :

if(isset($_POST['firstname']) && isset($_POST['surname']) && isset($_POST['email'])..........

Mais rien à faire ça ne change rien... Je commence à douter que le problème vienne de là, mais pourtant c'est ce que ça indique quand je mets les échos!
0
Problème résolu!

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		
		<link rel="stylesheet" href="style_home.css" />

        <title>Edit profile</title>
    </head>
    <body>

<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '******');

// on sélectionne la base
mysql_select_db('majorproject',$db);


// On prolonge la session
session_start();


//On verifie si lutilisateur est connecte
if(isset($_SESSION['email']))
{


/*HEADER*/
	include('header.php');


/*MENU*/
	include('menu.php');
	
	
	?>
	<div id="info_profile">
	<?php	


	//On verifie si le formulaire a ete envoye
	if(isset($_POST['firstname']))
	{
		$_FORM = true;
		//On enleve lechappement si get_magic_quotes_gpc est active
		if(get_magic_quotes_gpc())
		{
			$_POST['firstname'] = stripslashes($_POST['firstname']);
			$_POST['surname'] = stripslashes($_POST['surname']);
			$_POST['email'] = stripslashes($_POST['email']);
			$_POST['password'] = stripslashes($_POST['password']);
			$_POST['pass2'] = stripslashes($_POST['pass2']);
			$_POST['gender'] = stripslashes($_POST['gender']);
			$_POST['age'] = stripslashes($_POST['age']);
			$_POST['current_country'] = stripslashes($_POST['current_country']);
			$_POST['current_city'] = stripslashes($_POST['current_city']);
			$_POST['origin_country'] = stripslashes($_POST['origin_country']);
			$_POST['exchange_situation'] = stripslashes($_POST['exchange_situation']);
			$_POST['description'] = stripslashes($_POST['description']);
		}
		//On verifie si le mot de passe et celui de la verification sont identiques
		if($_POST['password']!=$_POST['pass2'])
		{
			$_FORM = false;
			echo 'Passwords are not the same.';
		}
		//On verifie si le mail est valide
		if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_'{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_'{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
		{
			
		}
		else{
			$_FORM = false;
			echo 'Your email is not valid.';
		}
		
		//On echape les variables pour pouvoir les mettre dans une requette SQL
		$firstname = mysql_real_escape_string($_POST['firstname']);
		$surname = mysql_real_escape_string($_POST['surname']);
		$email = mysql_real_escape_string($_POST['email']);
		$password = mysql_real_escape_string($_POST['pass2']);
		$gender = mysql_real_escape_string($_POST['gender']);
		$age = mysql_real_escape_string($_POST['age']);
		$current_country = mysql_real_escape_string($_POST['current_country']);
		$current_city = mysql_real_escape_string($_POST['current_city']);
		$origin_country = mysql_real_escape_string($_POST['origin_country']);
		$exchange_situation = mysql_real_escape_string($_POST['exchange_situation']);
		$description = mysql_real_escape_string($_POST['description']);
		
		//On verifie si le mail a ete modifie pour un autre puis que celui-ci n'est pas deja utilisé
		if ($_POST['email']!=$_SESSION['email']){
			$result = mysql_query('select firstname from users where email="'.$email.'"');
			//Si la requette revoi un résultat cela veut dire que l'email existe déja
			if ($myrow = mysql_fetch_row($result))
			{
				echo 'This email is already used.';
				$_FORM = false;
			}	
		}
		
		//On modifie les informations de lutilisateur avec les nouvelles si le formulaire est valide
		if ($_FORM == true){
			//On modifie les informations de lutilisateur avec les nouvelles
			$userid=mysql_real_escape_string($_SESSION['email']);
			mysql_query('update users set firstname="'.$firstname.'", surname="'.$surname.'", email="'.$email.'", password="'.$password.'", gender="'.$gender.'", age="'.$age.'", current_country="'.$current_country.'", current_city="'.$current_city.'", origin_country="'.$origin_country.'", exchange_situation="'.$exchange_situation.'", description="'.$description.'" where id="'.$userid.'"');  
			echo 'Your profile has been actualized. You need to reconnect yourself.<br />';
			echo '<a href="connect.html">Connect</a>';
		}
		else{
			$email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');
			if($_POST['password']==$_POST['pass2'])
			{
				$password = htmlentities($_POST['password'], ENT_QUOTES, 'UTF-8');
			}
			else
			{
				$password = '';
			}
			$email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF-8');
			// On raffiche le formulaire
			include('formulaire.php');
		}
	}		
	else{
		//Sinon, on affiche les donnes a partir de la base de donnee
		$e=$_SESSION['email'];
		$rrr=mysql_query('SELECT firstname,surname,email,password,gender,age,current_country,current_city,origin_country,exchange_situation,description FROM users where email="'.$e.'"');
		$dnn = mysql_fetch_array($rrr);
		$firstname = htmlentities($dnn['firstname'], ENT_QUOTES, 'UTF-8');
		$surname = htmlentities($dnn['surname'], ENT_QUOTES, 'UTF-8');
		$email = htmlentities($dnn['email'], ENT_QUOTES, 'UTF-8');
		$password = htmlentities($dnn['password'], ENT_QUOTES, 'UTF-8');
		$gender = htmlentities($dnn['gender'], ENT_QUOTES, 'UTF-8');
		$age = htmlentities($dnn['age'], ENT_QUOTES, 'UTF-8');
		$current_country = htmlentities($dnn['current_country'], ENT_QUOTES, 'UTF-8');
		$current_city = htmlentities($dnn['current_city'], ENT_QUOTES, 'UTF-8');
		$origin_country = htmlentities($dnn['origin_country'], ENT_QUOTES, 'UTF-8');
		$exchange_situation = htmlentities($dnn['exchange_situation'], ENT_QUOTES, 'UTF-8');
		$description = htmlentities($dnn['description'], ENT_QUOTES, 'UTF-8');
		include('formulaire.php');
	}
	
}
else
{
	echo 'You need to log in to access this page.<br/>';
	echo '<a href="connect.html">Connect</a>';
}
?>
</div>
		
	</body>
</html>


Reste plus qu'à corriger le fait que les nouvelles informations ne s'enregistrent pas dans la base de donnée.
0
Et j'ai oublié de préciser que j'ai séparé le formulaire dans un autre fichier form.php
0