[RESOLU] Modification / Ajout d'information d'un profil

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Modification / Ajout d'information d'un profil

Re: Modification / Ajout d'information d'un profil

par reverb » 24 juil. 2013, 13:31

Re, Merci vraiment pour ton aide Moogli :),

J'ai trouvé la solution, dans mes requêtes de modification j'utilisait 2 variables pour définir les id des deux tables qui était identique $id et $id3.
J'ai supprimé la définition de $id3 et remplacé par la définition de $id ( étant donnée que l'id du membre est censé être le même dans les 2 tables ) et cela fonctionne !! :)

Merci encore d'avoir porté intérêt à mon problème moogli :).

Re: Modification / Ajout d'information d'un profil

par moogli » 24 juil. 2013, 11:19

a priori la requête est bonne

l'a tu testée ?

que retourne execute ?

pourquoi n'utilise pas de try / catch ?

tu peu tester quelque chose comme ça
<?php
			try {
				$reqmodif2 = $bdd->prepare('UPDATE rs_membre SET membre_facebook=:facebook, membre_tumblr=:tumblr, membre_twitter=:twitter, membre_pinterest=:pinterest, membre_googleplus=:googleplus, membre_flickr=:flickr, membre_fotolog=:fotolog WHERE rs_membre_id=:id');
				$reqmodif2->bindValue(':facebook', $facebook, PDO::PARAM_STR);
				$reqmodif2->bindValue(':twitter', $twitter, PDO::PARAM_STR);
				$reqmodif2->bindValue(':tumblr', $tumblr, PDO::PARAM_STR);
				$reqmodif2->bindValue(':fotolog', $fotolog, PDO::PARAM_STR);
				$reqmodif2->bindValue(':googleplus', $googleplus, PDO::PARAM_STR);
				$reqmodif2->bindValue(':pinterest', $pinterest, PDO::PARAM_STR);
				$reqmodif2->bindValue(':flickr', $flickr, PDO::PARAM_STR);
				$reqmodif2->bindValue(':id', $_SESSION['rs_membre_id'], PDO::PARAM_INT);
				$ret = $reqmodif2->execute();
				if ($ret === false) {
					$err = $reqmodif2->errorInfo();
					// l'erreur est dans $err[2]
					echo 'Erreur SQL avec la requête . ' . $reqmodif2->queryString . '<br />' . $err[2];
				}
			} catch (PDOException $pdoe) {
				// traitement de l'erreur
			}
test quand même la requête dans un client SQL :mrgreen:

@+

Re: Modification / Ajout d'information d'un profil

par reverb » 23 juil. 2013, 18:26

Re, j'ai effectué les modifications que tu m'as conseillé,
effectivement cela à résolu le faite que les champs qui était dans infos membre se renseigne bien dans la table membre
Mais il reste toujours le problème de la table rs_membre, rien ne s'insert après la modification :/

