j'ai modifié une page qui au départ permet a mes membres de mettre a jour leur propre profil en récupérant leur variable session car je voudrai l'utiliser dans l'administration pour modifier aussi leur profil....
j'ai donc modifier les informations suivante :
j'ai rajouté cette partie pour récupérer l'id du membre :
if (empty($_GET["id"])) header("location: index.php");
$id=$_GET['id'];
et remplacé :
if(mysql_query('update membre set pseudo="'.$pseudo.'", pass="'.$pass.'", email="'.$email.'", att="'.$att.'", def="'.$def.'", habilite="'.$habilite.'", attaque="'.$attaque.'", defense="'.$defense.'" where pseudo="'.$_SESSION['pseudo'].'"'))
par :
if(mysql_query('update membre set pseudo="'.$pseudo.'", pass="'.$pass.'", email="'.$email.'", att="'.$att.'", def="'.$def.'", habilite="'.$habilite.'", attaque="'.$attaque.'", defense="'.$defense.'" where id=$id'))
ainsi que :
$dnn = mysql_fetch_array(mysql_query('select pseudo,pass,email,att,def,habilite,attaque,defense from membre where pseudo="'.$_SESSION['pseudo'].'"'));
par : $dnn = mysql_fetch_array(mysql_query("select * from membre where id=$id;"));
j'arrive sur ma page profil.php avec un lien sous la forme http://localhost/admin/profil.php?id=65 ( ou 65 est l'id d'un membre ) jusque là tout va bien car ma page s'affiche normalement et les données du membre sont récupérées correctement car elles s'affichent bien dans le formulaire....
par contre quand je modifie des valeurs dans le formulaire et que je valide, les nouvelles infos ne sont pas inscrites dans la bdd et j'ai le message suivant :
"Une erreur est survenue lors des modifications."
je ne trouve pas mon erreur et j'ai un doute sur le where id=$id
le code complet de ma page profil.php :
<?php
include ('../mysqlcnn.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Administration de <?php echo TITRE_SITE; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" href="design.css" />
</head>
<body>
<div align="center">
<div id="banniere">
</div>
</div>
<?php
include ('includes/menu.php');
?>
<div id="corps">
<h2>
<center>
Page de mise à jour de votre profil et statistiques
<div id="tableau">
<hr>
<?php
if (empty($_GET["id"])) header("location: index.php");
//$id = intval($_GET['id']);
$id=$_GET['id'];
//On verifie si lutilisateur est connecte
if(isset($_SESSION['pseudo']))
{
//On verifie si le formulaire a ete envoye
if(isset($_POST['pseudo'], $_POST['pass'], $_POST['passverif'], $_POST['email'], $_POST['att'], $_POST['def'], $_POST['habilite'], $_POST['attaque'], $_POST['defense']))
{
//On verifie si le mot de passe et celui de la verification sont identiques
if($_POST['pass']==$_POST['passverif'])
{
//On verifie si le mot de passe a 6 caracteres ou plus
if(strlen($_POST['pass'])>=6)
{
//On enleve lechappement si get_magic_quotes_gpc est active
if(get_magic_quotes_gpc())
{
$_POST['pseudo'] = stripslashes($_POST['pseudo']);
$_POST['pass'] = stripslashes($_POST['pass']);
$_POST['email'] = stripslashes($_POST['email']);
$_POST['att'] = stripslashes($_POST['att']);
$_POST['def'] = stripslashes($_POST['def']);
$_POST['habilite'] = stripslashes($_POST['habilite']);
$_POST['attaque'] = stripslashes($_POST['attaque']);
$_POST['defense'] = stripslashes($_POST['defense']);
}
//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
$pseudo = mysql_real_escape_string($_POST['pseudo']);
$pass = mysql_real_escape_string($_POST['pass']);
$email = mysql_real_escape_string($_POST['email']);
$att = mysql_real_escape_string($_POST['att']);
$def = mysql_real_escape_string($_POST['def']);
$habilite = mysql_real_escape_string($_POST['habilite']);
$attaque = mysql_real_escape_string($_POST['attaque']);
$defense = mysql_real_escape_string($_POST['defense']);
//On modifie les informations de lutilisateur avec les nouvelles
// if(mysql_query('update membre set pseudo="'.$pseudo.'", pass="'.$pass.'", email="'.$email.'", att="'.$att.'", def="'.$def.'", habilite="'.$habilite.'", attaque="'.$attaque.'", defense="'.$defense.'" where pseudo="'.$_SESSION['pseudo'].'"'))
if(mysql_query('update membre set pseudo="'.$pseudo.'", pass="'.$pass.'", email="'.$email.'", att="'.$att.'", def="'.$def.'", habilite="'.$habilite.'", attaque="'.$attaque.'", defense="'.$defense.'" where id=$id'))
{
//Si ca a fonctionne, on naffiche pas le formulaire
$form = false;
//On supprime la session pseudo au cas ou il aurait modifie son pseudo
unset($_SESSION['pseudo']);
?>
<center>
Vos informations ont bien été modififée. Vous devez vous reconnecter.<br />
<a href="connection.php">Se connecter</a>
</center>
<?php
}
else
{
//Sinon on dit quil y a eu une erreur
$form = true;
$message = 'Une erreur est survenue lors des modifications.';
}
}
else
{
//Sinon, on dit que lemail nest pas valide
$form = true;
$message = 'L\'email que vous avez entré n\'est pas valide.';
}
}
else
{
//Sinon, on dit que le mot de passe nest pas assez long
$form = true;
$message = 'Le mot de passe que vous avez entré contien moins de 6 caractères.';
}
}
else
{
//Sinon, on dit que les mots de passes ne sont pas identiques
$form = true;
$message = 'Les mot de passe que vous avez entré ne sont pas identiques.';
}
}
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['pseudo'],$_POST['pass'],$_POST['email']))
{
$pseudo = htmlentities($_POST['pseudo']);
if($_POST['pass']==$_POST['passverif'])
{
$pass = htmlentities($_POST['pass']);
}
else
{
$pass = '';
}
$email = htmlentities($_POST['email']);
$att = htmlentities($_POST['att']);
$def = htmlentities($_POST['def']);
$habilite = htmlentities($_POST['habilite']);
}
else
{
//Sinon, on affiche les donnes a partir de la base de donnee
// $dnn = mysql_fetch_array(mysql_query('select pseudo,pass,email,att,def,habilite,attaque,defense from membre where pseudo="'.$_SESSION['pseudo'].'"'));
$dnn = mysql_fetch_array(mysql_query("select * from membre where id=$id;"));
$pseudo = htmlentities($dnn['pseudo']);
$pass = htmlentities($dnn['pass']);
$email = htmlentities($dnn['email']);
$att = htmlentities($dnn['att']);
$def = htmlentities($dnn['def']);
$habilite = htmlentities($dnn['habilite']);
$attaque = htmlentities($dnn['attaque']);
$defense = htmlentities($dnn['defense']);
}
//On affiche le formulaire
?>
<center>
<form action="profil.php?id=<?php echo $id;?>" method="post">
Vous pouvez modifier vos informations:<br />
Nom d'utilisateur:<input type="text" name="pseudo" value="<?php echo $pseudo; ?>" /><br />
Mot de passe(6 caractères min.):<input type="password" name="pass" value="<?php echo $pass; ?>" /><br />
Mot de passe(vérification):<input type="password" name="passverif" value="<?php echo $pass; ?>" /><br />
Email:<input type="text" name="email" value="<?php echo $email; ?>" /><br />
total points d'attaque :<input type="text" name="att" value="<?php echo $att; ?>" /><br />
total points de défense :<input type="text" name="def" value="<?php echo $def; ?>" /><br />
Nombre de formation en habilité :<input type="text" name="habilite" value="<?php echo $habilite; ?>" /><br />
Nombre de formation en attaque :<input type="text" name="attaque" value="<?php echo $attaque; ?>" /><br />
Nombre de formation en défense :<input type="text" name="defense" value="<?php echo $defense; ?>" /><br />
<input type="submit" value="Envoyer" />
</form>
</center>
<?php
}
}
else
{
?>
<center>
La connection est obligatoire pour acceder à cette page.<br />
<a href="connection.php">se connecter</a>
</center>
<?php
}
?>
</div>
<br />
<div id="tableau">
</div>
<br />
<br />
<a href="<?php echo URL_SCRIPT; ?>/contact.php">contacter le webmaster</a>
</center>
</h2>
</div>
</body>
</html>
mysqlcnn.php contient les infos pour la connexion à la bdd....