Bonjour,

Voila je rencontre un petit problème avec mon code.

<?php
session_start();
error_reporting (E_ALL);
if (isset($_SESSION['id'])) {
try {
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
$requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
$requser->execute(array($_SESSION['id']));
$user = $requser->fetch();

// On est en retour du formulaire
if (isset($_POST['newpseudo'])) {
  $msg = '';
  $newpseudo = trim($_POST['newpseudo']);
  $newmail = trim($_POST['newmail']);
  $mdp1 = trim($_POST['newmdp1']);
  $mdp2 = trim($_POST['newmdp2']);
  if ($newpseudo == '') {
  $msg.= 'Pseudo obligatoire. ';
  }
  if ($newmail == '') {
  $msg.= 'Mail obligatoire. ';
  }
  if ($mdp1 == '') {
  $msg.= 'Mot de passe obligatoire. ';
  }
  if ($mdp2 == '') {
  $msg.= 'Passe vérification obligatoire. ';
  }
  if ($mdp1 == $mdp2) {
  $msg.= 'Mots de passe différents. ';
  }
  if ($msg == '') {
    $mdp1 = password_hash($mdp1);
    $majmembre = $bdd->prepare("UPDATE membres SET pseudo = ?, mail = ?, motdepasse = ? WHERE id = ?");
    $majmembre->execute(array($newpseudo, $newmail, $mdp1, $_SESSION['id']));
    header('Location: profil.php?id='. $_SESSION['id']);
    exit();
  }
}

} catch (PDOException $e) {
print "Erreur !: " . $e->getMessage() . "<br/>";
die();
}
?>
<!DOCTYPE html>
<html>
<charset
<head>
<title>TODO supply a title</title>
<meta charset="utf-8">
</head>
<body>
<div align="center">
<h2>Edition de mon profil</h2>
<br/><br/>
<form methode="POST" action="">
<table><tr>
<td align="right">
<label>Pseudo:</label>
</td>
<td>
<input type="text" name="newpseudo" value="<?php echo $user['pseudo']; ?>" placeholder="Pseudo" />
</td>
</tr>
<td align="right">
<label>Mail:</label>
</td>
<td>
<input type="text" name="newmail" value="<?php echo $user['mail']; ?>" placeholder="Mail" />
</td>
</tr>
<tr>
<td align="right">
<label>Passsword:</label>
</td>
<td>
<input type="password" name="newmdp1" placeholder="Mot de passe" />
</td>
</tr>
<tr>
<td align="right">
<label>Vérification password:</label>
</td>
<td>
<input type="password" name="newmdp2" placeholder="Confirmation mot de passe" />
</td>
</tr>
</table>
<br/><br/>
<input type="submit" value="Mise a jour du profil" />

                </form>
                <?php
                if(isset($msg)) { echo $msg;}
                ?>
            </div>
        </body>
</html>
<?php

}

?>

je voudrai mettre a jour le pseudo , mail ,password
mais rien ne se passe ??

7 réponses


Guique
Réponse acceptée
<form method="POST"> 

et non methode.

Lorsque tu vois que ta variable $_POST est vide, pense à tout de suite vérifier ta balise form.
Par défaut, un formulaire utilise la méthode GET.

Jonh Mrn
Auteur
Réponse acceptée

Bonsoir merci une erreur toute bete :)

Bonjour,

Pourrais-tu expliquer plus en détail ton problème.. car "rien ne se passe" ne nous avancera à rien.. rien en base de données ?.. tu n'as pas de retour ? Tu as fais des var_dump pour savoir ce que faisais ton code (pour voir par exemple à quel moment ça coince) ?

EDIT :
J'ai trouvé deux erreurs vers le début de ton code, tu tests si les mots de passe sont différents sauf que tu met ==.. or ça ne peut pas fonctionner.. (si mdp1 et mdp2 sont égaux > mot de passe différent.... il y a un problème).. ensuite tu met des points à chacun de tes égale.
Comme par exemple dans ce cas là :

if ($mdp1 == $mdp2) {
  $msg.= 'Mots de passe différents. ';
  }

Ce qui ne peut évidemment pas fonctionner.

Jonh Mrn
Auteur

Bonjour je voudrais mettre a jour un profil dans la base de donner et changer le pseudo , mail ,mot de pass.

voici mon code de depart que j'essaye de corriger car il ne marche pas ..
<?php
session_start();