voici le code de ma page modifier.php ( brut ^^' )
<?php session_start();
 echo '<div id="retourselect">
 <a href="voirprofil.php?action=consulter" title="recharger la page"><h1 class="titre1">'."Profil".'</h1></a>
 </div>';
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 principale (obligatoire) du membre
		$id=($_SESSION['membre_id']);
        $query = $bdd->prepare('SELECT membre_pseudo, membre_mail, membre_avatar, membre_nom, membre_prenom, membre_naissance, membre_signature, membre_siteweb, membre_biographie, membre_profession, membre_localisation FROM membres WHERE membre_id=:id');
        $query->bindValue(':id', $id, PDO::PARAM_INT);
        $query->execute();
        $data = $query->fetch();
		//On prend les infos secondaire du membre
		// On prend les infos réseaux sociaux du membre
		$id3=($_SESSION['rs_membre_id']);
        $query3 = $bdd->prepare('SELECT membre_facebook, membre_twitter, membre_tumblr, membre_flickr, membre_pinterest, membre_fotolog, membre_googleplus FROM rs_membre WHERE rs_membre_id=:id');
        $query3->bindValue(':id', $id3, PDO::PARAM_INT);
        $query3->execute();
        $data3 = $query3->fetch();
        echo '<div id="infosmembre">';
        echo '<p class="textesimplegrisay">' . "Consulter votre : " . '<a href="voirprofil.php?action=consulter">' . "Profil" . '</a>';
        echo '<h1 class="textemoyengrisay">' . "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><p class="textesimplegrisay"><b>Identifiants</b></p></legend>
		
        <div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['membre_pseudo']) . '</strong></p></div>
		
		<p class="textesimplegrisay">Vous devez renseigner votre mot de passe pour valider la modification.</p>
		
          <div id="cadrepseu"><p class="classinscr"><label for="mdp">Mot de Passe :</label><input type="password" name="mdp" id="pass" value="' . $data['membre_mdp'] . '" /></p></div>
		  
		  <p class="textesimplegrisay">La confirmation de votre mot de passe est essentiel pour la modification.</p>
		  
        <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><p class="textesimplegrisay"><b>Informations secondaire</b></p></legend>
		
		<div id="cadrepseu"><p class="classinscr"><label for="nom">Votre Nom : </label><input type="text" name="nom" id="nom" value="' . $data['membre_nom'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="prenom">Votre Prenom : </label><input type="text" name="prenom" id="prenom" value="' . $data['membre_prenom'] . '" /></p></div>
		
		<p class="textesimplegrisay">Votre date de naissance doit figurer de la manière suivante : AAAA-MM-JJ.</p>
		
		<div id="cadrepseu"><p class="classinscr"><label for="naissance">Votre date de naissance : </label><input type="text" name="naissance" id="naissance" value="' . $data['membre_naissance'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="siteweb">Votre site Web : </label><input type="text" name="siteweb" id="siteweb" value="' . $data['membre_siteweb'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="localisation">Votre localisation : </label><input type="text" name="localisation" id="localisation" value="' . $data['membre_localisation'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="signature">Votre signature : </label><input type="text" name="signature" id="signature" value="' . $data['membre_signature'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="biographie">Votre biographie : </label><input type="text" name="biographie" id="biographie" value="' . $data['membre_biographie'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="profession">Votre profession : </label><input type="text" name="profession" id="profession" value="' . $data['membre_profession'] . '" /></p></div>
		
        </fieldset>

        <fieldset>
		
		<legend><p class="textesimplegrisay"><b>Contacts</b></p></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><p class="textesimplegrisay"><b>Profil sur le forum</b></p></legend>
		<p class="textesimplegrisay">Votre image profil ne doit pas dépassé 500px sur 500px ( 10 Mo ).</p>
        <div id="cadrepseu"><p class="classinscr"><label for="membre_avatar">Changer votre avatar :</label>
        <input type="file" name="membre_avatar" id="membre_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'] . '"
        class="imgavatar" alt="aucun avatar" /></p></div>

		</fieldset>
		
		<fieldset>
		
		<legend><p class="textesimplegrisay"><b>Réseaux Sociaux</b></p></legend>
		
		<div id="cadrepseu"><p class="classinscr"><label for="facebook">Votre adresse Facebook : </label><input type="text" name="facebook" id="facebook" value="' . $data3['membre_facebook'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="twitter">Votre adresse Twitter : </label><input type="text" name="twitter" id="twitter" value="' . $data3['membre_twitter'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="tumblr">Votre adresse Tumblr : </label><input type="text" name="tumblr" id="tumblr" value="' . $data3['membre_tumblr'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="flickr">Votre adresse Flickr : </label><input type="text" name="flickr" id="flickr" value="' . $data3['membre_flickr'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="pinterest">Votre adresse Pinterest : </label><input type="text" name="pinterest" id="pinterest" value="' . $data3['membre_pinterest'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="googleplus">Votre adresse Google Plus : </label><input type="text" name="googleplus" id="googleplus" value="' . $data3['membre_googleplus'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="fotolog">Votre adresse Fotolog : </label><input type="text" name="fotolog" id="fotolog" value="' . $data3['membre_fotolog'] . '" /></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();
		$query3->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 :p
    $i = 0;
    $temps = time();
    $email = $_POST['mail'];
    $pass = ($_POST['mdp']);
	$nom = ($_POST['nom']);
	$prenom = ($_POST['prenom']);
	$naissance = ($_POST['naissance']);
	$siteweb = ($_POST['siteweb']);
	$localisation = ($_POST['localisation']);
	$signature = ($_POST['signature']);
	$biographie = ($_POST['biographie']);
	$profession = ($_POST['profession']);
	$facebook = ($_POST['facebook']);
	$twitter = ($_POST['twitter']);
	$tumblr = ($_POST['tumblr']);
	$pinterest = ($_POST['pinterest']);
	$googleplus = ($_POST['googleplus']);
	$fotolog = ($_POST['fotolog']);
	$flickr = ($_POST['flickr']);
    $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::PARAM_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::PARAM_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 = 1000000; //Poid de l'image
        $maxwidth = 2000; //Largeur de l'image
        $maxheight = 2000; //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 = basename($_FILES['membre_avatar']['name']);
	$destination = "./images/avatars/".$nomavatar;
	if(move_uploaded_file($_FILES['membre_avatar']['tmp_name'],$destination)){
		echo '<div id="MR"><p class="textevalide">'."Le chargement de votre nouvelle 'image profil' à réussi avec succès !".'</p></div>';
	}else{
		echo '<div id="MR"><p class="texteerror">'."Le téléchargement de votre 'image profil' à échoué !".'</p></div>';
	}
	$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();
        }

        //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::PARAM_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>';
/*
$reqmod=$bdd->prepare('UPDATE membres m INNER JOIN infos_membre i ON i.i_membre_id=m.membre_id INNER JOIN rs_membre r ON r.rs_membre_id=m.membre_id SET m.membre_mdp=:mdp, m.membre_mail=:mail, i.membre_nom=:nom, i.membre_prenom=:prenom, i.membre_naissance=:naissance, i.membre_siteweb=:siteweb, i.membre_localisation=:localisation, i.membre_signature=:signature, i.membre_biographie=:biographie, i.membre_profession=:profession, r.membre_facebook=:facebook, r.membre_twitter=:twitter, r.membre_tumblr=:tumblr, r.membre_flickr=:flickr, r.membre_fotolog=:fotolog, r.membre_pinterest=:pinterest, r.membre_googleplus=:googleplus WHERE m.membre_id=:id');
        $reqmod->bindValue(':mdp',$pass,PDO::PARAM_STR);
        $reqmod->bindValue(':mail',$email,PDO::PARAM_STR);
		$reqmod->bindValue(':nom',$nom,PDO::PARAM_STR);
        $reqmod->bindValue(':prenom',$prenom,PDO::PARAM_STR);
		$reqmod->bindValue(':naissance',$naissance,PDO::PARAM_INT);
		$reqmod->bindValue(':siteweb',$siteweb,PDO::PARAM_STR);
		$reqmod->bindValue(':localisation',$localisation,PDO::PARAM_STR);
		$reqmod->bindValue(':signature',$signature,PDO::PARAM_STR);
		$reqmod->bindValue(':biographie',$biographie,PDO::PARAM_STR);
		$reqmod->bindValue(':profession',$profession,PDO::PARAM_STR);
		$reqmod->bindValue(':facebook',$facebook,PDO::PARAM_STR);
		$reqmod->bindValue(':twitter',$twitter,PDO::PARAM_STR);
		$reqmod->bindValue(':tumblr',$tumblr,PDO::PARAM_STR);
		$reqmod->bindValue(':fotolog',$fotolog,PDO::PARAM_STR);
		$reqmod->bindValue(':googleplus',$googleplus,PDO::PARAM_STR);
		$reqmod->bindValue(':pinterest',$pinterest,PDO::PARAM_STR);
		$reqmod->bindValue(':flickr',$flickr,PDO::PARAM_STR);
		$reqmod->bindValue(':id',$id,PDO::PARAM_INT);
        $reqmod->execute();
		$reqmod->CloseCursor();
*/
$id=($_SESSION['membre_id']);
$reqmodif=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail, membre_nom=:nom, membre_prenom=:prenom, membre_naissance=:naissance, membre_siteweb=:siteweb, membre_localisation=:localisation, membre_signature=:signature, membre_biographie=:biographie, membre_profession=:profession WHERE membre_id=:id');
$reqmodif->bindValue(':mdp',$pass,PDO::PARAM_STR);
$reqmodif->bindValue(':mail',$email,PDO::PARAM_STR);
$reqmodif->bindValue(':nom',$nom,PDO::PARAM_STR);
$reqmodif->bindValue(':prenom',$prenom,PDO::PARAM_STR);
$reqmodif->bindValue(':naissance',$naissance,PDO::PARAM_STR);
$reqmodif->bindValue(':siteweb',$siteweb,PDO::PARAM_STR);
$reqmodif->bindValue(':localisation',$localisation,PDO::PARAM_STR);
$reqmodif->bindValue(':signature',$signature,PDO::PARAM_STR);
$reqmodif->bindValue(':biographie',$biographie,PDO::PARAM_STR);
$reqmodif->bindValue(':profession',$profession,PDO::PARAM_STR);
$reqmodif->bindValue(':id',$id,PDO::PARAM_INT);
$reqmodif->execute();

$id3=($_SESSION['rs_membre_id']);
$reqmodif2=$bdd->prepare('UPDATE rs_membre SET membre_facebook=:facebook, membre_tumblr=:tumblr, membre_twitter=:twitter, membre_pinterest=:pinterest, membre_googleplus=:googleplus, membre_flickr=:flickr, membre_fotolog=:fotolog WHERE rs_membre_id=:id');
$reqmodif2->bindValue(':facebook',$facebook,PDO::PARAM_STR);
$reqmodif2->bindValue(':twitter',$twitter,PDO::PARAM_STR);
$reqmodif2->bindValue(':tumblr',$tumblr,PDO::PARAM_STR);
$reqmodif2->bindValue(':fotolog',$fotolog,PDO::PARAM_STR);
$reqmodif2->bindValue(':googleplus',$googleplus,PDO::PARAM_STR);
$reqmodif2->bindValue(':pinterest',$pinterest,PDO::PARAM_STR);
$reqmodif2->bindValue(':flickr',$flickr,PDO::PARAM_STR);
$reqmodif2->bindValue(':id',$id3,PDO::PARAM_INT);
$reqmodif2->execute();

    } 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>';
    }
}
?>
pourtant ma requête de modification rs membre ne semble pas avoir d'erreur :(

