8722 sujets

Développement web côté serveur, CMS

Pages :
Bonjour à tous et à toutes,

Je suis confronté à un soucis depuis pas mal de temps concernant la consultation et la modification d'un profil, et j'aurais besoin d'un sérieux coup de main pour passer à la suite Smiley decu .

Le système est composé de 3 page, ma page voirprofil.php, ma page consulter.php et ma page modifier.php

Lorsque j'arrive sur ma page consulter.php

-les informations provenant de la base de donnée ne s'affiche pas Smiley ohwell pourtant ma requête me semble correct et sans erreur.

-Lorsque je suis sur ma page modification du profil, que j'insère des informations avec un avatar etc, et que je valide, la validation s'effectue bien, mais aucune modification n'as lieu dans ma base de donnée.

Voici le code de mes pages :

voirprofil.php

<?php session_start();
require_once 'connexioninscription.inc.php';
if (empty($_SESSION['membre_id'])) {
    echo '<p class="texteerror">' . "vous n'avez pas accès à cette page." . '<p>';
    echo '<p class="textewarning">' . "Vous devez être connecté pour accèder à cette page." . '<p>';
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="voir le profil." />
<meta name="keywords" content="profil" />
<title>voir le profil </title>
<link rel="shortcut icon" sizes="32x32" title="profil" type="image/png" href="mafavicon.png" />
<link href="css1.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="container">
 <?php
    include 'header.inc.php';
    include 'menus.inc.php';
    ?>
    <div id="cadreprofil">
        <?php
        if (empty($_GET['action'])) {
            echo '<p class="texteerror" > Cette action est impossible </p >';
        } else {
            switch ($_GET['action']) {
                //Si c'est "consulter"
                case "consulter":
                    //On récupère les infos du membre
                    include 'consulter.php';
                    break;
                //Si on choisit de modifier son profil
                case "modifier":
                    include 'modifier.php';
                    break;
                default; //Si jamais c'est aucun de ceux là c'est qu'il y a eu un problème <img src="http://forum.phpfrance.com/images/smilies/icon_surprised.gif" alt=":o" title="Surprised" />
                    echo '<p class="texteerror">Cette action est impossible</p>';
            } //Fin du switch
        }
        ?>
    </div>
    <?php
    include 'footer.inc.php';
    ?>
</div>
</body>
</html>


ma page consulter.php

<?php session_start();
require_once('connexioninscription.inc.php');
$query = $bdd->prepare('SELECT membre_pseudo, membre_mail, date_format(\'%d/%m/%Y\',membre_inscription), membre_avatar, membre_post FROM membres WHERE membre_id=:membre');
$query->bindValue(':membre', $membre, PDO: [langue]ARAM_INT);
$ret = $query->execute();
if ($ret === false) {
    $err = $bdd->errorInfo();
    echo 'Erreur SQL : ' . $err[2];
} else {
    $data = $query->fetch(PDO::FETCH_ASSOC);
    echo '<div id="infosmembre">';
    echo '<p class="textesimple"><img src="./images/avatars/' . $data['membre_avatar'] . '"
                                      alt="Votre avatar" /></p>';
    echo '<h1 class="textesimple">Profil de ' . htmlspecialchars($data['membre_pseudo']) . '</h1>';
    echo '<p class="textesimple">Modifier votre : <a href="voirprofil.php?action=modifier">Profil</a>';
    echo '</div>';

    echo '<div id="infosmembre">';

    echo '<div id="cadrepseu"><p class="classinscr">Votre pseudo : </p><p class="texteblancb">' . htmlspecialchars($data['membre_pseudo']) . '</b></p></div>';

    echo '<div id="cadrepseu"><p class="classinscr">Votre adresse mail courante : </p><p class="texteblancb"><a href="mailto:' . $data['membre_mail'] . '">' . htmlspecialchars($data['membre_mail']) . '</a></p></div>';

    echo '<div id="cadrepseu"><p class="classinscr">Ce membre est inscrit depuis le <p><p class="texteblancb">' . $data['membre_inscription'] . '</p></div>';

    echo '<div id="cadrepseu"><p class="classinscr">Vous avez posté : </p><p class="texteblancb">' . $data['membre_post'] . ' message(s)</p></div>';

    echo '</div>';

    $query->CloseCursor();
}
?>


et ma page modifier.php :

<?php session_start();
if (empty($_POST['sent'])) { // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire

    //On commence par s'assurer que le membre est connecté
    if (isset ($_SESSION['membre_id'])) {

        //On prend les infos du membre
        $query = $bdd->prepare('SELECT membre_pseudo, membre_mail, membre_avatar FROM membres WHERE membre_id=:id');
        $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
        $query->execute();
        $data = $query->fetch();
        echo '<div id="infosmembre">';
        echo '<p class="textesimple">' . "Consulter votre : " . '<a href="voirprofil.php?action=consulter">' . "Profil" . '</a>';
        echo '<h1 class="textesimple">' . "Modification de votre profil" . '</h1>';
        echo '</div>';

        echo '<div id="infosmembre">';
        echo '<form method="post" action="voirprofil.php?action=modifier" enctype="multipart/form-data">

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Identifiants</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['membre_pseudo']) . '</strong></p></div>
          <div id="cadrepseu"><p class="classinscr"><label for="pass">Nouveau mot de Passe :</label>
        <input type="password" name="mdp" id="pass" value="' . $data['membre_mdp'] . '" /></p></div>
        <div id="cadrepseu"><p class="classinscr"><label for="confirm">Confirmer le mot de passe :</label>
        <input type="password" name="confirm" id="confirm" value="' . $data['membre_mdp'] . '"/></p></div>
        </fieldset>

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Contacts</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr"><label for="email">Votre adresse E_Mail :</label>
        <input type="text" name="mail" id="email"
        value="' . $data['membre_mail'] . '" /></p></div>

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Profil sur le forum</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr"><label for="avatar">Changer votre avatar :</label>
        <input type="file" name="avatar" id="avatar" />
        (Taille max : 10 Mo)<br /><br />
        <label><input type="checkbox" name="delete" value="Delete" />
        Supprimer l avatar</label>
        Avatar actuel :
        <img src="./images/avatars/' . $data['membre_avatar'] . '"
        alt="pas d avatar" /></p></div>


        </fieldset>
        <p class="classinscr"><input type="submit" value="Modifier son profil" />
        <input type="hidden" id="sent" name="sent" value="1" />
        </p></form>';

        echo '</div>';

        $query->CloseCursor();

    } else {
        echo '<p class="texteerror">' . "Vous n'avez pas accès à cette page." . '</p>';
        echo '<p class="textewarning">' . "Vous devez être connecté pour accèder à cette page." . '</p>';
    }
} else { //Cas du traitement

    //On déclare les variables
    $mdp_erreur = NULL;
    $email_erreur1 = NULL;
    $email_erreur2 = NULL;
    $avatar_erreur = NULL;
    $avatar_erreur1 = NULL;
    $avatar_erreur2 = NULL;
    $avatar_erreur3 = NULL;

    //Encore et toujours notre belle variable $i [langue]
    $i = 0;
    $temps = time();
    $email = $_POST['mail'];
    $pass = ($_POST['mdp']);
    $confirm = ($_POST['confirm']);
    //Vérification du mdp
    if ($pass != $confirm || empty($confirm) || empty($pass)) {
        $mdp_erreur = '<p class="texteerror">' . "Votre mot de passe et votre confirmation diffèrent ou sont vides" . '</p>';
        $i++;
    }

    //Vérification de l'adresse email
    //Il faut que l'adresse email n'ait jamais été utilisée (sauf si elle n'a pas été modifiée)

    //On commence donc par récupérer le mail
    $query = $bdd->prepare('SELECT membre_mail FROM membres WHERE membre_id=:id');
    $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
    $query->execute();
    $data = $query->fetch();
    if (strtolower($data['membre_mail']) != strtolower($email)) {
        //Il faut que l'adresse email n'ait jamais été utilisée
        $query = $bdd->prepare('SELECT COUNT(*) AS nbr FROM membres WHERE membre_mail=:mail');
        $query->bindValue(':mail', $email, PDO: [langue]ARAM_STR);
        $query->execute();
        $mail_free = ($query->fetchColumn() == 0) ? 1 : 0;
        $query->CloseCursor();
        if (!$mail_free) {
            $email_erreur1 = '<p class="textewarning">' . "Votre adresse email est déjà utilisé par un membre" . '</p>';
            $i++;
        }

        //On vérifie la forme maintenant
        if (!preg_match("#^[a-z0-9A-Z._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email)) {
            $email_erreur2 = '<p class="texteerror">' . "Votre nouvelle adresse E-Mail n'a pas un format valide" . '</p>';
            $i++;
        }
    }
    //Vérification de l'avatar

    if (!empty($_FILES['membre_avatar']['size'])) {
        //On définit les variables :
        $maxsize = 100000; //Poid de l'image
        $maxwidth = 500; //Largeur de l'image
        $maxheight = 500; //Longueur de l'image
        //Liste des extensions valides
        $extensions_valides = array('jpg', 'jpeg', 'gif', 'png', 'bmp');

        if ($_FILES['membre_avatar']['error'] > 0) {
            $avatar_erreur = '<p class="texteerror">' . "Erreur lors du tranfsert de l'avatar : " . '</p>';
        }
        if ($_FILES['membre_avatar']['size'] > $maxsize) {
            $i++;
            $avatar_erreur1 = "Le fichier est trop gros :
        (" . $_FILES['membre_avatar']['size'] . " Octets
        contre " . $maxsize . " Octets)";
        }

        $image_sizes = getimagesize($_FILES['membre_avatar']['tmp_name']);
        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) {
            $i++;
            $avatar_erreur2 = "Image trop large ou trop longue :
        (<strong>" . $image_sizes[0] . "x" . $image_sizes[1] . " contre
        " . $maxwidth . "x" . $maxheight . ")";
        }

        $extension_upload = strtolower(substr(strrchr($_FILES['membre_avatar']['name'], '.'), 1));
        if (!in_array($extension_upload, $extensions_valides)) {
            $i++;
            $avatar_erreur3 = '<p class="texteerror">' . "Extension de l'avatar incorrecte" . '</p>';
        }
    }
    echo '<div id="mdup"><h1 class="textesimple">'."Modification d'un profil".'</h1></div>';

    if ($i == 0) { // Si $i est vide, il n'y a pas d'erreur
        if (!empty($_FILES['membre_avatar']['size'])) {
            $nomavatar = move_avatar($_FILES['membre_avatar']);
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=:avatar WHERE membre_id=:id');
            $query->bindValue(':avatar', $nomavatar, PDO: [langue]ARAM_STR);
            $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
            $query->execute();
            $query->CloseCursor();
        }

        //Une nouveauté ici : on peut choisis de supprimer l'avatar
        if (isset($_POST['delete'])) {
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=0 WHERE membre_id=:id');
            $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
            $query->execute();
            $query->CloseCursor();
        }

        echo '<h1 class="textesimple">'."Modification terminée".'</h1>';
        echo '<p class="textesimple">'."Votre profil a été modifié avec succès !".'</p>';
        echo '<p class="textesimple">'. "Cliquez ".'<a href="./index.php">'." ici ".'</a>'."
        pour revenir à la page d accueil".'</p>';
		
$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
        $query->bindValue(':mdp',$pass,PDO: [langue]ARAM_INT);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);
        $query->execute();
        $query->CloseCursor();
		
    } else {
        echo '<h1 class="texteerror">Modification interrompue</h1>';
        echo '<p class="texteerror">Une ou plusieurs erreurs se sont produites pendant la modification du profil</p>';
        echo '<p class="texteerror">' . $i . ' erreur(s)</p>';
        echo '<p class="texteerror">' . $mdp_erreur . '</p>';
        echo '<p class="texteerror">' . $email_erreur1 . '</p>';
        echo '<p class="texteerror">' . $email_erreur2 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur1 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur2 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur3 . '</p>';
        echo '<p class="textewarning"> Cliquez <a href="./voirprofil.php?action=modifier">ici</a> pour recommencer</p>';
    }
}
?>


