Fonction Php qui permet d'éditer un profil

Petit nouveau ! | 3 Messages

05 juin 2019, 14:59

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>

Avatar du membre
Mammouth du PHP | 1609 Messages

05 juin 2019, 16:45

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
Développeur web depuis + de 20 ans

Petit nouveau ! | 3 Messages

05 juin 2019, 17:21

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

Avatar du membre
Mammouth du PHP | 1609 Messages

05 juin 2019, 17:31

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);
Développeur web depuis + de 20 ans

Petit nouveau ! | 3 Messages

05 juin 2019, 17:36

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

Avatar du membre
Mammouth du PHP | 1609 Messages

05 juin 2019, 17:41

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.
Développeur web depuis + de 20 ans

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 juin 2019, 18:10

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
Quand tout le reste a échoué, lisez le mode d'emploi...