Merci encore pour ton aide ^^

Re: Modification / Ajout d'information d'un profil

par moogli » 23 juil. 2013, 18:13

de rien :)

si tu as des données, commence par ajouté les champs et ensuite tu fait une requête pour recopier les données ;)
puis du supprime la table en trop.

@+

Re: Modification / Ajout d'information d'un profil

par reverb » 23 juil. 2013, 15:37

Effectivement ^^ tu ma convaincu, je vais effectuer ces changements je tiens au courant ^^ ( supprimé la table infos_membre, pour la déplacer ses champs dans le table membres qui regroupe les infos d'inscription, il ne me restera plus que 2 table ^^,)
Merci aussi pour l'infos de l'uptade comme quoi sa ne s'effectue pas sur plusieurs table :/ ( je me suis obstiné à faire plusieurs essaie, je pouvais continuer à espérer que cela fonctionne x) )
Merci encore moogli de mettre ton savoir à disposition ;) sincèrement.

Re: Modification / Ajout d'information d'un profil

par moogli » 23 juil. 2013, 15:10

comme te l'indique la doc de mysql l'update ne se fait pas sur plusieurs table.

Ce n'est pas un problème de faire la mise à jour sur les tables les une a la suite des autres.

quand à modifier la structure, si cela permet de rendre le dev plus simple, plus cohérent c'est forcément une bonne idée de modifier la structure, surtout (désolé) quand elle est "foireuse".

tu es en phase de développement c'est maintenant que tu peux faire ce genre de modification si non tu traînera un truc foireux tout au long de la vie de l'appli et cela induira un coût de maintenance plus élevé.

c'est pas pour rien que l'on fait du mvc et pas du bvc (bordel vue contaolaire :mrgreen: ))

je peu t'assurer, d'expérience, qu'un modèle foireux / complexe / inapproprié engendre toujours un emmerdement à un moment ou un autre (la c'est dans la phase de dev en l’occurrence, pense au moment où il faudra faire de la maintenance dessus dans 2 ans et que tu auras oublié comment c'est fait ;) ).


@+

Re: Modification / Ajout d'information d'un profil

par reverb » 23 juil. 2013, 13:38

Bonjour à toi moogli =),
merci encore pour ton attention :D,
Concernant mes requêtes j'ai effectué quelque modification, ( je retiens un conseil qui m'as été donnée comme quoi modifier toute la structure pour réparé une erreur n'est pas une solution ^^ )
J'ai donc garder mes 3 tables, en ne laissant qu'une requête de modification générale des 3 table avec INNER JOIN,
Pour l'insertion de l'id j'ai procédé de la manière suivante :
j'ai modifier le formulaire d'inscription pour faire en sorte d'inséré en plus des infos obligatoires de la table membres, l'id du membres dans la table infos_membre et rs_membre,
donc l'id est inséré dans les 3 tables dès l'inscription du membre.
Ma requête avec UPTADE INNER JOIN ne semble pas fonctionné :/ ou l'erreur vient de mon formulaire d'insertion :/, je peux toujours essayer d'utiliser REPLACE pour ce genre de modification ?