Merci à vous pour votre attention et votre aide, j'en aurais vraiment besoin,
Sincèrement.
Bonjour,
Je n'ai pas lu tout ton code en détail, mais tout d'abord, j'ai vu ces lignes:
consulter.php:
$query->bindValue(':membre', $membre, PDO:: PARAM_INT);

modifier.php:
$query->bindValue(':id', $id, PDO:: PARAM_INT);

A aucun moment je ne vois que tu initialise $membre et $id... Est ce que tu le fais quelque part auparavant dans un include? Sinon, il y a de forte chance que ta requête ne te renvoie rien si ces variables sont vides.

Autres chose, je pense (c'est un avis perso) que tu devrais écrire du code dans ce style:
    } else {
       ?>
<h1 class="texteerror">Modification interrompue</h1>
        <p class="texteerror">Une ou plusieurs erreurs se sont produites pendant la modification du profil</p>
        <p class="texteerror"><?php echo $i; ?> erreur(s)</p>
        <p class="texteerror"><?php echo $mdp_erreur; ?></p>
        <p class="texteerror"><?php echo $email_erreur1; ?></p>
        <p class="texteerror"><?php echo $email_erreur2; ?></p>
        <p class="texteerror"><?php echo $avatar_erreur; ?></p>
        <p class="texteerror"><?php echo $avatar_erreur1; ?></p>
        <p class="texteerror"><?php echo $avatar_erreur2; ?></p>
        <p class="texteerror"><?php echo $avatar_erreur3; ?></p>
        <p class="textewarning"> Cliquez <a href="./voirprofil.php?action=modifier">ici</a> pour recommencer</p>
<?php
    }

