Problème sur un script

Petit nouveau ! | 2 Messages

01 mai 2007, 20:21

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 !

ViPHP
ViPHP | 5924 Messages

01 mai 2007, 21:30

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.

ViPHP
ViPHP | 2291 Messages

01 mai 2007, 22:22

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>
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Mammouth du PHP | 686 Messages

01 mai 2007, 22:51

Pour moi là c'est ok
T'as essayé de voir maintenant si il y avait un message d'erreur ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 mai 2007, 08:38

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 ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

02 mai 2007, 19:36

Merci,
Je vais voir si ca marche