voici mon code en entier de ma page modifier.php ( pour modifier toutes les infos ^^ )
( les premieres lignes de code sont ceux de mon formulaire, les dernieres sont les requêtes de modification, le milieu du code n'est que des conditions d'insertion pour la table membres )
<?php session_start();
 echo '<div id="retourselect">
 <a href="voirprofil.php?action=consulter" title="recharger la page"><h1 class="titre1">'."Profil".'</h1></a>
 </div>';
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 principale (obligatoire) 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::PARAM_INT);
        $query->execute();
        $data = $query->fetch();
		//On prend les infos secondaire du membre
		$id2=($_SESSION['i_membre_id']);
        $query2 = $bdd->prepare('SELECT membre_nom, membre_prenom, membre_naissance, membre_signature, membre_siteweb, membre_biographie, membre_profession, membre_localisation FROM infos_membre WHERE i_membre_id=:id');
        $query2->bindValue(':id', $id2, PDO::PARAM_INT);
        $query2->execute();
        $data2 = $query2->fetch();
		// On prend les infos réseaux sociaux du membre
		$id3=($_SESSION['rs_membre_id']);
        $query3 = $bdd->prepare('SELECT membre_facebook, membre_twitter, membre_tumblr, membre_flickr, membre_pinterest, membre_fotolog, membre_googleplus FROM rs_membre WHERE rs_membre_id=:id');
        $query3->bindValue(':id', $id3, PDO::PARAM_INT);
        $query3->execute();
        $data3 = $query3->fetch();
        echo '<div id="infosmembre">';
        echo '<p class="textesimplegrisay">' . "Consulter votre : " . '<a href="voirprofil.php?action=consulter">' . "Profil" . '</a>';
        echo '<h1 class="textemoyengrisay">' . "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><p class="textesimplegrisay"><b>Identifiants</b></p></legend>
		
        <div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['membre_pseudo']) . '</strong></p></div>
		
		<p class="textesimplegrisay">Vous devez renseigner votre mot de passe pour valider la modification.</p>
		
          <div id="cadrepseu"><p class="classinscr"><label for="mdp">Mot de Passe :</label><input type="password" name="mdp" id="pass" value="' . $data['membre_mdp'] . '" /></p></div>
		  
		  <p class="textesimplegrisay">La confirmation de votre mot de passe est essentiel pour la modification.</p>
		  
        <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><p class="textesimplegrisay"><b>Informations secondaire</b></p></legend>
		
		<div id="cadrepseu"><p class="classinscr"><label for="nom">Votre Nom : </label><input type="text" name="nom" id="nom" value="' . $data2['membre_nom'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="prenom">Votre Prenom : </label><input type="text" name="prenom" id="prenom" value="' . $data2['membre_prenom'] . '" /></p></div>
		
		<p class="textesimplegrisay">Votre date de naissance doit figurer de la manière suivante : AAAA-MM-JJ.</p>
		
		<div id="cadrepseu"><p class="classinscr"><label for="naissance">Votre date de naissance : </label><input type="text" name="naissance" id="naissance" value="' . $data2['membre_naissance'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="siteweb">Votre site Web : </label><input type="text" name="siteweb" id="siteweb" value="' . $data2['membre_siteweb'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="localisation">Votre localisation : </label><input type="text" name="localisation" id="localisation" value="' . $data2['membre_localisation'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="signature">Votre signature : </label><input type="text" name="signature" id="signature" value="' . $data2['membre_signature'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="biographie">Votre biographie : </label><input type="text" name="biographie" id="biographie" value="' . $data2['membre_biographie'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="profession">Votre profession : </label><input type="text" name="profession" id="profession" value="' . $data2['membre_profession'] . '" /></p></div>
		
        </fieldset>

        <fieldset>
		
		<legend><p class="textesimplegrisay"><b>Contacts</b></p></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><p class="textesimplegrisay"><b>Profil sur le forum</b></p></legend>
		<p class="textesimplegrisay">Votre image profil ne doit pas dépassé 500px sur 500px ( 10 Mo ).</p>
        <div id="cadrepseu"><p class="classinscr"><label for="membre_avatar">Changer votre avatar :</label>
        <input type="file" name="membre_avatar" id="membre_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'] . '"
        class="imgavatar" alt="aucun avatar" /></p></div>

		</fieldset>
		
		<fieldset>
		
		<legend><p class="textesimplegrisay"><b>Réseaux Sociaux</b></p></legend>
		
		<div id="cadrepseu"><p class="classinscr"><label for="facebook">Votre adresse Facebook : </label><input type="text" name="facebook" id="facebook" value="' . $data3['membre_facebook'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="twitter">Votre adresse Twitter : </label><input type="text" name="twitter" id="twitter" value="' . $data3['membre_twitter'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="tumblr">Votre adresse Tumblr : </label><input type="text" name="tumblr" id="tumblr" value="' . $data3['membre_tumblr'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="flickr">Votre adresse Flickr : </label><input type="text" name="flickr" id="flickr" value="' . $data3['membre_flickr'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="pinterest">Votre adresse Pinterest : </label><input type="text" name="pinterest" id="pinterest" value="' . $data3['membre_pinterest'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="googleplus">Votre adresse Google Plus : </label><input type="text" name="googleplus" id="googleplus" value="' . $data3['membre_googleplus'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="fotolog">Votre adresse Fotolog : </label><input type="text" name="fotolog" id="fotolog" value="' . $data3['membre_fotolog'] . '" /></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();
		$query2->CloseCursor();
		$query3->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 :p
    $i = 0;
    $temps = time();
    $email = $_POST['mail'];
    $pass = ($_POST['mdp']);
	$nom = ($_POST['nom']);
	$prenom = ($_POST['prenom']);
	$naissance = ($_POST['naissance']);
	$siteweb = ($_POST['siteweb']);
	$localisation = ($_POST['localisation']);
	$signature = ($_POST['signature']);
	$biographie = ($_POST['biographie']);
	$profession = ($_POST['profession']);
	$facebook = ($_POST['facebook']);
	$twitter = ($_POST['twitter']);
	$tumblr = ($_POST['tumblr']);
	$pinterest = ($_POST['pinterest']);
	$googleplus = ($_POST['googleplus']);
	$fotolog = ($_POST['fotolog']);
	$flickr = ($_POST['flickr']);
    $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::PARAM_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::PARAM_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 = 1000000; //Poid de l'image
        $maxwidth = 2000; //Largeur de l'image
        $maxheight = 2000; //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 = basename($_FILES['membre_avatar']['name']);
	$destination = "./images/avatars/".$nomavatar;
	if(move_uploaded_file($_FILES['membre_avatar']['tmp_name'],$destination)){
		echo '<div id="MR"><p class="textevalide">'."Le chargement de votre nouvelle 'image profil' à réussi avec succès !".'</p></div>';
	}else{
		echo '<div id="MR"><p class="texteerror">'."Le téléchargement de votre 'image profil' à échoué !".'</p></div>';
	}
	$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();
        }

        //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::PARAM_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>';
$id=($_SESSION['membre_id']);	
$reqmod=$bdd->prepare('UPDATE membres m INNER JOIN infos_membre i ON i.i_membre_id=m.membre_id INNER JOIN rs_membre r ON r.rs_membre_id=m.membre_id SET m.membre_mdp=:mdp, m.membre_mail=:mail, i.membre_nom=:nom, i.membre_prenom=:prenom, i.membre_naissance=:naissance, i.membre_siteweb=:siteweb, i.membre_localisation=:localisation, i.membre_signature=:signature, i.membre_biographie=:biographie, i.membre_profession=:profession, r.membre_facebook=:facebook, r.membre_twitter=:twitter, r.membre_tumblr=:tumblr, r.membre_flickr=:flickr, r.membre_fotolog=:fotolog, r.membre_pinterest=:pinterest, r.membre_googleplus=:googleplus WHERE m.membre_id=:id');
        $reqmod->bindValue(':mdp',$pass,PDO::PARAM_STR);
        $reqmod->bindValue(':mail',$email,PDO::PARAM_STR);
		$reqmod->bindValue(':nom',$nom,PDO::PARAM_STR);
        $reqmod->bindValue(':prenom',$prenom,PDO::PARAM_STR);
		$reqmod->bindValue(':naissance',$naissance,PDO::PARAM_INT);
		$reqmod->bindValue(':siteweb',$siteweb,PDO::PARAM_STR);
		$reqmod->bindValue(':localisation',$localisation,PDO::PARAM_STR);
		$reqmod->bindValue(':signature',$signature,PDO::PARAM_STR);
		$reqmod->bindValue(':biographie',$biographie,PDO::PARAM_STR);
		$reqmod->bindValue(':profession',$profession,PDO::PARAM_STR);
		$reqmod->bindValue(':facebook',$facebook,PDO::PARAM_STR);
		$reqmod->bindValue(':twitter',$twitter,PDO::PARAM_STR);
		$reqmod->bindValue(':tumblr',$tumblr,PDO::PARAM_STR);
		$reqmod->bindValue(':fotolog',$fotolog,PDO::PARAM_STR);
		$reqmod->bindValue(':googleplus',$googleplus,PDO::PARAM_STR);
		$reqmod->bindValue(':pinterest',$pinterest,PDO::PARAM_STR);
		$reqmod->bindValue(':flickr',$flickr,PDO::PARAM_STR);
		$reqmod->bindValue(':id',$id,PDO::PARAM_INT);
        $reqmod->execute();
		$reqmod->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 moogli, =)

Re: Modification / Ajout d'information d'un profil

par moogli » 18 juil. 2013, 09:26

salut,

pourquoi ne pas faire un merge / replace sur les tables cela te simplifiera la vie ;)