A mon avis, ça sera un peu plus lisible.
Bonjour à toi,
Merci !!!! Effectivement le problème venais d'ici =),
j'ai corrigé ça en rajoutant devant chaque requête la correspondance a $id ou $membre,
en revanche concernant la modification ou l'ajout d'avatar ( d'une image du profil ) rien ne marche Smiley decu .

Merci vraiment pour ton aide !
Sincèrement.
L'upload de fichier m'a toujours énervé, à chaque fois je perds un temps fou à tout debugger...
Es-tu sur de ce bout de code:
            $nomavatar = move_avatar($_FILES['membre_avatar']);
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=:avatar WHERE membre_id=:id');
            $query->bindValue(':avatar', $nomavatar, PDO:: PARAM_STR);

Fais un echo de $nomavatar pour voir ce qu'elle contient. Ou alors, peux-tu donner le code de la fonction move_avatar?
Bonjour GroquikMLV et merci pour ton attention Smiley smile ,
J'ai tenté un echo de $nomavatar mais rien ne se passe Smiley decu , concernant move_avatar
je pensais que $nomavatar = move_avatar($_FILES['membre_avatar']); définissait sa fonction Smiley ohwell
Je ne suis pas un grand professionnel du php encore xD est si il était possible d'avoir quelques informations sur comment définir cette fonction Smiley ohwell ,

Concernant mon code je suis tombé sur un autre soucis discret mais embêtant ^^',
Lorsque je me met a la place du membre pour me connecter a un compte, et modifier le profil après la validation, le mot de passe se supprime automatiquement laissant une case vide dans la base de donnée membre pour le mot de passe Smiley decu (( je ne comprend pas non plus d'ou pourrait venir cette mauvaise manip Smiley ohwell .

Merci pour ton aide et ton attention sincèrement.
Voici le code mis à jour de ma page modifier.php :

<?php session_start();
if (empty($_POST['sent'])) { // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire

    //On commence par s'assurer que le membre est connecté
    if (isset ($_SESSION['membre_id'])) {

        //On prend les infos du membre
		$id=($_SESSION['membre_id']);
        $query = $bdd->prepare('SELECT membre_pseudo, membre_mail, membre_avatar FROM membres WHERE membre_id=:id');
        $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
        $query->execute();
        $data = $query->fetch();
        echo '<div id="infosmembre">';
        echo '<p class="textesimple">' . "Consulter votre : " . '<a href="voirprofil.php?action=consulter">' . "Profil" . '</a>';
        echo '<h1 class="textesimple">' . "Modification de votre profil" . '</h1>';
        echo '</div>';

        echo '<div id="infosmembre">';
        echo '<form method="post" action="voirprofil.php?action=modifier" enctype="multipart/form-data">

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Identifiants</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['membre_pseudo']) . '</strong></p></div>
          <div id="cadrepseu"><p class="classinscr"><label for="pass">Nouveau mot de Passe :</label>
        <input type="password" name="mdp" id="pass" value="' . $data['membre_mdp'] . '" /></p></div>
        <div id="cadrepseu"><p class="classinscr"><label for="confirm">Confirmer le mot de passe :</label>
        <input type="password" name="confirm" id="confirm" value="' . $data['membre_mdp'] . '"/></p></div>
        </fieldset>

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Contacts</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr"><label for="email">Votre adresse E_Mail :</label>
        <input type="text" name="mail" id="email"
        value="' . $data['membre_mail'] . '" /></p></div>

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Profil sur le forum</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr"><label for="avatar">Changer votre avatar :</label>
        <input type="file" name="avatar" id="avatar" />
        (Taille max : 10 Mo)<br /><br />
        <label><input type="checkbox" name="delete" value="Delete" />
        Supprimer l avatar</label>
        Avatar actuel :
        <img src="./images/avatars/' . $data['membre_avatar'] . '"
        alt="pas d avatar" /></p></div>


        </fieldset>
        <p class="classinscr"><input type="submit" value="Modifier son profil" />
        <input type="hidden" id="sent" name="sent" value="1" />
        </p></form>';

        echo '</div>';

        $query->CloseCursor();

    } else {
        echo '<p class="texteerror">' . "Vous n'avez pas accès à cette page." . '</p>';
        echo '<p class="textewarning">' . "Vous devez être connecté pour accèder à cette page." . '</p>';
    }
} else { //Cas du traitement

    //On déclare les variables
    $mdp_erreur = NULL;
    $email_erreur1 = NULL;
    $email_erreur2 = NULL;
    $avatar_erreur = NULL;
    $avatar_erreur1 = NULL;
    $avatar_erreur2 = NULL;
    $avatar_erreur3 = NULL;

    //Encore et toujours notre belle variable $i [langue]
    $i = 0;
    $temps = time();
    $email = $_POST['mail'];
    $pass = ($_POST['mdp']);
    $confirm = ($_POST['confirm']);
    //Vérification du mdp
    if ($pass != $confirm || empty($confirm) || empty($pass)) {
        $mdp_erreur = '<p class="texteerror">' . "Votre mot de passe et votre confirmation diffèrent ou sont vides" . '</p>';
        $i++;
    }

    //Vérification de l'adresse email
    //Il faut que l'adresse email n'ait jamais été utilisée (sauf si elle n'a pas été modifiée)

    //On commence donc par récupérer le mail
	$id=($_SESSION['membre_id']);
    $query = $bdd->prepare('SELECT membre_mail FROM membres WHERE membre_id=:id');
    $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
    $query->execute();
    $data = $query->fetch();
    if (strtolower($data['membre_mail']) != strtolower($email)) {
        //Il faut que l'adresse email n'ait jamais été utilisée
        $query = $bdd->prepare('SELECT COUNT(*) AS nbr FROM membres WHERE membre_mail=:mail');
        $query->bindValue(':mail', $email, PDO: [langue]ARAM_STR);
        $query->execute();
        $mail_free = ($query->fetchColumn() == 0) ? 1 : 0;
        $query->CloseCursor();
        if (!$mail_free) {
            $email_erreur1 = '<p class="textewarning">' . "Votre adresse email est déjà utilisé par un membre" . '</p>';
            $i++;
        }

        //On vérifie la forme maintenant
        if (!preg_match("#^[a-z0-9A-Z._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email)) {
            $email_erreur2 = '<p class="texteerror">' . "Votre nouvelle adresse E-Mail n'a pas un format valide" . '</p>';
            $i++;
        }
    }
    //Vérification de l'avatar

    if (!empty($_FILES['membre_avatar']['size'])) {
        //On définit les variables :
        $maxsize = 100000; //Poid de l'image
        $maxwidth = 500; //Largeur de l'image
        $maxheight = 500; //Longueur de l'image
        //Liste des extensions valides
        $extensions_valides = array('jpg', 'jpeg', 'gif', 'png', 'bmp');

        if ($_FILES['membre_avatar']['error'] > 0) {
            $avatar_erreur = '<p class="texteerror">' . "Erreur lors du tranfsert de l'avatar : " . '</p>';
        }
        if ($_FILES['membre_avatar']['size'] > $maxsize) {
            $i++;
            $avatar_erreur1 = "Le fichier est trop gros :
        (" . $_FILES['membre_avatar']['size'] . " Octets
        contre " . $maxsize . " Octets)";
        }

        $image_sizes = getimagesize($_FILES['membre_avatar']['tmp_name']);
        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) {
            $i++;
            $avatar_erreur2 = "Image trop large ou trop longue :
        (<strong>" . $image_sizes[0] . "x" . $image_sizes[1] . " contre
        " . $maxwidth . "x" . $maxheight . ")";
        }

        $extension_upload = strtolower(substr(strrchr($_FILES['membre_avatar']['name'], '.'), 1));
        if (!in_array($extension_upload, $extensions_valides)) {
            $i++;
            $avatar_erreur3 = '<p class="texteerror">' . "Extension de l'avatar incorrecte" . '</p>';
        }
    }
    echo '<div id="mdup"><h1 class="textesimple">'."Modification d'un profil".'</h1></div>';

    if ($i == 0) { // Si $i est vide, il n'y a pas d'erreur
        if (!empty($_FILES['membre_avatar']['size'])) {
            $nomavatar = move_avatar($_FILES['membre_avatar']);
			$id=($_SESSION['membre_id']);
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=:avatar WHERE membre_id=:id');
            $query->bindValue(':avatar', $nomavatar, PDO: [langue]ARAM_STR);
            $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
            $query->execute();
            $query->CloseCursor();
        }

        //Une nouveauté ici : on peut choisis de supprimer l'avatar
        if (isset($_POST['delete'])) {
			$id=($_SESSION['membre_id']);
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=0 WHERE membre_id=:id');
            $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
            $query->execute();
            $query->CloseCursor();
        }

        echo '<h1 class="textesimple">'."Modification terminée".'</h1>';
        echo '<p class="textesimple">'."Votre profil a été modifié avec succès !".'</p>';
        echo '<p class="textesimple">'. "Cliquez ".'<a href="./index.php">'." ici ".'</a>'."
        pour revenir à la page d accueil".'</p>';
$pass=($_SESSION['membre_mdp']);
$iemail=($_SESSION['membre_mail']);
$id=($_SESSION['membre_id']);		
$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
        $query->bindValue(':mdp',$pass,PDO: [langue]ARAM_INT);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);
        $query->execute();
        $query->CloseCursor();
		
    } else {
        echo '<h1 class="texteerror">Modification interrompue</h1>';
        echo '<p class="texteerror">Une ou plusieurs erreurs se sont produites pendant la modification du profil</p>';
        echo '<p class="texteerror">' . $i . ' erreur(s)</p>';
        echo '<p class="texteerror">' . $mdp_erreur . '</p>';
        echo '<p class="texteerror">' . $email_erreur1 . '</p>';
        echo '<p class="texteerror">' . $email_erreur2 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur1 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur2 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur3 . '</p>';
        echo '<p class="textewarning"> Cliquez <a href="./voirprofil.php?action=modifier">ici</a> pour recommencer</p>';
    }
}
?>
Pour le problème de l'avatar, on va le mettre de coté pour le moment, car ça risque d'être long à régler, vu qu’apparemment tu débutes.

Concentrons-nous donc sur le mot de passe qui est effacé.
D'où cela peut-il venir? Si le mot de passe était déjà présent dans la base et qu'il est à présent vide, cela ne veut dire qu'une chose: il y a une requête UPDATE qui met à jour le mot de passe et qui met la nouvelle valeur à vide. Tu dois donc chercher dans ton code toutes les requêtes UPDATE qui concerne ton mot de passe. Tu as de la chance, dans ton code il n'y en n'a qu'une:
$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');

Tu sais donc que ton problème vient de là. Maintenant, on se doute que :mdp doit être vide, donc on regarde ce qu'elle contient:
$query->bindValue(':mdp',$pass,PDO:: PARAM_INT);

ici, on voit que :mdp correspond au contenu de $pass. On regarde donc ce que contient $pass:
$pass=($_SESSION['membre_mdp']);

Et là, BIM, je pense que ton erreur est ici: à aucun moment dans ton code je n'ai vu que tu affectes une valeur à $_SESSION['membre_mdp'], donc $_SESSION['membre_mdp'] est vide! D'où ton problème. Il faut qu'à la connexion de l'utilisateur (donc dans consulter.php), à un moment, tu fasses:
$_SESSION['membre_mdp'] = $mdp

avec $mdp qui contient le mot de passe que tu auras récupéré dans ta base de données.
Tu devras peut-être faire de même avec le mail et l'id, car là aussi, dans ton cas, $_SESSION['membre_mail'] et $_SESSION['membre_id'] sont vides je pense.
Merci indéfiniment Smiley lol ,

j'avais également rajouté des définitions de variable qui existait déjà ce qui devait surement être une partie du problème, dans le formulaire for pass ne correspondait pas au mdp je ne sais pas si ça a changé grand chose mais ça à l'air de marché Smiley lol ,


Voici mon code mis à jour > modifier.php :

<?php session_start();
if (empty($_POST['sent'])) { // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire

    //On commence par s'assurer que le membre est connecté
    if (isset ($_SESSION['membre_id'])) {

        //On prend les infos du membre
		$id=($_SESSION['membre_id']);
        $query = $bdd->prepare('SELECT membre_pseudo, membre_mail, membre_avatar FROM membres WHERE membre_id=:id');
        $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
        $query->execute();
        $data = $query->fetch();
        echo '<div id="infosmembre">';
        echo '<p class="textesimple">' . "Consulter votre : " . '<a href="voirprofil.php?action=consulter">' . "Profil" . '</a>';
        echo '<h1 class="textesimple">' . "Modification de votre profil" . '</h1>';
        echo '</div>';

        echo '<div id="infosmembre">';
        echo '<form method="post" action="voirprofil.php?action=modifier" enctype="multipart/form-data">

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Identifiants</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['membre_pseudo']) . '</strong></p></div>
          <div id="cadrepseu"><p class="classinscr"><label for="mdp">Nouveau mot de Passe :</label>
        <input type="password" name="mdp" id="pass" value="' . $data['membre_mdp'] . '" /></p></div>
        <div id="cadrepseu"><p class="classinscr"><label for="confirm">Confirmer le mot de passe :</label>
        <input type="password" name="confirm" id="confirm" value="' . $data['membre_mdp'] . '"/></p></div>
        </fieldset>

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Contacts</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr"><label for="email">Votre adresse E_Mail :</label>
        <input type="text" name="mail" id="email"
        value="' . $data['membre_mail'] . '" /></p></div>

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Profil sur le forum</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr"><label for="avatar">Changer votre avatar :</label>
        <input type="file" name="avatar" id="avatar" />
        (Taille max : 10 Mo)<br /><br />
        <label><input type="checkbox" name="delete" value="Delete" />
        Supprimer l avatar</label>
        Avatar actuel :
        <img src="./images/avatars/' . $data['membre_avatar'] . '"
        alt="pas d avatar" /></p></div>


        </fieldset>
        <p class="classinscr"><input type="submit" value="Modifier son profil" />
        <input type="hidden" id="sent" name="sent" value="1" />
        </p></form>';

        echo '</div>';

        $query->CloseCursor();

    } else {
        echo '<p class="texteerror">' . "Vous n'avez pas accès à cette page." . '</p>';
        echo '<p class="textewarning">' . "Vous devez être connecté pour accèder à cette page." . '</p>';
    }
} else { //Cas du traitement

    //On déclare les variables
    $mdp_erreur = NULL;
    $email_erreur1 = NULL;
    $email_erreur2 = NULL;
    $avatar_erreur = NULL;
    $avatar_erreur1 = NULL;
    $avatar_erreur2 = NULL;
    $avatar_erreur3 = NULL;

    //Encore et toujours notre belle variable $i [langue]
    $i = 0;
    $temps = time();
    $email = $_POST['mail'];
    $pass = ($_POST['mdp']);
    $confirm = ($_POST['confirm']);
    //Vérification du mdp
    if ($pass != $confirm || empty($confirm) || empty($pass)) {
        $mdp_erreur = '<p class="texteerror">' . "Votre mot de passe et votre confirmation diffèrent ou sont vides" . '</p>';
        $i++;
    }

    //Vérification de l'adresse email
    //Il faut que l'adresse email n'ait jamais été utilisée (sauf si elle n'a pas été modifiée)

    //On commence donc par récupérer le mail
	$id=($_SESSION['membre_id']);
    $query = $bdd->prepare('SELECT membre_mail FROM membres WHERE membre_id=:id');
    $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
    $query->execute();
    $data = $query->fetch();
    if (strtolower($data['membre_mail']) != strtolower($email)) {
        //Il faut que l'adresse email n'ait jamais été utilisée
        $query = $bdd->prepare('SELECT COUNT(*) AS nbr FROM membres WHERE membre_mail=:mail');
        $query->bindValue(':mail', $email, PDO: [langue]ARAM_STR);
        $query->execute();
        $mail_free = ($query->fetchColumn() == 0) ? 1 : 0;
        $query->CloseCursor();
        if (!$mail_free) {
            $email_erreur1 = '<p class="textewarning">' . "Votre adresse email est déjà utilisé par un membre" . '</p>';
            $i++;
        }

        //On vérifie la forme maintenant
        if (!preg_match("#^[a-z0-9A-Z._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email)) {
            $email_erreur2 = '<p class="texteerror">' . "Votre nouvelle adresse E-Mail n'a pas un format valide" . '</p>';
            $i++;
        }
    }
    //Vérification de l'avatar

    if (!empty($_FILES['membre_avatar']['size'])) {
        //On définit les variables :
        $maxsize = 100000; //Poid de l'image
        $maxwidth = 500; //Largeur de l'image
        $maxheight = 500; //Longueur de l'image
        //Liste des extensions valides
        $extensions_valides = array('jpg', 'jpeg', 'gif', 'png', 'bmp');

        if ($_FILES['membre_avatar']['error'] > 0) {
            $avatar_erreur = '<p class="texteerror">' . "Erreur lors du tranfsert de l'avatar : " . '</p>';
        }
        if ($_FILES['membre_avatar']['size'] > $maxsize) {
            $i++;
            $avatar_erreur1 = "Le fichier est trop gros :
        (" . $_FILES['membre_avatar']['size'] . " Octets
        contre " . $maxsize . " Octets)";
        }

        $image_sizes = getimagesize($_FILES['membre_avatar']['tmp_name']);
        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) {
            $i++;
            $avatar_erreur2 = "Image trop large ou trop longue :
        (<strong>" . $image_sizes[0] . "x" . $image_sizes[1] . " contre
        " . $maxwidth . "x" . $maxheight . ")";
        }

        $extension_upload = strtolower(substr(strrchr($_FILES['membre_avatar']['name'], '.'), 1));
        if (!in_array($extension_upload, $extensions_valides)) {
            $i++;
            $avatar_erreur3 = '<p class="texteerror">' . "Extension de l'avatar incorrecte" . '</p>';
        }
    }
    echo '<div id="mdup"><h1 class="textesimple">'."Modification d'un profil".'</h1></div>';

    if ($i == 0) { // Si $i est vide, il n'y a pas d'erreur
        if (!empty($_FILES['membre_avatar']['size'])) {
            $nomavatar = move_avatar($_FILES['membre_avatar']);
			$id=($_SESSION['membre_id']);
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=:avatar WHERE membre_id=:id');
            $query->bindValue(':avatar', $nomavatar, PDO: [langue]ARAM_STR);
            $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
            $query->execute();
            $query->CloseCursor();
        }

        //Une nouveauté ici : on peut choisis de supprimer l'avatar
        if (isset($_POST['delete'])) {
			$id=($_SESSION['membre_id']);
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=0 WHERE membre_id=:id');
            $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
            $query->execute();
            $query->CloseCursor();
        }

        echo '<h1 class="textesimple">'."Modification terminée".'</h1>';
        echo '<p class="textesimple">'."Votre profil a été modifié avec succès !".'</p>';
        echo '<p class="textesimple">'. "Cliquez ".'<a href="./index.php">'." ici ".'</a>'."
        pour revenir à la page d accueil".'</p>';	
$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
        $query->bindValue(':mdp',$pass,PDO: [langue]ARAM_INT);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);
        $query->execute();
        $query->CloseCursor();
		
    } else {
        echo '<h1 class="texteerror">Modification interrompue</h1>';
        echo '<p class="texteerror">Une ou plusieurs erreurs se sont produites pendant la modification du profil</p>';
        echo '<p class="texteerror">' . $i . ' erreur(s)</p>';
        echo '<p class="texteerror">' . $mdp_erreur . '</p>';
        echo '<p class="texteerror">' . $email_erreur1 . '</p>';
        echo '<p class="texteerror">' . $email_erreur2 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur1 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur2 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur3 . '</p>';
        echo '<p class="textewarning"> Cliquez <a href="./voirprofil.php?action=modifier">ici</a> pour recommencer</p>';
    }
}
?>

