Page 1 sur 1

Fonction Php qui permet d'éditer un profil

Posté : 05 juin 2019, 14:59
par Athenos
Bonjour à tous !

Je viens à vous car j'ai un problème que je n'arrive a résoudre.

Mon code a pour but de changer une Image, pseudo, email, mdp dans la base de donnée d'un utilisateur pour en mettre une nouvelle ( éditer son profil en gros), cependant rien ne se passe, et je n'arrive pas à comprendre pourquoi

Je bosse dessus depuis Lundi et je n'arrive absolument pas à trouver pourquoi cela ne marche pas.

Merci de votre aide
 
<?php
try {
    $PARAM_hote = 'localhost'; // le chemin vers le serveur
    $PARAM_port = '3306';
    $PARAM_nom_bd = 'projet'; // le nom de votre base de données
    $PARAM_utilisateur = ''; // nom d'utilisateur pour se connecter
    $PARAM_mot_passe = ''; // mot de passe de l'utilisateur pour se connecter
    $dsn = 'mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bd;
//var_dump($dsn);
    $connexion = new PDO($dsn, $PARAM_utilisateur, $PARAM_mot_passe);
    $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

} catch (Exception $e) {
    echo 'Erreur : ' . $e->getMessage() . '<br />';
    echo 'N° : ' . $e->getCode();
}

session_start();

echo($_SESSION['Id_Utilisateur']);
echo($_SESSION['Pseudo']);
echo($_SESSION['Mdp']);