Pour info ton modèle n'est pas bon.
Ce sont les informations qui peuvent ne pas être unique qui ont une table à part et nom des informations qui "appartiennent" à une entité.

sortir les nom / prénoms de la table membre c'est comme si tu avait une table voiture et que tu mettait le N° d'immatriculation dans une autre table ça n'a pas de sens (sauf si tu souhaite avoir un historique des différentes immatriculation, mais vue que l'on ne change pas souvent de prénom :)).
Bref la table infos_membre n'a pas de raison d'être.

rs_membre quand à elle se comprend.
et la du coup cela simplifie pas mal ton problème car dans le cas de mise à jour de profile tu a forcément l'id membre et donc update sur la table membre.
Pour les réseau sociaux deux écoles :
- les adeptes du delete avant insert (un delete bourrin sur l'id memebre dans la table rs_membre puis insert des réseau indiqué's) s'il y a)
- Les gens qui font dans le plus fin et utilise le merge (oracle) / replace (mysql) qui feront le boulot pour toi ;)


perso je préfère la seconde solution (l'autre je la laisse à baloo :mrgreen: :mrgreen: )


@+

Modification / Ajout d'information d'un profil

par reverb » 17 juil. 2013, 17:21

Bonjour à tous et à toutes,
J'essaye de créer depuis un bon mois maintenant ^^' un espace profil membre, et je suis confronté à pas mal de dysfonctionnement :(.

-J'ai créer une base de donnée qui se nomme : 'membres'.

-Dans cette base de donnée, j'y ai inséré trois tables. ( -1er table > 'membres'; 2ème table > 'infos_membre'; 3ème table > 'rs_membre';

-La première table 'membres' constitue les champs d'informations obligatoire lors de l'inscription du membre sur le site.

membre_id | membre_pseudo | membre_mdp | membre_mail| membre_inscription | membre_avatar | membre_derniere_visite | membre_banni | membre_rang | membre_post

-la deuxième table 'infos_membre' constitue les informations secondaire du membre ( non obligatoire )

i_membre_id | membre_nom | membre_prenom | membre_naissance | membre_siteweb | membre_localisation | membre_signature | membre_biographie | membre_profession

-la troisième table 'rs_membre' qui regroupes les réseaux sociaux.

rs_membre_id | membre_facebook | membre_twitter | membre_tumblr | membre_flickr | membre_pinterest | membre_googlesplus | membre_fotolog

Lorsque le membre s'inscrit aucun soucis pour la table 'membre' qui s'auto increment bien au niveau de l'id et toutes les informations se renseigne bien.

pour pouvoir rajouter des informations dans les deux autres tables, l'internaute doit passer par la modification de son profil, soit pour rajouter des informations, soit pour les modifier.

dans mon cas, la modification des tables s'effectue bien, mais l'insertion ne fonctionne pas :/. Lorsqu'un nouveau membre souhaite ajouter des informations qu'il n'a jamais renseigné ( donc le rajout d'un nouvelle id dans les deux tables ou celle renseigné ) l'action ne s'effetue pas :/. pourtant il n'y a aucune erreur php indexé, et le message de validation pour la modification du profil s'affiche positif :/ ( la modification du profil à été effectué avec succès etc... ) et lorsque je vérifie dans PhpMyAdmin, aucunes des 2 tables ( infos_membre ou rs_membre ) n'est renseigné.

(lors de l'insertion dans une de ces deux tables, l'id doit être le même que celui du membre inscrit dans la table 'membres')

Voici le code de ma page modifier.php
<?php session_start();
 echo '<div id="retourselect">
 <a href="voirprofil.php?action=consulter" title="recharger la page"><h1 class="titre1">'."Profil".'</h1></a>
 </div>';
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 principale (obligatoire) 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::PARAM_INT);
        $query->execute();
        $data = $query->fetch();
		//On prend les infos secondaire du membre
		$id2=($_SESSION['i_membre_id']);
        $query2 = $bdd->prepare('SELECT membre_nom, membre_prenom, membre_naissance, membre_signature, membre_siteweb, membre_biographie, membre_profession, membre_localisation FROM infos_membre WHERE i_membre_id=:id');
        $query2->bindValue(':id', $id2, PDO::PARAM_INT);
        $query2->execute();
        $data2 = $query2->fetch();
		// On prend les infos réseaux sociaux du membre
		$id3=($_SESSION['rs_membre_id']);
        $query3 = $bdd->prepare('SELECT membre_facebook, membre_twitter, membre_tumblr, membre_flickr, membre_pinterest, membre_fotolog, membre_googleplus FROM rs_membre WHERE rs_membre_id=:id');
        $query3->bindValue(':id', $id3, PDO::PARAM_INT);
        $query3->execute();
        $data3 = $query3->fetch();
        echo '<div id="infosmembre">';
        echo '<p class="textesimplegrisay">' . "Consulter votre : " . '<a href="voirprofil.php?action=consulter">' . "Profil" . '</a>';
        echo '<h1 class="textesimplegrisay">' . "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><p class="textesimplegrisay"><b>Identifiants</b></p></legend>
		
        <div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['membre_pseudo']) . '</strong></p></div>
		
		<p class="textesimplegrisay">Vous devez renseigner votre mot de passe pour valider la modification.</p>
		
          <div id="cadrepseu"><p class="classinscr"><label for="mdp">Mot de Passe :</label><input type="password" name="mdp" id="pass" value="' . $data['membre_mdp'] . '" /></p></div>
		  
		  <p class="textesimplegrisay">La confirmation de votre mot de passe est essentiel pour la modification.</p>
		  
        <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><p class="textesimplegrisay"><b>Informations secondaire</b></p></legend>
		
		<div id="cadrepseu"><p class="classinscr"><label for="nom">Votre Nom : </label><input type="text" name="nom" id="nom" value="' . $data2['membre_nom'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="prenom">Votre Prenom : </label><input type="text" name="prenom" id="prenom" value="' . $data2['membre_prenom'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="naissance">Votre date de naissance : </label><input type="text" name="naissance" id="naissance" value="' . $data2['membre_naissance'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="siteweb">Votre site Web : </label><input type="text" name="siteweb" id="siteweb" value="' . $data2['membre_siteweb'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="localisation">Votre localisation : </label><input type="text" name="localisation" id="localisation" value="' . $data2['membre_localisation'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="signature">Votre signature : </label><input type="text" name="signature" id="signature" value="' . $data2['membre_signature'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="biographie">Votre biographie : </label><input type="text" name="biographie" id="biographie" value="' . $data2['membre_biographie'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="profession">Votre profession : </label><input type="text" name="profession" id="profession" value="' . $data2['membre_profession'] . '" /></p></div>
		
        </fieldset>

        <fieldset>
		
		<legend><p class="textesimplegrisay"><b>Contacts</b></p></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><p class="textesimplegrisay"><b>Profil sur le forum</b></p></legend>
        <div id="cadrepseu"><p class="classinscr"><label for="membre_avatar">Changer votre avatar :</label>
        <input type="file" name="membre_avatar" id="membre_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'] . '"
        class="imgavatar" alt="aucun avatar" /></p></div>

		</fieldset>
		
		<fieldset>
		
		<legend><p class="textesimplegrisay"><b>Réseaux Sociaux</b></p></legend>
		
		<div id="cadrepseu"><p class="classinscr"><label for="facebook">Votre adresse Facebook : </label><input type="text" name="facebook" id="facebook" value="' . $data3['membre_facebook'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="twitter">Votre adresse Twitter : </label><input type="text" name="twitter" id="twitter" value="' . $data3['membre_twitter'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="tumblr">Votre adresse Tumblr : </label><input type="text" name="tumblr" id="tumblr" value="' . $data3['membre_tumblr'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="flickr">Votre adresse Flickr : </label><input type="text" name="flickr" id="flickr" value="' . $data3['membre_flickr'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="pinterest">Votre adresse Pinterest : </label><input type="text" name="pinterest" id="pinterest" value="' . $data3['membre_pinterest'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="googleplus">Votre adresse Google Plus : </label><input type="text" name="googleplus" id="googleplus" value="' . $data3['membre_googleplus'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="fotolog">Votre adresse Fotolog : </label><input type="text" name="fotolog" id="fotolog" value="' . $data3['membre_fotolog'] . '" /></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();
		$query2->CloseCursor();
		$query3->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 :p
    $i = 0;
    $temps = time();
    $email = $_POST['mail'];
    $pass = ($_POST['mdp']);
	$nom = ($_POST['nom']);
	$prenom = ($_POST['prenom']);
	$naissance = ($_POST['naissance']);
	$siteweb = ($_POST['siteweb']);
	$localisation = ($_POST['localisation']);
	$signature = ($_POST['signature']);
	$biographie = ($_POST['biographie']);
	$profession = ($_POST['profession']);
	$facebook = ($_POST['facebook']);
	$twitter = ($_POST['twitter']);
	$tumblr = ($_POST['tumblr']);
	$pinterest = ($_POST['pinterest']);
	$googleplus = ($_POST['googleplus']);
	$fotolog = ($_POST['fotolog']);
	$flickr = ($_POST['flickr']);
    $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::PARAM_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::PARAM_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 = 1000000; //Poid de l'image
        $maxwidth = 2000; //Largeur de l'image
        $maxheight = 2000; //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 = basename($_FILES['membre_avatar']['name']);
	$destination = "./images/avatars/".$nomavatar;
	if(move_uploaded_file($_FILES['membre_avatar']['tmp_name'],$destination)){
		echo '<div id="MR"><p class="textevalide">'."Le chargement de votre nouvelle 'image profil' à réussi avec succès !".'</p></div>';
	}else{
		echo '<div id="MR"><p class="texteerror">'."Le téléchargement de votre 'image profil' à échoué !".'</p></div>';
	}
	$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();
        }

        //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::PARAM_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>';

$i_membre_id =($_SESSION['i_membre_id'])==$id;
$rs_membre_id = ($_SESSION['rs_membre_id'])==$id;

if (isset($i_membre_id) && isset($rs_membre_id)) {	
$query=$bdd->prepare('UPDATE membres m INNER JOIN infos_membre i ON i.i_membre_id=m.membre_id INNER JOIN rs_membre r ON r.rs_membre_id=m.membre_id SET m.membre_mdp=:mdp, m.membre_mail=:mail, i.membre_nom=:nom, i.membre_prenom=:prenom, i.membre_naissance=:naissance, i.membre_siteweb=:siteweb, i.membre_localisation=:localisation, i.membre_signature=:signature, i.membre_biographie=:biographie, i.membre_profession=:profession, r.membre_facebook=:facebook, r.membre_twitter=:twitter, r.membre_tumblr=:tumblr, r.membre_flickr=:flickr, r.membre_fotolog=:fotolog, r.membre_pinterest=:pinterest, r.membre_googleplus=:googleplus WHERE m.membre_id=:id');
        $query->bindValue(':mdp',$pass,PDO::PARAM_STR);
        $query->bindValue(':mail',$email,PDO::PARAM_STR);
		$query->bindValue(':nom',$nom,PDO::PARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO::PARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO::PARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO::PARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO::PARAM_STR);
		$query->bindValue(':signature',$signature,PDO::PARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO::PARAM_STR);
		$query->bindValue(':profession',$profession,PDO::PARAM_STR);
		$query->bindValue(':facebook',$facebook,PDO::PARAM_STR);
		$query->bindValue(':twitter',$twitter,PDO::PARAM_STR);
		$query->bindValue(':tumblr',$tumblr,PDO::PARAM_STR);
		$query->bindValue(':fotolog',$fotolog,PDO::PARAM_STR);
		$query->bindValue(':googleplus',$googleplus,PDO::PARAM_STR);
		$query->bindValue(':pinterest',$pinterest,PDO::PARAM_STR);
		$query->bindValue(':flickr',$flickr,PDO::PARAM_STR);
		$query->bindValue(':id',$id,PDO::PARAM_INT);
        $query->execute();
		$query->CloseCursor();
}
else if (empty($i_membre_id) && empty($rs_membre_id))
{
	
		$query3=$bdd->prepare('INSERT INTO rs_membre (membre_facebook, membre_twitter, membre_tumblr, membre_fotolog, membre_pinterest, membre_googleplus, membre_flickr, rs_membre_id) VALUES (:facebook,:twitter,:tumblr,:fotolog,:pinterest,:googleplus,:flickr,:id)');
	    $query3->bindValue(':facebook',$facebook,PDO::PARAM_STR);
        $query3->bindValue(':twitter',$twitter,PDO::PARAM_STR);
		$query3->bindValue(':tumblr',$tumblr,PDO::PARAM_STR);
		$query3->bindValue(':fotolog',$fotolog,PDO::PARAM_STR);
		$query3->bindValue(':googleplus',$googleplus,PDO::PARAM_STR);
		$query3->bindValue(':pinterest',$pinterest,PDO::PARAM_STR);
		$query3->bindValue(':flickr',$flickr,PDO::PARAM_STR);
		$query3->bindValue(':id',$rs_membre_id,PDO::PARAM_INT);
		$query3->execute();
		$query3->CloseCursor();
	
	$query2=$bdd->prepare('INSERT INTO infos_membre (membre_nom, membre_prenom, membre_naissance, membre_siteweb, membre_localisation, membre_signature, membre_biographie, membre_profession, i_membre_id) VALUES (:nom,:prenom,:naissance,:siteweb,:localisation,:signature,:biographie,:profession,:id)');
	    $query2->bindValue(':nom',$nom,PDO::PARAM_STR);
        $query2->bindValue(':prenom',$prenom,PDO::PARAM_STR);
		$query2->bindValue(':naissance',$naissance,PDO::PARAM_STR);
		$query2->bindValue(':siteweb',$siteweb,PDO::PARAM_STR);
		$query2->bindValue(':localisation',$localisation,PDO::PARAM_STR);
		$query2->bindValue(':signature',$signature,PDO::PARAM_STR);
		$query2->bindValue(':biographie',$biographie,PDO::PARAM_STR);
		$query2->bindValue(':profession',$profession,PDO::PARAM_STR);
		$query2->bindValue(':id',$i_membre_id,PDO::PARAM_INT);
		$query2->execute();
		$query2->CloseCursor();
		
		$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
        $query->bindValue(':mdp',$pass,PDO::PARAM_STR);
        $query->bindValue(':mail',$email,PDO::PARAM_STR);
		$query->bindValue(':id',$id,PDO::PARAM_INT);
	    $query->execute();
        $query->CloseCursor();
}

else if (isset($i_membre_id) && empty($rs_membre_id))
{
	$query=$bdd->prepare('UPDATE membres m INNER JOIN infos_membre i ON i.i_membre_id=m.membre_id SET m.membre_mdp=:mdp, m.membre_mail=:mail, i.membre_nom=:nom, i.membre_prenom=:prenom, i.membre_naissance=:naissance, i.membre_siteweb=:siteweb, i.membre_localisation=:localisation, i.membre_signature=:signature, i.membre_biographie=:biographie, i.membre_profession=:profession WHERE m.membre_id=:id');
        $query->bindValue(':mdp',$pass,PDO::PARAM_STR);
        $query->bindValue(':mail',$email,PDO::PARAM_STR);
		$query->bindValue(':nom',$nom,PDO::PARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO::PARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO::PARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO::PARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO::PARAM_STR);
		$query->bindValue(':signature',$signature,PDO::PARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO::PARAM_STR);
		$query->bindValue(':profession',$profession,PDO::PARAM_STR);
		$query->bindValue(':id',$id,PDO::PARAM_INT);
        $query->execute();
		$query->CloseCursor();
		
		$query3=$bdd->prepare('INSERT INTO rs_membre (membre_facebook, membre_twitter, membre_tumblr, membre_fotolog, membre_pinterest, membre_googleplus, membre_flickr, rs_membre_id) VALUES (:facebook,:twitter,:tumblr,:fotolog,:pinterest,:googleplus,:flickr,:id)');
	    $query3->bindValue(':facebook',$facebook,PDO::PARAM_STR);
        $query3->bindValue(':twitter',$twitter,PDO::PARAM_STR);
		$query3->bindValue(':tumblr',$tumblr,PDO::PARAM_STR);
		$query3->bindValue(':fotolog',$fotolog,PDO::PARAM_STR);
		$query3->bindValue(':googleplus',$googleplus,PDO::PARAM_STR);
		$query3->bindValue(':pinterest',$pinterest,PDO::PARAM_STR);
		$query3->bindValue(':flickr',$flickr,PDO::PARAM_STR);
		$query3->bindValue(':id',$rs_membre_id,PDO::PARAM_INT);
		$query3->execute();
		$query3->CloseCursor();
}
else if (empty($i_membre_id) && isset($rs_membre_id))
{
$query=$bdd->prepare('UPDATE membres m INNER JOIN rs_membre r ON r.rs_membre_id=m.membre_id SET m.membre_mdp=:mdp, m.membre_mail=:mail, r.membre_facebook=:facebook, r.membre_twitter=:twitter, r.membre_tumblr=:tumblr, r.membre_flickr=:flickr, r.membre_fotolog=:fotolog, r.membre_pinterest=:pinterest, r.membre_googleplus=:googleplus WHERE m.membre_id=:id');
        $query->bindValue(':mdp',$pass,PDO::PARAM_STR);
        $query->bindValue(':mail',$email,PDO::PARAM_STR);
		$query->bindValue(':facebook',$facebook,PDO::PARAM_STR);
		$query->bindValue(':twitter',$twitter,PDO::PARAM_STR);
		$query->bindValue(':tumblr',$tumblr,PDO::PARAM_STR);
		$query->bindValue(':fotolog',$fotolog,PDO::PARAM_STR);
		$query->bindValue(':googleplus',$googleplus,PDO::PARAM_STR);
		$query->bindValue(':pinterest',$pinterest,PDO::PARAM_STR);
		$query->bindValue(':flickr',$flickr,PDO::PARAM_STR);
		$query->bindValue(':id',$id,PDO::PARAM_INT);
        $query->execute();
		$query->CloseCursor();
		
		$query2=$bdd->prepare('INSERT INTO infos_membre (membre_nom, membre_prenom, membre_naissance, membre_siteweb, membre_localisation, membre_signature, membre_biographie, membre_profession, i_membre_id) VALUES (:nom,:prenom,:naissance,:siteweb,:localisation,:signature,:biographie,:profession,:id)');
	    $query2->bindValue(':nom',$nom,PDO::PARAM_STR);
        $query2->bindValue(':prenom',$prenom,PDO::PARAM_STR);
		$query2->bindValue(':naissance',$naissance,PDO::PARAM_STR);
		$query2->bindValue(':siteweb',$siteweb,PDO::PARAM_STR);
		$query2->bindValue(':localisation',$localisation,PDO::PARAM_STR);
		$query2->bindValue(':signature',$signature,PDO::PARAM_STR);
		$query2->bindValue(':biographie',$biographie,PDO::PARAM_STR);
		$query2->bindValue(':profession',$profession,PDO::PARAM_STR);
		$query2->bindValue(':id',$i_membre_id,PDO::PARAM_INT);
		$query2->execute();
		$query2->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 pour votre attention et votre aide.