Modifié par Reverb (02 Jul 2013 - 15:57)
Re,
J'ai créer une image par défaut pour les nouveaux membres inscrit, ( dans la base de donnée cellule membre_avatar > tel que définie > logodefaut.jpg

en rajoutant bien évidemment l'image logodefaut.jpg dans le dossier avatars.

Mais même après ça rien ne s'affiche Smiley decu .

Modifier.php

<?php session_start();
if (empty($_POST['sent'])) { // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire

    //On commence par s'assurer que le membre est connecté
    if (isset ($_SESSION['membre_id'])) {

        //On prend les infos du membre
		$id=($_SESSION['membre_id']);
        $query = $bdd->prepare('SELECT membre_pseudo, membre_mail, membre_avatar FROM membres WHERE membre_id=:id');
        $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
        $query->execute();
        $data = $query->fetch();
        echo '<div id="infosmembre">';
        echo '<p class="textesimple">' . "Consulter votre : " . '<a href="voirprofil.php?action=consulter">' . "Profil" . '</a>';
        echo '<h1 class="textesimple">' . "Modification de votre profil" . '</h1>';
        echo '</div>';

        echo '<div id="infosmembre">';
        echo '<form method="post" action="voirprofil.php?action=modifier" enctype="multipart/form-data">

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Identifiants</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['membre_pseudo']) . '</strong></p></div>
          <div id="cadrepseu"><p class="classinscr"><label for="mdp">Nouveau mot de Passe :</label>
        <input type="password" name="mdp" id="pass" value="' . $data['membre_mdp'] . '" /></p></div>
        <div id="cadrepseu"><p class="classinscr"><label for="confirm">Confirmer le mot de passe :</label>
        <input type="password" name="confirm" id="confirm" value="' . $data['membre_mdp'] . '"/></p></div>
        </fieldset>

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Contacts</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr"><label for="email">Votre adresse E_Mail :</label>
        <input type="text" name="mail" id="email"
        value="' . $data['membre_mail'] . '" /></p></div>

        <fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Profil sur le forum</b></p></div></legend>
        <div id="cadrepseu"><p class="classinscr"><label for="avatar">Changer votre avatar :</label>
        <input type="file" name="avatar" id="avatar" />
        (Taille max : 10 Mo)<br /><br />
        <label><input type="checkbox" name="delete" value="Delete" />
        Supprimer l avatar</label>
        Avatar actuel :
        <img src="./images/avatars/' . $data['membre_avatar'] . '"
        alt="pas d avatar" /></p></div>


        </fieldset>
        <p class="classinscr"><input type="submit" value="Modifier son profil" />
        <input type="hidden" id="sent" name="sent" value="1" />
        </p></form>';

        echo '</div>';

        $query->CloseCursor();

    } else {
        echo '<p class="texteerror">' . "Vous n'avez pas accès à cette page." . '</p>';
        echo '<p class="textewarning">' . "Vous devez être connecté pour accèder à cette page." . '</p>';
    }
} else { //Cas du traitement

    //On déclare les variables
    $mdp_erreur = NULL;
    $email_erreur1 = NULL;
    $email_erreur2 = NULL;
    $avatar_erreur = NULL;
    $avatar_erreur1 = NULL;
    $avatar_erreur2 = NULL;
    $avatar_erreur3 = NULL;

    //Encore et toujours notre belle variable $i [langue]
    $i = 0;
    $temps = time();
    $email = $_POST['mail'];
    $pass = ($_POST['mdp']);
    $confirm = ($_POST['confirm']);
    //Vérification du mdp
    if ($pass != $confirm || empty($confirm) || empty($pass)) {
        $mdp_erreur = '<p class="texteerror">' . "Votre mot de passe et votre confirmation diffèrent ou sont vides" . '</p>';
        $i++;
    }

    //Vérification de l'adresse email
    //Il faut que l'adresse email n'ait jamais été utilisée (sauf si elle n'a pas été modifiée)

    //On commence donc par récupérer le mail
	$id=($_SESSION['membre_id']);
    $query = $bdd->prepare('SELECT membre_mail FROM membres WHERE membre_id=:id');
    $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
    $query->execute();
    $data = $query->fetch();
    if (strtolower($data['membre_mail']) != strtolower($email)) {
        //Il faut que l'adresse email n'ait jamais été utilisée
        $query = $bdd->prepare('SELECT COUNT(*) AS nbr FROM membres WHERE membre_mail=:mail');
        $query->bindValue(':mail', $email, PDO: [langue]ARAM_STR);
        $query->execute();
        $mail_free = ($query->fetchColumn() == 0) ? 1 : 0;
        $query->CloseCursor();
        if (!$mail_free) {
            $email_erreur1 = '<p class="textewarning">' . "Votre adresse email est déjà utilisé par un membre" . '</p>';
            $i++;
        }

        //On vérifie la forme maintenant
        if (!preg_match("#^[a-z0-9A-Z._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email)) {
            $email_erreur2 = '<p class="texteerror">' . "Votre nouvelle adresse E-Mail n'a pas un format valide" . '</p>';
            $i++;
        }
    }
    //Vérification de l'avatar

    if (!empty($_FILES['membre_avatar']['size'])) {
        //On définit les variables :
        $maxsize = 100000; //Poid de l'image
        $maxwidth = 500; //Largeur de l'image
        $maxheight = 500; //Longueur de l'image
        //Liste des extensions valides
        $extensions_valides = array('jpg', 'jpeg', 'gif', 'png', 'bmp');

        if ($_FILES['membre_avatar']['error'] > 0) {
            $avatar_erreur = '<p class="texteerror">' . "Erreur lors du tranfsert de l'avatar : " . '</p>';
        }
        if ($_FILES['membre_avatar']['size'] > $maxsize) {
            $i++;
            $avatar_erreur1 = "Le fichier est trop gros :
        (" . $_FILES['membre_avatar']['size'] . " Octets
        contre " . $maxsize . " Octets)";
        }

        $image_sizes = getimagesize($_FILES['membre_avatar']['tmp_name']);
        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) {
            $i++;
            $avatar_erreur2 = "Image trop large ou trop longue :
        (<strong>" . $image_sizes[0] . "x" . $image_sizes[1] . " contre
        " . $maxwidth . "x" . $maxheight . ")";
        }

        $extension_upload = strtolower(substr(strrchr($_FILES['membre_avatar']['name'], '.'), 1));
        if (!in_array($extension_upload, $extensions_valides)) {
            $i++;
            $avatar_erreur3 = '<p class="texteerror">' . "Extension de l'avatar incorrecte" . '</p>';
        }
    }
    echo '<div id="mdup"><h1 class="textesimple">'."Modification d'un profil".'</h1></div>';

    if ($i == 0) { // Si $i est vide, il n'y a pas d'erreur
        if (!empty($_FILES['membre_avatar']['size'])) {
            $nomavatar = move_avatar($_FILES['membre_avatar']);
			$id=($_SESSION['membre_id']);
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=:avatar WHERE membre_id=:id');
            $query->bindValue(':avatar', $nomavatar, PDO: [langue]ARAM_STR);
            $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
            $query->execute();
            $query->CloseCursor();
        }

        //Une nouveauté ici : on peut choisis de supprimer l'avatar
        if (isset($_POST['delete'])) {
			$id=($_SESSION['membre_id']);
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=0 WHERE membre_id=:id');
            $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
            $query->execute();
            $query->CloseCursor();
        }
echo '<div id="MR">';
        echo '<h1 class="textevalide">'."Modification terminée".'</h1>';
        echo '<p class="textevalide">'."Votre profil a été modifié avec succès !".'</p>';
        echo '<p class="textesimple">'. "Cliquez ".'<a href="./index.php">'." ici ".'</a>'."pour revenir à la page d accueil.".'</p>';
		echo '<p class="textesimple">'. "Cliquez ".'<a href="./voirprofil.php?action=consulter">'." ici ".'</a>'."pour consulter votre profil.".'</p>';
echo '</div>';
$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
        $query->bindValue(':mdp',$pass,PDO: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);
        $query->execute();
        $query->CloseCursor();
		
    } else {
		
			echo '<div id="MI">';
        echo '<h1 class="texteerror">Modification interrompue</h1>';
        echo '<p class="texteerror">Une ou plusieurs erreurs se sont produites pendant la modification du profil</p>';
        echo '<p class="texteerror">' . $i . ' erreur(s)</p>';
        echo '<p class="texteerror">' . $mdp_erreur . '</p>';
        echo '<p class="texteerror">' . $email_erreur1 . '</p>';
        echo '<p class="texteerror">' . $email_erreur2 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur1 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur2 . '</p>';
        echo '<p class="texteerror">' . $avatar_erreur3 . '</p>';
        echo '<p class="textewarning"> Cliquez <a href="./voirprofil.php?action=modifier">ici</a> pour recommencer</p>';
			echo '</div>';
    }
}
?>


