Petit problème
- Accueil
- Forum
- Programmation
- PHP
- Petit problème
Ce topic est suivi par : Gothem, lecteursdb, Nobodief, silvio85, TheOldNoob
Gothem Le 18 juillet 2016 à 08:18 (Édité le 25 janvier 2019 à 17:51)
On ne cesse de me dire qu'il y a un unexpected "{" à la ligne 29. Je note donc la ligne 29 ci-dessous pour que vous puissiez le voir plus facilement. A noter que Prime a effectué le même codage pour son tuto sur la création de l'espace membre (partie 3, édition du profil) ou peut-être qu'un petit détail m'a echappé.
<?php
session_start();
$bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '');
if(isset($_SESSION['id']))
{
$requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
$requser->execute(array($_SESSION['id']));
$user = $requser->fetch();
if(isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo'])
{
$newpseudo = htmlspecialchars($_POST['newpseudo']);
$insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
$insertpseudo->execute(array($newpseudo, $_SESSION['id']));
header('Location: profil.php?id='.$_SESSION['id']);
}
if(isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail'])
{
$newmail = htmlspecialchars($_POST['newmail']);
$insertmail = $bdd->prepare("UPDATE membres SET mail = ? WHERE id = ?");
$insertmail->execute(array($newmail, $_SESSION['id']));
header('Location: profil.php?id='.$_SESSION['id']);
}
if(isset($_POST['newmdp1']) AND !empty($_POST['newmdp1'] AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2']))
(Ligne 29) {
$mpd1 = sha1($_POST['newmdp1']);
$mdp2 = sha1($_POST['newmdp2']);
if($mdp1 == $mdp2)
{
$indertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?");
#insertmdp->execute(array($mdp1, $_SESSION['id'));
header('Location: profil.php?id='.$_SESSION['id']);
}
else
{
$msg = "Vos deux mdp ne correspondent pas.";
}
}
?>
<html>
<head>
<title>Tuto PHP</title>
<meta charset=utf-8">
</head>
<body>
<div align="center">
<h2>Edition de mon profil</h2>
<div align="left">
<form method="POST" action="">
<label>Pseudo :</label>
<Input type="text" name="newpseudo" placeholder="Pseudo" value="<?php echo $user['pseudo']; ?>" /><br /><br />
<label>Mail :</label>
<Input type="text" name="newmail" placeholder="Mail" value="<?php echo $user['mail']; ?>" /><br /><br />
<label>Mot de passe :</label>
<Input type="password" name="newmdp1" placeholder="Mot de passe"/><br /><br />
<label>Confirmation - mot de passe :</label>
<Input type="password" name="newmdp2" placeholder="Confirmation du mot de passe"/><br /><br />
<Input type="submit" name="Mettre à mon jour mon profil" />
</form>
<?php if(isset($msg)) { echo $msg; }
</div>
</div>
</body>
</html>
<?php
}
else
{
header("Location: connexion.php");
}
?>
lecteursdb Le 18 juillet 2016 à 10:14 (Édité le 1 janvier 1970 à 01:00)
il y a un '#' qui apparaît au moment où tu exécutes ta requête juste avant d'afficher 'Vos deux mots de passe ne correspondent pas l'as tu regardé aussi ? :)
Nobodief Le 18 juillet 2016 à 11:12 (Édité le 1 janvier 1970 à 01:00)
- Ton submit ne sert à rien, il n'à aucune action, le name ne sert pas à afficher du texte, il à la même utilité que tes autres input.
- Comme la dit lecteursdb il y à une erreur à cette ligne: #insertmdp->execute(array($mdp1, $_SESSION['id')); enlève le dièse.
- Tu utilise un seul formulaire et dans ton code tu sépare l'update de tes données, c'est pas logique, soit utilise un formulaire groupé, soit utilise des formulaires indépendant.
Balatharas Le 19 juillet 2016 à 11:07 (Édité le 1 janvier 1970 à 01:00)
justemilieu Le 19 juillet 2016 à 19:54 (Édité le 1 janvier 1970 à 01:00)
{
$indertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?"); // plutôt $insertmdp=...
#insertmdp->execute(array($mdp1, $_SESSION['id')); // insertmdp-> ... sans le #
header('Location: profil.php?id='.$_SESSION['id']);
}
Blast0Kd Le 19 juillet 2016 à 20:46 (Édité le 1 janvier 1970 à 01:00)
silvio85 Le 22 juillet 2016 à 18:09 (Édité le 1 janvier 1970 à 01:00)
Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in C:\wamp67\www\New folder\traitement.php on line 3
PDOException: could not find driver in C:\wamp67\www\New folder\traitement.php on line 3
je crois que je ne peut pas me connecter a ma base mais je comprend pas esque ce code est bon:
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membres','root', '');
merci d,avance
TheOldNoob Le 22 juillet 2016 à 22:40 (Édité le 1 janvier 1970 à 01:00)
Pour ma part, j'utilise ça pour appelé ma bdd. c'est un peu plus compliquer niveau visitilité, il faut pas être mauvais en concaténation, mais je trouve que pour gérer les identifient de connection c'est plus mieux que si c'était moins bien 😉
<?php
//Informations de connexion à la bdd
$sqlHost = 'localhost';
$sqlUser = 'root';
$sqlPassword = '';
$dbName = 'espace_membre';
$bdd = new PDO('mysql:host='.$sqlHost.';dbname='.$dbName.';charset=utf8',$sqlUser,$sqlPassword) or die($pdo->errorInfo());
?>
silvio85 Le 22 juillet 2016 à 23:18 (Édité le 1 janvier 1970 à 01:00)
Nobodief Le 25 juillet 2016 à 03:49 (Édité le 25 juillet 2016 à 03:49)
La seule solution est de le désinstaller.
Blast0Kd Le 25 juillet 2016 à 17:16 (Édité le 1 janvier 1970 à 01:00)
<?php
$db = new PDO('mysql:dbname=data;host=localhost', 'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);