$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
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 = $_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 = $_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']))) {
    $mdp1 = password_hash($_POST['newmdp1']);
    $mdp2 = password_hash($_POST['newmdp2']);
    if ($mdp1 == $mdp2) {

        $insertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?");
        $insertmdp->execute(array($mdp1, $_SESSION['id']));

    } else {
        $msg = "Vos mots de passes sont incorrects";
    }
}
?>
<!DOCTYPE html>
<html>
    <charset 
        <head>
            <title>TODO supply a title</title>
            <meta charset="utf-8">
        </head>
        <body>
            <div align="center">
                <h2>Edition de mon profil</h2>
                <br/><br/>
                <form methode="POST" action="">
                    <table><tr>
                            <td align="right">
                                <label>Pseudo:</label>
                            </td>
                            <td>
                                <input type="text" name="newpseudo" value="<?php echo $user['pseudo']; ?>" placeholder="Pseudo" />
                            </td>
                        </tr>
                        <td align="right">
                            <label>Mail:</label>
                        </td>
                        <td>
                            <input type="text" name="newmail" value="<?php echo $user['mail']; ?>" placeholder="Mail" />
                        </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <label>Passsword:</label>
                            </td>
                            <td>
                                <input type="password" name="newmdp1"  placeholder="Mot de passe" />
                            </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <label>Vérification password:</label>
                            </td>
                            <td>                            
                                <input type="password" name="newmdp2" placeholder="Confirmation mot de passe" />
                            </td>
                        </tr>
                    </table>
                    <br/><br/>
                    <input type="submit" value="Mise a jour du profil" />

                </form>
                <?php
                if(isset($msg)) { echo $msg;}
                ?>
            </div>
        </body>
</html>
<?php

}
else {
header('Location: connexion.php');
}

?>

normalement il doit les donner doivent se mettre a jour quand je change les coordonnée ?
Merci d'avance :)

Tu me donnes un code différent du premier.., as tu lu ce que je t'ai écris ?

Jonh Mrn
Auteur

Bonsoir
j'ai enlever les points au premier code mais il ne marche toujours pas.
est je ne comprend pas par rapport au mot de pass ?

Jonh Mrn
Auteur

Bonjour

j'ai modifier le code pour le mot de pass c'est meiux?
ensuite j'ai fait un var_dump de post et cela m'affiche array (size=0)
empty
pouvait -vous m'aider je suis debutant :)
<?php
session_start();

$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
if (isset($_SESSION['id'])) {
$requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
$requser->execute(array($_SESSION['id']));
$user = $requser->fetch();
var_dump($_POST);

if (isset($_POST['newpseudo']) AND ! empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo']) {
    $newpseudo = $_POST['newpseudo'];
    $insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
    $insertpseudo->execute(array($newpseudo, $_SESSION['id']));

}
if (isset($_POST['newmail']) AND ! empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail']) {
    $newmail = $_POST['newmail'];
    $insertmail = $bdd->prepare("UPDATE membres SET mail = ? WHERE id = ?");
    $insertmail->execute(array($newmail, $_SESSION['id']));

}
if (isset($_POST['newmdp1']) AND ! empty($_POST['newmdp1']) AND ( isset($_POST['newmdp2']) AND ! empty($_POST['newmdp2']))) {
    $hash_mdp = password_hash(trim($_POST['mdp']), PASSWORD_DEFAULT);
             if (trim($_POST['mdp']) == trim($_POST['mdp2'])) {

        $insertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?");
        $insertmdp->execute(array($mdp1, $_SESSION['id']));

    } else {
        $msg = "Vos mots de passes sont incorrects";
    }
}
?>
<!DOCTYPE html>
<html>
    <charset  
        <head>
            <title>TODO supply a title</title>
            <meta charset="utf-8">
        </head>
        <body>
            <div align="center">
                <h2>Edition de mon profil</h2>
                <br/><br/>
                <form methode="POST" action="profil.php">
                    <table><tr>
                            <td align="right">
                                <label>Pseudo:</label>
                            </td>
                            <td>
                                <input type="text" name="newpseudo" value="<?php echo $user['pseudo']; ?>" placeholder="Pseudo" />
                            </td>
                        </tr>
                        <td align="right">
                            <label>Mail:</label>
                        </td>
                        <td>
                            <input type="text" name="newmail" value="<?php echo $user['mail']; ?>" placeholder="Mail" />
                        </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <label>Passsword:</label>
                            </td>
                            <td>
                                <input type="password" name="newmdp1"  placeholder="Mot de passe" />
                            </td>
                        </tr>
                        <tr>
                            <td align="right">
                                <label>Vérification password:</label>
                            </td>
                            <td>                             
                                <input type="password" name="newmdp2" placeholder="Confirmation mot de passe" />
                            </td>
                        </tr>
                    </table>
                    <br/><br/>
                    <input type="submit" value="Mise a jour du profil" />

                </form>
                <?php
                if(isset($msg)) { echo $msg;}
                ?>
            </div>
        </body>
</html>
<?php

}
else {

}

?>