Merci encore pour ton aide et ton attention =),
Sincèrement.
Bonjour,
J'avais oublié cette histoire d'avatar Smiley smile Pour le moment, qu'est ce qu'il y a dans ton champ "membre_avatar" dans ta base de données? Tous les champs sont vides? Certains sont remplis?

EDIT: je pense que je viens de découvrir la source principale de ton problème:
Dans ton formulaire, tu déclares ton champ d'upload comme ceci:
<input type="file" name="avatar" id="avatar" />

Mais ensuite, pendant le traitement, tu fais:
$_FILES['membre_avatar']

Il faut que tu renommes ton input en "membre_avatar" au lieu de "avatar"
Modifié par GroquikMLV (03 Jul 2013 - 13:58)
Re,
Merci =),
Une erreur est présente sur ce bout de code :

 $nomavatar = move_avatar($_FILES['membre_avatar']);


(le code avec la requête avec : )

 if (!empty($_FILES['membre_avatar']['size'])) {
            $nomavatar = move_avatar($_FILES['membre_avatar']);
			$id=($_SESSION['membre_id']);
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=:avatar WHERE membre_id=:id');
            $query->bindValue(':avatar', $nomavatar, PDO: [langue]ARAM_STR);
            $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
            $query->execute();
            $query->CloseCursor();


Merci encore pour ton aide précieuse Smiley cligne
sincèrement.
Effectivement gagné ^^' c'est un undefined :

a écrit :
Fatal error: Call to undefined function move_avatar() in /home/croba286/public_html/modifier.php on line 146


concernant la fonction move_avatar qui ne semble pas défini Smiley decu j'ai cherché des solutions sur notre ami google mais je ne trouve pas grand chose :s.
Effectivement, la fonction move_avatar n'est pas définie...

Je suppose que tu as du copier/coller ce code de quelque part? Retrouve la source et récupère la fonction move_avatar (ça doit être un bloc d'instructions qui commencent par "function move_avatar($blablabla){"...)
Bon, ça fait longtemps que j'ai plus fait d'upload, alors on va faire un premier essai... Modifie ton code:
 if (!empty($_FILES['membre_avatar']['size'])) {
            $nomavatar = move_avatar($_FILES['membre_avatar']);
			$id=($_SESSION['membre_id']);
            $query = $bdd->prepare('UPDATE membres SET membre_avatar=:avatar WHERE membre_id=:id');
            $query->bindValue(':avatar', $nomavatar, PDO:  Smiley langue ARAM_STR);
            $query->bindValue(':id', $id, PDO:  Smiley langue ARAM_INT);
            $query->execute();
            $query->CloseCursor();

par:
if (!empty($_FILES['membre_avatar']['size'])) {
	$nom_avatar = basename($_FILES['membre_avatar']['name']);
	$destination = "./images/avatars/".$nom_avatar;
	if(move_uploaded_file($_FILES['membre_avatar']['tmp_name'],$destination);){
		echo "upload réussi!";
	}else{
		echo "l'upload a échoué!";
	}
	$id=($_SESSION['membre_id']);
    $query = $bdd->prepare('UPDATE membres SET membre_avatar=:avatar WHERE membre_id=:id');
	$query->bindValue(':avatar', $nomavatar, PDO::  PARAM_STR);
	$query->bindValue(':id', $id, PDO:: PARAM_INT);
	$query->execute();
	$query->CloseCursor();
Merci vraiment pour ton investissement à mon problème =)

Une erreur se produit avec
(ligne)
else{
echo "l'upload a échoué!";
}

en fin de code la parenthèse ne ce trouve pas plutôt juste après la précédente ?
-if(move_uploaded_file($_FILES['membre_avatar']['tmp_name'],$destination);){
->if(move_uploaded_file($_FILES['membre_avatar']['tmp_name'],$destination));{

je ne vois pas d'erreur de '{' ou '}' au niveau if, else Smiley ohwell pourtant dreamweaver m'indique une erreur Smiley decu .
Modifié par Reverb (03 Jul 2013 - 16:27)
C'est une erreur de ma part, il n'y a pas de point virgule entre les 2 parenthèses normalement. (mauvais copier/coller ^^)
Comment te dire... MERCIIIIII lol tout fonctionne correctement =),
grâce à toi Smiley smile ( +1 ^^ ) , je vais enfin pouvoir rajouter les informations secondaire ^^.
Merci encore pour toutes ton aide GroquikMLV =), sincèrement.
Salut à toi GroquikMLV =),
Je suis toujours sur des rajout d'options sur le profil membre,
et j'essaye actuellement d'insérer des informations provenant d'une autre table de la même base de donnée ( comme le nom, le prenom, une biographie etc... )

pour commencer ce système, j'ai créer une seconde table dans ma base de donnée 'membre' se nommant : 'infos_membre' dans laquelle j'y ai placé les informations suivantes :

-- Structure de la table `infos_membre`
--

CREATE TABLE IF NOT EXISTS `infos_membre` (
  `infos_id` int(11) NOT NULL AUTO_INCREMENT,
  `membre_id` int(11) NOT NULL,
  `membre_nom` varchar(255) NOT NULL,
  `membre_prenom` varchar(255) NOT NULL,
  `membre_naissance` int(11) NOT NULL,
  `membre_siteweb` text NOT NULL,
  `membre_localisation` varchar(100) NOT NULL,
  `membre_signature` varchar(255) NOT NULL,
  `membre_biographie` mediumint(9) NOT NULL,
  `membre_profession` varchar(100) NOT NULL,
  PRIMARY KEY (`infos_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='informations secondaire des membres' AUTO_INCREMENT=1 ;



J'ai commencer par essayé de le placé dans ma page modification les fonctions vu au cours du tuto.

pour mon formulaire j'ai regroupé 2 requêtes ( pour chaque table )
y aurait-il un moyen plus simple d'indenter le code ?

$id=($_SESSION['membre_id']);
        $query = $bdd->prepare('SELECT membre_pseudo, membre_mail, membre_avatar FROM membres WHERE membre_id=:id');
        $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
        $query->execute();
        $data = $query->fetch();
		 $quer = $bdd->prepare('SELECT membre_nom, membre_prenom, membre_naissance, membre_siteweb, membre_localisation, membre_signature, membre_biographie, membre_profession FROM infos_membre WHERE membre_id=:id');
        $quer->bindValue(':id', $id, PDO: [langue]ARAM_INT);
        $quer->execute();
        $dat = $quer->fetch();


et dans mon formulaire j'ai rajouté les 2 lignes de code pour nom prenom ( pour commencer ^^)


<div id="cadrepseu"><p class="classinscr"><label for="nom">Votre Nom :</label><input type="text" name="nom" id="nom" value="' . htmlspecialchars($dat['membre_nom']) . '" /></p></div>;
		
		<div id="cadrepseu"><p class="classinscr"><label for="prenom">Votre Prenom :</label><input type="text" name="prenom" id="prenom" value="' . htmlspecialchars($dat['membre_prenom']) . '" /></p></div>;


j'ai rajouter les post nom prenom :

 $i = 0;
    $temps = time();
    $email = $_POST['mail'];
    $pass = ($_POST['mdp']);
	$nom = ($_POST['nom']);
	$nom = ($_POST['prenom']);
    $confirm = ($_POST['confirm']);


et ma requête de modification rajouter a la fin de mon code :

$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
        $query->bindValue(':mdp',$pass,PDO: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);
        $query->execute();
		$quer=$bdd->prepare('UPDATE infos_membre SET membre_nom=:nom, membre_prenom=:prenom WHERE membre_id=:id');
        $quer->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $quer->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
        $quer->bindValue(':id',$id,PDO: [langue]ARAM_INT);
        $quer->execute();
        $quer->CloseCursor();


Mais ça n'a pas l'air de fonctionner ^^'
Bonjour,
Il faut que tu sois plus précis quand tu dis "ça ne fonctionne pas": ça t'affiche une erreur? ça te met une page blanche?
Concernant tes requêtes, tu peux les regrouper en utilisant des jointures. Par exemple:
$id=($_SESSION['membre_id']);
        $query = $bdd->prepare('SELECT m.membre_pseudo, m.membre_mail, m.membre_avatar, i.membre_nom, i.membre_prenom, i.membre_naissance, i.membre_siteweb, i.membre_localisation, i.membre_signature, i.membre_biographie, i.membre_profession FROM membres m INNER JOIN infos_membre i ON m.membre_id = i.membre_id WHERE m.membre_id=:id');
        $query->bindValue(':id', $id, PDO:: PARAM_INT);
        $query->execute();
        $data = $query->fetch();

Sinon, pour commencer, il y a une erreur ici:
    $temps = time();
    $email = $_POST['mail'];
    $pass = ($_POST['mdp']);
	$nom = ($_POST['nom']);
	$nom = ($_POST['prenom']);
    $confirm = ($_POST['confirm']);

la valeur du formulaire pour le champ "prenom" est stockée dans la variable $nom, donc $prenom est vide, et comme tu l'utilises juste après dans une requête UPDATE, ton prenom doit toujours être vide dans ta table.
Modifié par GroquikMLV (04 Jul 2013 - 18:28)
Pages :