Page 1 sur 1

Problème sur un script

Posté : 01 mai 2007, 20:21
par djsty82
Bonjour à tous,

J'ai un petit probleme avec un code

L'errreur est :

Parse error: syntax error, unexpected '}', expecting ',' or ';' in /xxxx/moncompte/gestion/changermdp.php on line 39


Ma source Php est :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Changer le mot de passe</title>
</head>
<body>
<?php
session_start();
include('../../../connexion-bd/index.php');


$envoi = $HTTP_GET_VARS['envoi'];
if ($envoi=="ok") 
{
if(isset ($_POST['pseudo']))			$pseudo=$_POST['pseudo'];
else 	$pseudo="";
if(isset ($_POST['newmdp']))			$newmdp=$_POST['newmdp'];
else 	$newmdp="";

if(empty($nom) or empty($email))
{
echo '<h2>Toutes les informations doivent être renseignées</h2>';
}
else
{
$db = mysql_connect("$serveur","$login","$pw") or die('Erreur de connexion au serveur. Erreur : '.mysql_error());
mysql_select_db("$nombase", $db) or die('Erreur de connexion à la base de données. Erreur : '.mysql_error());

$sql = "UPDATE $tmembre SET passe=\"$newmdp\" where pseudo=\"$pseudo\"";
mysql_query($sql) or die('Erreur d\'envoi des informations');

mysql_close();

echo'<p><h2>Vos informations ont bien été modifiées</h2></p>';
echo'<p><i><u>Rappel de vos informations</u></i> :</p>';
echo"<p><b>Pseudo</b> : $pseudo</p>";
echo"<p><b>Mot de passe</b> : $newmdp</p>"

}};

else
{
echo '<form action="changermdp.php?envoi=ok" method="post">';
echo 'Veuillez remplir ceci : <br>';
echo 'Pseudo : <input type="text" name="pseudo" value="'.$HTTP_SESSION_VARS['pseudo'].'" readonly=""><br>';
echo 'Nouveau mot de passe : <input type="password" name="newmdp"><br>';
echo '<input type="submit" value="Valider">'
?>
</body>
</html>
Etant un débutant je ne comprend pas pourquoi cette erreur s'affiche, merci !

Posté : 01 mai 2007, 21:30
par Sékiltoyai
Je te traduis l'erreur :
Erreur de parsing: Erreur de syntaxe, '}' inattendu, attend ',' ou ';' dans /xxxx/moncompte/gestion/changermdp.php à la ligne 39
Ce qui signifie que tu as une erreur de syntaxe.
Ici tu as oublié de mettre un ; à la fin de la ligne 38.
Fait bien attention quand tu programmes, à bien fermer les guillemets et acolades, et à mettre des point-virgules après chaque instruction.

Re: Problème sur un script

Posté : 01 mai 2007, 22:22
par dunbar
Salut,
Et comme ceci ??
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Changer le mot de passe</title>
</head>
<body>
<?php
session_start();
include('../../../connexion-bd/index.php');


$envoi = $HTTP_GET_VARS['envoi'];
if ($envoi=="ok")
{
if(isset ($_POST['pseudo']))            $pseudo=$_POST['pseudo'];
else     $pseudo="";
if(isset ($_POST['newmdp']))            $newmdp=$_POST['newmdp'];
else     $newmdp="";

if(empty($nom) or empty($email))
{
echo '<h2>Toutes les informations doivent être renseignées</h2>';
}
else
{
$db = mysql_connect("$serveur","$login","$pw") or die('Erreur de connexion au serveur. Erreur : '.mysql_error());
mysql_select_db("$nombase", $db) or die('Erreur de connexion à la base de données. Erreur : '.mysql_error());

$sql = "UPDATE $tmembre SET passe=\"$newmdp\" where pseudo=\"$pseudo\"";
mysql_query($sql) or die('Erreur d\'envoi des informations');

mysql_close();

echo'<p><h2>Vos informations ont bien été modifiées</h2></p>';
echo'<p><i><u>Rappel de vos informations</u></i> :</p>';
echo'<p><b>Pseudo</b> : $pseudo</p>';
echo'<p><b>Mot de passe</b> : "'.$newmdp.'"</p>';

}}

else
{
echo '<form action="changermdp.php?envoi=ok" method="post">';
echo 'Veuillez remplir ceci : <br>';
echo 'Pseudo : <input type="text" name="pseudo" value="'.$HTTP_SESSION_VARS['pseudo'].'" readonly=""><br>';
echo 'Nouveau mot de passe : <input type="password" name="newmdp"><br>';
echo '<input type="submit" value="Valider"/>';
}
?>
</body>
</html>

Posté : 01 mai 2007, 22:51
par sylvaing26
Pour moi là c'est ok
T'as essayé de voir maintenant si il y avait un message d'erreur ?

Posté : 02 mai 2007, 08:38
par Ryle
Pour l'explication, c'est effectivement le ";" que tu as après les }} qui pose problème. En effet, php considère l'instruction du if() terminée (puisqu'il y a un point-virgule) et ne s'attend donc pas à trouver un else() après.

Ceci dit, il te manquerait ensuite un ";" à ton dernier echo et une accolade fermante à ton dernier else que t'a généreusement corrigé dunbar :)

Un conseil par contre : indente ton code, c'est à dire dès que tu ouvres une accolade, décale le contenu vers la droite et revient au niveau lorsque tu la refermes. C'est tout bête et ça rend ton code tellement plus lisible que c'est dommage de s'en priver ;)

Merci

Posté : 02 mai 2007, 19:36
par djsty82
Merci,
Je vais voir si ca marche