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 .
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 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
ma page consulter.php
et ma page modifier.php :
Merci à vous pour votre attention et votre aide, j'en aurais vraiment besoin,
Sincèrement.
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 .
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 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.