if (isset($_SESSION['Id_Utilisateur'])) {
    $requser = $connexion->prepare("SELECT * FROM utilisateur WHERE Id_Utilisateur = ?");
    $requser->execute(array($_SESSION['Id_Utilisateur']));
    $user = $requser->fetch();
    if (isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['Pseudo']) {
        $newpseudo = htmlspecialchars($_POST['newpseudo']);
        $insertpseudo = $connexion->prepare("UPDATE utilisateur SET Pseudo = ? WHERE Id_Utilisateur = ?");
        $insertpseudo->execute(array($newpseudo, $_SESSION['Id_Utilisateur']));
        header('Location: profil.php');
        echo('ça marche');
    }
    if (isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['E_Mail']) {
        $newmail = htmlspecialchars($_POST['newmail']);
        $insertmail = $connexion->prepare("UPDATE utilisateur SET E_Mail = ? WHERE Id_Utilisateur = ?");
        $insertmail->execute(array($newmail, $_SESSION['Id_Utilisateur']));
        echo('ça marche');
    }
    if (isset($_SESSION['Id_Utilisateur'])) {
        $requser = $connexion->prepare("SELECT * FROM utilisateur WHERE Id_Utilisateur = ?");
        $requser->execute(array($_SESSION['Id_Utilisateur']));
        echo($_SESSION['Id_Utilisateur']);
        $user = $requser->fetch();
        if (isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['Pseudo']) {
            $newpseudo = ($_POST['newpseudo']);
            $insertpseudo = $connexion->prepare("UPDATE utilisateur SET Pseudo = ? WHERE Id_Utilisateur = ?");
            $insertpseudo->execute(array($newpseudo, $_SESSION['Id_Utilisateur']));
            echo('pseudo changé');
        }
        if (isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['E_Mail']) {
            $newmail = ($_POST['newmail']);
            $insertmail = $connexion->prepare("UPDATE utilisateur SET E_Mail = ? WHERE Id_Utilisateur = ?");
            $insertmail->execute(array($newmail, $_SESSION['Id_Utilisateur']));
            echo('mail changé');
        }
        if (isset($_POST['newmdp1']) AND !empty($_POST['newmdp1']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2'])) {
            $mdp1 = ($_POST['newmdp1']);
            $mdp2 = ($_POST['newmdp2']);
            if ($mdp1 == $mdp2) {
                $insertmdp = $connexion->prepare("UPDATE utilisateur SET Mdp = ? WHERE Id_Utilisateur = ?");
                $insertmdp->execute(array($mdp1, $_SESSION['Id_Utilisateur']));
                echo('mdp changé');
            } else {
                $msg = "Vos deux mdp ne correspondent pas !";
            }
        } else {
            echo('erreur2');
        }
    } else {
        echo('erreur1');
    }
}


?>
<div class="limiter">
    <div class="container-login">

        <div class="wrap">

            <div class="bouton-retour">
                <a href="#home" class="retour">
                    <i class="fas fa-arrow-left"></i>
                </a>
            </div>

            <h2>Editer mon profil</h2>


            <form id="form" action="" method="post" enctype="multipart/form-data">

                <div class="custom-file">
                    <label
                            class="custom-file-label"
                            for="imgUtil"
                    >Choisir une image...</label>
                    <div class="img-utilisateur inscri">
                        <img src=""
                             id="previewImage"
                             class="img-responsive imgArtiste"
                             alt="Nouvelle photo de profil"
                             width="160px"
                        />
                    </div>
                    <input
                            type="file"
                            class="custom-file-input"
                            id="imgUtil"
                            accept="image/png, image/jpeg, image/gif"
                    >
                </div>

                <div class="wrap-input validate-input" data-validate="Pseudo">
                    <input class="input" type="text" name="newpseudo" id="newpseudo">
                    <span class="focus-input" data-placeholder="Pseudo"></span>
                </div>

                <div class="wrap-input validate-input" data-validate="Enter password">
						<span class="btn-show-pass">
							<i class="zmdi zmdi-eye"></i>
						</span>
                    <input class="input" type="text" name="newmail" id="newmail">
                    <span class="focus-input" data-placeholder="Mail"></span>
                </div>


                <div class="wrap-input validate-input" data-validate="Enter password">
						<span class="btn-show-pass">
							<i class="zmdi zmdi-eye"></i>
						</span>
                    <input class="input" type="password" name="newmdp1" id="newmdp1">
                    <span class="focus-input" data-placeholder="Mot de passe"></span>
                </div>

                <div class="wrap-input validate-input" data-validate="Enter password">
						<span class="btn-show-pass">
							<i class="zmdi zmdi-eye"></i>
						</span>
                    <input class="input" type="password" name="newmdp2" id="newmdp2">
                    <span class="focus-input" data-placeholder="Confirmation du mot de passe"></span>
                </div>


                <input type="submit" value="Mettre à jour mon profil !">
                       
        </div>
        </form>

    </div>
</div>
</div>

Re: Fonction Php qui permet d'éditer un profil

Posté : 05 juin 2019, 16:45
par Saian
Salut Athenos, tu as un echo qui s'affiche ? un message d'erreur ? tu es sûr que ça passe bien sur ta requête d'update ? tu es sûr que la requête ne fait pas d'erreur ?

PDOStatement::execute retourne false en cas d'erreur mais tu ne le testes nul part.
https://www.php.net/manual/fr/pdostatement.execute.php

Et tu peux récupérer l'erreur avec PDO::errorInfo s'il c'est en erreur.
https://www.php.net/manual/fr/pdo.errorinfo.php

Re: Fonction Php qui permet d'éditer un profil

Posté : 05 juin 2019, 17:21
par Athenos
Salut Saian !
Quand je fais par exemple mes echo :
echo $_SESSION['Pseudo'];
echo $_SESSION['id'];
echo $_SESSION['E_Mail'];
j'ai bien les données qui sont affiché, mais je n'ai aucun message d'erreur
*Update : plus de message d'erreur, mais rien ne se passe

Re: Fonction Php qui permet d'éditer un profil

Posté : 05 juin 2019, 17:31
par Saian
T'as bien une erreur alors, type erreur 500.

Essaie de mettre ça au début de ton script, avec de la chance le message d'erreur s'affichera et ça pourra t'aider à comprendre.
ini_set('display_errors', 'On');
error_reporting(E_ALL);

Re: Fonction Php qui permet d'éditer un profil

Posté : 05 juin 2019, 17:36
par Athenos
J'ai testé ce que tu m'as donné ( je me permet de te tutoyer ), mais toujours aucun message d'erreur, et rien n'est update, ça réinitialise juste la page quand je clique sur mon bouton

Re: Fonction Php qui permet d'éditer un profil

Posté : 05 juin 2019, 17:41
par Saian
Tu devrais désactiver le header('Location: profil.php'); le temps de voir les echo qui ressortent. Ca t'aidera à comprendre par où ça passe et où ça ne passe pas.

Re: Fonction Php qui permet d'éditer un profil

Posté : 05 juin 2019, 18:10
par @rthur
Bonjour,

Il faut impérativement que tu regardes dans les logs PHP et MySQL/MariaDB pour voir les messages d'erreur, ça va grandement t'aider pour débuguer :D