8725 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

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)
Bonjour GroquikMLV =),
Encore une fois merci xD

Il n'y a pas de message d'erreur mais les champs sont vides et les ajouts nom, prénom etc, ne s'ajoute pas.

j'ai donc rajouté tout les champs constituant ma table infos_membre dans mon formulaire et dans mes requêtes.

Pour ma dernière requêtes de modification des tables figurant à la fin de mon code ( de la page modification ), j'ai tenté d'adapter la jointure de requête que tu ma montré pour le SELECT.


$query=$bdd->prepare('UPDATE membres m INNER JOIN infos_membre i SET m.membre_mdp=:mdp, m.membre_mail=:mail, i.membre_nom, i.membre_prenom, i.membre_naissance, i.membre_siteweb, i.membre_localisation, i.membre_signature, i.membre_biographie, i.membre_profession  WHERE m.membre_id=:id');
        $query->bindValue(':mdp',$pass,PDO: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
		$query->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);
        $query->execute();
		
        $quer->CloseCursor();


Mais pour que l'id membre de la table infos_membre s'insère également, peut on utiliser un AND après le WHERE de la manière suivante :

WHERE m.membre_id=:id AND i.membre_id


Merci encore pour ton aide groquikMLV ^^,
Sincèrement.
Modifié par Reverb (05 Jul 2013 - 16:29)
Non, tu n'as pas besoin de mettre de AND. Le WHERE représente la condition qui va délimiter les enregistrements. Par exemple, WHERE id=3 --> tu ne vas modifier que les infos pour l'enregistrement de l'utilisateur ayant l'id 3.
Du coup, WHERE m.membre_id=:id AND i.membre_id ne veut rien dire. A la rigueur, tu pourrais faire:
WHERE m.membre_id=:id AND i.membre_id=:id

mais au final, ça revient au même, car comme tu fais une jointure sur l'id (... INNER JOIN table2 ON table1.id=table2.id), il sait déjà que ça ne va concerner que cet id. Je ne sais pas si c'est clair pour toi, en gros, pas besoin de spécifier 2 fois la même chose.
Par contre, ta requête est fausse car il n'y a pas de join:
$query=$bdd->prepare('UPDATE membres m INNER JOIN infos_membre i SET m.membre_mdp=:mdp, m.membre_mail=:mail, i.membre_nom, i.membre_prenom, i.membre_naissance, i.membre_siteweb, i.membre_localisation, i.membre_signature, i.membre_biographie, i.membre_profession  WHERE m.membre_id=:id');

devrait normalement être:
$query=$bdd->prepare('UPDATE membres m INNER JOIN infos_membre i [b]ON i.membre_id=m.membre_id [/b]SET m.membre_mdp=:mdp, m.membre_mail=:mail, i.membre_nom, i.membre_prenom, i.membre_naissance, i.membre_siteweb, i.membre_localisation, i.membre_signature, i.membre_biographie, i.membre_profession  WHERE m.membre_id=:id');
Merci Smiley smile
cette fois-ci je pense avoir compris Smiley smile le principe de jointure,

J'ai corrigé ma requêtes en rajoutant " :nom, etc.. " pour la correspondance avec les 'bindvalue'.

Aucune des informations ne s'affichent ( le mail, l'image avatar xD ), j'ai l'impression d'être déjà passé par là ^^',

j'ai donc bien revérifié chaque requêtes ( je n'ai pas encore modifier la requête de la page consulter, peut-être l'erreur vient-elle d'ici ?)

voici ma première requête de ma page modifier.php avec le formulaire :

$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: [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>Informations secondaire</b></p></div></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>
		
		<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><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="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>
        <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();


mes posts :


 $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']);
    $confirm = ($_POST['confirm']);


et ma dernière requête de modification :


$query=$bdd->prepare('UPDATE membres m INNER JOIN infos_membre i ON 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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
		$query->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);
        $query->execute();
		
        $quer->CloseCursor();


Merci pour ton temps passé à m'aider,
Sincèrement.
A première vue, tes requêtes me semblent correctes (ceci dit, il se fait tard, j'ai peut-être raté quelque chose). Du coup, je pencherais plutôt pour un problème d'insertion des données dans la table la première fois que tu crée le profil. Cela pourrait engendrer une table vide, et éventuellement expliquer pourquoi la requête update ne fonctionne pas (puisqu'il n'y aurait rien à mettre à jour du coup), ni la requête select qui permet d'afficher les infos (puisque du coup il n'y aurait aucune info à afficher).

Il faudrait donc que tu commences par vérifier si tes tables membres et infos_membre sont bien remplies, ou si elles sont vides.
Cas 1: elles sont bien remplies: ça veut dire que j'ai raté un truc, et du coup je me replongerai plus précisément dans ton code.
Cas 2: les tables sont vides, donc c'est ta première requête d'insertion qui foire. Si c'est ça, il faudrait que tu montres ta requete d'insertion dans les tables (INSERT INTO....)

EDIT:
a écrit :
j'ai donc bien revérifié chaque requêtes ( je n'ai pas encore modifier la requête de la page consulter, peut-être l'erreur vient-elle d'ici ?)
---> Peut-être, c'est possible. Peux tu montrer à quoi elle ressemble, au cas où?
Modifié par GroquikMLV (05 Jul 2013 - 23:18)
Re grosquikMLV,
non tu as raison,
lors de l'inscription du membre, les informations secondaire ne sont pas inséré, ce qui fait qu'effectivement aucune modification n'est à faire ( Encore une fois merci ^^' je n'avais pas pensé à ça ) j'ai donc rajouté une requête d'insertion à la suite de la requête de modification,
Si je ne me suis pas trompé, voici mon code regroupant mes deux dernières requêtes :

( concernant le $_SESSION je ne suis pas sur de savoir si ça marche en précisant i.membre_id ( si le champs membre_id dans la table infos membre et remplie pour cet utilisateur, alors on modifie la requête, sinon on insert )


if (isset ($_SESSION['i.membre_id'])) {
$query=$bdd->prepare('UPDATE membres m INNER JOIN infos_membre i ON 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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
		$query->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);
        $query->execute();
		$query->CloseCursor();
}
else
{
	$query=$bdd->prepare('INSERT INTO infos_membre (membre_nom, membre_prenom, membre_naissance, membre_siteweb, membre_localisation, membre_signature, membre_biographie, membre_profession) VALUES (:membre_nom,:membre_prenom,:membre_naissance,:membre_siteweb,:membre_localisation,:membre_signature,:membre_biographie,:membre_profession)');
	$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
	$query->execute(array('membre_nom'=>$_POST['membre_nom'], 'membre_prenom'=>$_POST['membre_prenom'], 'membre_naissance'=>$_POST['membre_naissance'], 'membre_siteweb'=>$_POST['membre_siteweb'], 'membre_localisation'=>$_POST['membre_localisation'], 'membre_signature'=>$_POST['membre_signature'], 'membre_biographie'=>$_POST['membre_biographie'], 'membre_profession'=>$_POST['membre_profession']));
        $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();
}


concernant la page consulter.php voici le code ( n'ayant subit aucune modification pour l'affichage des infos secondaire ^^ )


<?php session_start();

if(isset ($_SESSION['membre_id']))
{
 echo '<div id="retourselect">
 <a href="voirprofil.php?action=consulter" title="recharger la page"><h1 class="titre1">'."Profil".'</h1></a>
 </div>';
$membre = ($_SESSION['membre_id']);
$query = $bdd->prepare('SELECT membre_pseudo, membre_mail, membre_inscription ,membre_inscription, membre_avatar, membre_post FROM membres WHERE membre_id=:membreid');
$query->bindValue(':membreid', $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 '<img src="./images/avatars/' . $data['membre_avatar'] . '"
        class="imgavatar" alt="votre avatar" />';
	
    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">vous êtes 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();
}
}
else
{
	echo '<p class="texteerror">'."Vous n'avez pas accès à cette page.".'</p>';
	echo '<p class="textewarning">'."Vous devez être connécté pour accéder à cette page.".'</p>';	
}
?>
Re,
Je pense avoir fait une petit erreur concernant la requête d'insertion j'ai modifier :

$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
	$query->execute(array('membre_nom'=>$_POST['membre_nom'], 'membre_prenom'=>$_POST['membre_prenom'], 'membre_naissance'=>$_POST['membre_naissance'], 'membre_siteweb'=>$_POST['membre_siteweb'], 'membre_localisation'=>$_POST['membre_localisation'], 'membre_signature'=>$_POST['membre_signature'], 'membre_biographie'=>$_POST['membre_biographie'], 'membre_profession'=>$_POST['membre_profession']));


par


$query=$bdd->prepare('INSERT INTO infos_membre (membre_nom, membre_prenom, membre_naissance, membre_siteweb, membre_localisation, membre_signature, membre_biographie, membre_profession) VALUES (:membre_nom,:membre_prenom,:membre_naissance,:membre_siteweb,:membre_localisation,:membre_signature,:membre_biographie,:membre_profession)');
	$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
	    $query->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
        $query->bindValue(':mdp',$pass,PDO: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);

Modifié par Reverb (06 Jul 2013 - 14:53)
A mon avis tu t'es planté sur ton test de session:
if (isset ($_SESSION['i.membre_id'])) {

En gros les sessions, c'est comme ça:
- lorsque l'utilisateur se connecte, on récupère ses infos dans la/les table(s)
- on stocke toutes ces infos dans des variables de sessions ($_SESSION['nom'] = $nom par exemple)
- ensuite, on peut réutiliser ces infos. Par exemple:
echo "Bonjour, vous êtes connecté en tant que ".$_SESSION['nom'];


Du coup, cela voudrait dire qu'auparavant, tu as du créer une variable de session nommée "i.membre_id", ce qui m'étonnerait fortement.

Peux tu me dire quels sont les nouveaux symptômes: est ce que les données sont bien insérées dans les tables? Est ce qu'elles sont bien updatées?
Salut à toi GroquikMLV =),

Concernant ma $_SESSION j'ai voulu faire en sorte que, tant que l'id de la table infos_membre n'est pas rempli on utilise la requête INSERT sinon, si des informations on déjà été rajoutées, on les modifie avec la requête UPDATE.

J'ai donc modifié :
if (isset ($_SESSION['i.membre_id'])) {

par
if (empty($nom) || empty($prenom) || empty($naissance) || empty($siteweb) || empty($localisation) || empty($signature) || empty($biographie) || empty($profession)) {


mais je ne suis pas sur que cela fonctionne lorsqu'une seul information sera renseigné Smiley ohwell .

Une erreur s'affiche dans ma requête :

$query=$bdd->prepare('INSERT INTO infos_membre (membre_nom, membre_prenom, membre_naissance, membre_siteweb, membre_localisation, membre_signature, membre_biographie, membre_profession) VALUES (:nom,:prenom,:naissance,:siteweb,:localisation,:signature,:biographie,:profession)');
	$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
	    $query->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
        $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();



Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in /home/crobar/public_html/modifier.php:247 Stack trace: #0 /home/crobar/public_html/modifier.php(247): PDOStatement->execute() #1 /home/crobar/public_html/voirprofil.php(37): include('/home/crobar/...') #2 {main} thrown in /home/crobar/public_html/modifier.php on line 247


Et les symptômes, sont ( pour commencer ^^' ) qu'aucunes informations ne s'affichent lorsque j'arrive dans la page modification, alors que pourtant, dans mon formulaire, :

<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>


même les champs qui sont rempli dans ma table membres ne s'affichent plus Smiley ohwell .

Merci pour ta patience,
Sincèrement.
Modifié par Reverb (08 Jul 2013 - 14:48)
Ok, je pense avoir repéré l'erreur: en gros il te dit "oh mais c'est mal, le nombre de paramètres que tu donnes ne correspond pas avec celui attendu...". Et effectivement, si tu regardes ce code:
$query=$bdd->prepare('INSERT INTO infos_membre (membre_nom, membre_prenom, membre_naissance, membre_siteweb, membre_localisation, membre_signature, membre_biographie, membre_profession) VALUES (:nom,:prenom,:naissance,:siteweb,:localisation,:signature,:biographie,:profession)');
	$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
	    $query->bindValue(':nom',$nom,PDO:  Smiley langue ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO:  Smiley langue ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO:  Smiley langue ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO:  Smiley langue ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO:  Smiley langue ARAM_STR);
		$query->bindValue(':signature',$signature,PDO:  Smiley langue ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO:  Smiley langue ARAM_STR);
		$query->bindValue(':profession',$profession,PDO:  Smiley langue ARAM_STR);
        $query->bindValue(':mdp',$pass,PDO:  Smiley langue ARAM_STR);
        $query->bindValue(':mail',$email,PDO:  Smiley langue ARAM_STR);
        $query->bindValue(':id',$id,PDO:  Smiley langue ARAM_INT);
		
        $query->execute();

        $query->CloseCursor();

- Tu crées ta 1ère requête, que tu stocke dans $query ($query=$bdd->prepare(INSERT INTO...)) MAIS tu ne l'exécute pas.
- tu crées la 2ème requete ($query=$bdd->prepare(UPDATE...)) que tu stocke DANS LA MEME VARIABLE $query, donc ça écrase la requete précédente
- tu bind tes values et tu exécutes la requete ($query->execute), donc en fait tu exécutes uniquement la requete UPDATE. Or, tu as du coup 11 valeur en bind pour une requete qui en attend 3!

Ce que tu dois faire:
-$query=$bdd->prepare(INSERT INTO...)
-$query->bindValue pour tous les arguments de la requete INSERT INTO
-$query->exectue()
-$query2=$bdd->prepare(UPDATE...)
-$query2->bindValue pour tous les arguments de la requete UPDATE
-$query2->execute()
Modifié par GroquikMLV (08 Jul 2013 - 15:10)
Re,
Okk =), j'ai donc fait les modification, ( en ajoutant $query->CloseCursor();, et $query2->CloseCursor(); à la suite d' " execute " ).

J'ai ensuite testé le site,
- Mes informations déjà informées ( dans les champs de mes tables ) ne s'affichent pas lorsque j'arrive dans ma page modification.
-Le champs de membre_id dans infos_membre, ne s'ajoute pas Smiley ohwell .
-Lorsque j'insère toutes les infos, la date ne s'insère pas et affiche "1" dans le champs de la table.
-Lorsque je repasse une deuxième fois par la modifications du même profil, l'ajout d'une nouvelle colonne dans ma table infos_membre se créé.

Voici mon code actuelle 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 du membre
		$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: [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>Informations secondaire</b></p></div></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>
		
		<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><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="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>
        <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']);
	$nom = ($_POST['nom']);
	$prenom = ($_POST['prenom']);
	$naissance = ($_POST['naissance']);
	$siteweb = ($_POST['siteweb']);
	$localisation = ($_POST['localisation']);
	$signature = ($_POST['signature']);
	$biographie = ($_POST['biographie']);
	$profession = ($_POST['profession']);
    $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 = 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: [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>';

if (empty($nom) || empty($prenom) || empty($naissance) || empty($siteweb) || empty($localisation) || empty($signature) || empty($biographie) || empty($profession)) {
$query=$bdd->prepare('UPDATE membres m INNER JOIN infos_membre i ON 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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
		$query->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);
        $query->execute();
		$query->CloseCursor();
}
else
{
	$query2=$bdd->prepare('INSERT INTO infos_membre (membre_nom, membre_prenom, membre_naissance, membre_siteweb, membre_localisation, membre_signature, membre_biographie, membre_profession) VALUES (:nom,:prenom,:naissance,:siteweb,:localisation,:signature,:biographie,:profession)');
	        $query2->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
                $query2->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query2->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query2->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query2->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query2->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query2->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query2->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
		$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: [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 GroquikMLV,
Sincèrement.
Bonjour,
Comme d'habitude, il faut y aller problème par problème, car sinon on va se perdre.
Alors ces deux problèmes sont liés:
a écrit :
- Mes informations déjà informées ( dans les champs de mes tables ) ne s'affichent pas lorsque j'arrive dans ma page modification.
-Le champs de membre_id dans infos_membre, ne s'ajoute pas Smiley ohwell .

Si l'id ne s'insère pas dans la table, la requête qui te permet d'afficher les infos déjà informées va échouer (car tu as un WHERE id=:id, mais si ton id est vide, au final ça te fais un WHERE id='', et donc ta requête ne renvoie rien).

Du coup, il faut trouver pourquoi l'id n'est pas inséré. Quand je regarde tes requêtes INSERT INTO infos_membre, je vois que tu n'as pas précisé ton champ membre_id. Du coup, j'en déduis que ton champ membre_id est en auto_increment dans ta base... Est-ce que tu peux me confirmer la chose? Si il n'y est pas, passe le en auto increment.

2ème problème:
a écrit :
-Lorsque j'insère toutes les infos, la date ne s'insère pas et affiche "1" dans le champs de la table.

Si tu regardes tes bindValue, on voit ceci:
$query->bindValue(':naissance',$naissance,PDO:: PARAM_INT);

PARAM_INT, donc il s'attend à avoir un nombre entier. Mais je suppose que dans ta date, tu as du mettre un truc genre 01/05/1986 par exemple. Du coup, comme il y a des slash, il n'a pas du aimer, et a du convertir le 01 du début en 1 (hypothèse hein, je ne suis pas sûr). Du coup je pense que tu dois mettre en PARAM_STR pour lui dire que c'est une chaine de caractères.
Vérifie aussi si dans la table tu as mis le champ en date ou en varchar. Si c'est en date, il faut que tu lui passes la date au format qu'il attend!

Bon, on va s'arrêter là pour le moment, et on avisera pour la suite une fois que tu m'auras fait un nouveau retour.
Bonjour à toi Smiley smile ,

En relisant ce que tu ma conseillé, je pense avoir trouvé un petit problème qui devait être une des causes des erreurs.

Dans ma table 'infos_membre' j'avais inséré deux 'id' dans le champs 'infos_id' qui était en auto increment et clef primaire, ( du coup j'ai supprimé ce fameux champs ) et j'ai rajouté au champs 'membre_id' l'auto increment ( et en clef primaire ).

Mais ce que je ne comprend pas, c'est comment l'id du membre peut-il être récupéré si l'id et en auto-increment Smiley ohwell ? , lorsque je vais dans ma page modifier et que j'effectue un test, '1' s'affiche dans membre id est ainsi de suite Smiley ohwell ( au lieu de reprendre l'id du membre (12 par exemple ) )

Concernant mon champs naissance, tu as encore raison Smiley lol ^^, le format que j'insérais n'était pas bon, seul : 000-00-00 fonctionne, et PDO :: PARAM_INT était effectivement une des raisons pour lesquelles la date ne s'ajoutait pas Smiley lol .
a écrit :
Mais ce que je ne comprend pas, c'est comment l'id du membre peut-il être récupéré si l'id et en auto-increment Smiley ohwell ? , lorsque je vais dans ma page modifier et que j'effectue un test, '1' s'affiche dans membre id est ainsi de suite Smiley ohwell ( au lieu de reprendre l'id du membre (12 par exemple ) )

L'auto-increment est uniquement utilisé pour les insertions dans la table, pas pour la récupération d'informations, donc ça n'a aucune incidence.

Exemple: tu veux ajouter mr Martin dans ta table, et il y a déjà 11 membres présents dans cette table. Il sera ajouté dans ta table avec membre_id = 12.
Ensuite, au moment où tu fais ta vérification sur l'adresse mail, tu fais: "est ce que l'adresse mail est présente dans la table? Oui, et l'id du membre correspondant est 12, donc on récupère toutes les infos concernant le membre qui a pour id 12, et on les affiche"

Si dans membre_id tu n'as que la valeur "1", fais un echo de $id juste après ça:
    //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']);

A mon avis, $id vaut 1, tout simplement. Si c'est le cas, il faut que tu revoies la partie de code où tu affectes une valeur à ta variable de session (l'endroit où tu as $_SESSION['membre_id']=quelque chose;)
Re,
Tout fonctionne correctement !!!
Pour cela, j'ai changé le nom de champs membre_id de la table infos membre qui était identique à celui de la table membre ( ce qui devait causer quelques soucis ).

Ensuite j'ai changé la formulation du :
if (empty($nom) || empty($prenom) || empty($naissance) || empty($siteweb) || empty($localisation) || empty($signature) || empty($biographie) || empty($profession)) {


par


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

if (empty($i_membre_id)) {


puis, j'avais fait une petit erreur d'inattention ^^' l'id n'était pas dans la requête d'insertion pour ma table infos_membre ce qui devait être aussi une gêne pour le fonctionnement du code Smiley lol .


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

if (empty($i_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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
		$query->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);
        $query->execute();
		$query->CloseCursor();
}
else
{
	$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: [langue]ARAM_STR);
                $query2->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query2->bindValue(':naissance',$naissance,PDO: [langue]ARAM_STR);
		$query2->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query2->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query2->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query2->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query2->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
		$query2->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
                $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
                $query->bindValue(':id',$id,PDO: [langue]ARAM_INT);
	        $query->execute();
                $query->CloseCursor();
}


Concernant le profil, il ne me reste plus qu'a rajouté les informations dans la page consulter.php ( ce qui ne devrait pas être difficile après tout ça xD )

et le rajout d'une troisième table pour les réseaux sociaux Smiley lol , ce qui ne devrait pas être sorcier non plus x), je tiens au courant =)

Merci encore pour toutes ton aide et ton temps passé pour toutes ces explications Smiley lol sincèrement, sans toi je ne serais pas ou j'en serais actuellement dans ce décryptage ^^'.
Modifié par Reverb (09 Jul 2013 - 16:55)
C'est bizarre, normalement le fait d'avoir deux fois le même nom de champ dans deux tables différentes ne doit pas avoir d'impact... Enfin bon, si ça marche, tant mieux Smiley smile

En tout cas c'est bien si tu as pu comprendre un peu mieux le fonctionnement global... D'autant plus que tu t'es attaqué à plusieurs gros points en même temps: sessions, upload de fichiers, jointure dans les requêtes SQL...
Bonjour à toi GroquikMLV =),

J'ai réussi sans problème à afficher les informations secondaires dans la page consulter,
j'ai également créer ma 3 ème table de la même façon que la 2 ème ( mais ne comportant que les réseaux sociaux ( facebook, twitter, tumblr, flickr, pinterest, etc... )

et je suis confronté de nouveau à un petit soucis Smiley ohwell j'ai bien rédigé mes requêtes mais je ne suis pas sur d'avoir bien utiliser les else if et if voici mes requêtes :


$i_membre_id = ($_SESSION['i_membre_id']);
$rs_membre_id = ($_SESSION['rs_membre_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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
		$query->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
		$query->bindValue(':facebook',$facebook,PDO: [langue]ARAM_STR);
		$query->bindValue(':twitter',$twitter,PDO: [langue]ARAM_STR);
		$query->bindValue(':tumblr',$tumblr,PDO: [langue]ARAM_STR);
		$query->bindValue(':fotolog',$fotolog,PDO: [langue]ARAM_STR);
		$query->bindValue(':googleplus',$googleplus,PDO: [langue]ARAM_STR);
		$query->bindValue(':pinterest',$pinterest,PDO: [langue]ARAM_STR);
		$query->bindValue(':flickr',$flickr,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query3->bindValue(':twitter',$twitter,PDO: [langue]ARAM_STR);
		$query3->bindValue(':tumblr',$tumblr,PDO: [langue]ARAM_STR);
		$query3->bindValue(':fotolog',$fotolog,PDO: [langue]ARAM_STR);
		$query3->bindValue(':googleplus',$googleplus,PDO: [langue]ARAM_STR);
		$query3->bindValue(':pinterest',$pinterest,PDO: [langue]ARAM_STR);
		$query3->bindValue(':flickr',$flickr,PDO: [langue]ARAM_STR);
		$query3->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query2->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query2->bindValue(':naissance',$naissance,PDO: [langue]ARAM_STR);
		$query2->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query2->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query2->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query2->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query2->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
		$query2->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
		$query->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query3->bindValue(':twitter',$twitter,PDO: [langue]ARAM_STR);
		$query3->bindValue(':tumblr',$tumblr,PDO: [langue]ARAM_STR);
		$query3->bindValue(':fotolog',$fotolog,PDO: [langue]ARAM_STR);
		$query3->bindValue(':googleplus',$googleplus,PDO: [langue]ARAM_STR);
		$query3->bindValue(':pinterest',$pinterest,PDO: [langue]ARAM_STR);
		$query3->bindValue(':flickr',$flickr,PDO: [langue]ARAM_STR);
		$query3->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
		$query->bindValue(':facebook',$facebook,PDO: [langue]ARAM_STR);
		$query->bindValue(':twitter',$twitter,PDO: [langue]ARAM_STR);
		$query->bindValue(':tumblr',$tumblr,PDO: [langue]ARAM_STR);
		$query->bindValue(':fotolog',$fotolog,PDO: [langue]ARAM_STR);
		$query->bindValue(':googleplus',$googleplus,PDO: [langue]ARAM_STR);
		$query->bindValue(':pinterest',$pinterest,PDO: [langue]ARAM_STR);
		$query->bindValue(':flickr',$flickr,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query2->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query2->bindValue(':naissance',$naissance,PDO: [langue]ARAM_STR);
		$query2->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query2->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query2->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query2->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query2->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
		$query2->bindValue(':id',$id,PDO: [langue]ARAM_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>';
    }
}


en résumé :
- Si tout est rempli, alors on passe par la requête de modif général,
-Sinon si tout est vide ( excepté la table membres ) alors on insert dans Infosmembre et rs_membre et on modifie la table membres
-Sinon si Infos membre est plein et que rs_membre est vide alors on modifie infos_membre et membres et on insert dans rs_membre
_Sinon si Rs membre est plein et que infos membre est vide alors on modifie rs_membre et membres et on insert dans Infos_membre.
Salut,
Tu t'es planté sur tes conditions dans les if. Le "et" logique s'écrit &&, et non pas || (|| signifie "ou", donc ça veut dire que si une seule des conditions est bonne, il rentre dans la boucle, d'où tes problèmes).

Remplace tout tes "||" par des "&&" et ça sera bon.
Re,
Effectivement Smiley ohwell merci ^^,
( quand c'est presque fini, y'en à encore Smiley ohwell ^^' )
Je me suis aperçu que dans ma page modification,quand tout les champs ne sont pas rempli dans la table infos_membre, par exemple, les autres informations ne s'affichent pas ( des autres tables et de la table a moitié rempli ) Smiley ohwell pourtant j'ai bien séparée chaque table ( requête ).
voici 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 du membre
		$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, r.membre_facebook, r.membre_twitter, r.membre_tumblr, r.membre_flickr, r.membre_pinterest, r.membre_googleplus, r.membre_fotolog FROM membres m INNER JOIN infos_membre i ON m.membre_id = i.i_membre_id INNER JOIN rs_membre r ON m.membre_id = r.rs_membre_id WHERE m.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>Informations secondaire</b></p></div></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>
		
		<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><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="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><div id="cadrepseu"><p class="classinscr"><b>Réseaux Sociaux</b></p></div></legend>
		
		<div id="cadrepseu"><p class="classinscr"><label for="facebook">Votre adresse Facebook : </label><input type="text" name="facebook" id="facebook" value="' . $data['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="' . $data['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="' . $data['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="' . $data['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="' . $data['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="' . $data['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="' . $data['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();
		
		
    } 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']);
	$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: [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 = 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: [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>';

$i_membre_id = ($_SESSION['i_membre_id']);
$rs_membre_id = ($_SESSION['rs_membre_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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
		$query->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
		$query->bindValue(':facebook',$facebook,PDO: [langue]ARAM_STR);
		$query->bindValue(':twitter',$twitter,PDO: [langue]ARAM_STR);
		$query->bindValue(':tumblr',$tumblr,PDO: [langue]ARAM_STR);
		$query->bindValue(':fotolog',$fotolog,PDO: [langue]ARAM_STR);
		$query->bindValue(':googleplus',$googleplus,PDO: [langue]ARAM_STR);
		$query->bindValue(':pinterest',$pinterest,PDO: [langue]ARAM_STR);
		$query->bindValue(':flickr',$flickr,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query3->bindValue(':twitter',$twitter,PDO: [langue]ARAM_STR);
		$query3->bindValue(':tumblr',$tumblr,PDO: [langue]ARAM_STR);
		$query3->bindValue(':fotolog',$fotolog,PDO: [langue]ARAM_STR);
		$query3->bindValue(':googleplus',$googleplus,PDO: [langue]ARAM_STR);
		$query3->bindValue(':pinterest',$pinterest,PDO: [langue]ARAM_STR);
		$query3->bindValue(':flickr',$flickr,PDO: [langue]ARAM_STR);
		$query3->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query2->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query2->bindValue(':naissance',$naissance,PDO: [langue]ARAM_STR);
		$query2->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query2->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query2->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query2->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query2->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
		$query2->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
		$query->bindValue(':nom',$nom,PDO: [langue]ARAM_STR);
        $query->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query->bindValue(':naissance',$naissance,PDO: [langue]ARAM_INT);
		$query->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query3->bindValue(':twitter',$twitter,PDO: [langue]ARAM_STR);
		$query3->bindValue(':tumblr',$tumblr,PDO: [langue]ARAM_STR);
		$query3->bindValue(':fotolog',$fotolog,PDO: [langue]ARAM_STR);
		$query3->bindValue(':googleplus',$googleplus,PDO: [langue]ARAM_STR);
		$query3->bindValue(':pinterest',$pinterest,PDO: [langue]ARAM_STR);
		$query3->bindValue(':flickr',$flickr,PDO: [langue]ARAM_STR);
		$query3->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
		$query->bindValue(':facebook',$facebook,PDO: [langue]ARAM_STR);
		$query->bindValue(':twitter',$twitter,PDO: [langue]ARAM_STR);
		$query->bindValue(':tumblr',$tumblr,PDO: [langue]ARAM_STR);
		$query->bindValue(':fotolog',$fotolog,PDO: [langue]ARAM_STR);
		$query->bindValue(':googleplus',$googleplus,PDO: [langue]ARAM_STR);
		$query->bindValue(':pinterest',$pinterest,PDO: [langue]ARAM_STR);
		$query->bindValue(':flickr',$flickr,PDO: [langue]ARAM_STR);
        $query->bindValue(':id',$id,PDO: [langue]ARAM_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: [langue]ARAM_STR);
        $query2->bindValue(':prenom',$prenom,PDO: [langue]ARAM_STR);
		$query2->bindValue(':naissance',$naissance,PDO: [langue]ARAM_STR);
		$query2->bindValue(':siteweb',$siteweb,PDO: [langue]ARAM_STR);
		$query2->bindValue(':localisation',$localisation,PDO: [langue]ARAM_STR);
		$query2->bindValue(':signature',$signature,PDO: [langue]ARAM_STR);
		$query2->bindValue(':biographie',$biographie,PDO: [langue]ARAM_STR);
		$query2->bindValue(':profession',$profession,PDO: [langue]ARAM_STR);
		$query2->bindValue(':id',$id,PDO: [langue]ARAM_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>';
    }
}
?>


J'ai à peu près le même problème pour la page consulter.php ( mais je m'en occuperai une fois le problème de la page modifier résolu )

Merci encore ^^.
Sincèrement.
Alors je ne suis plus sur à 100%, mais il me semble qu'il faut préciser l'alias de la table (le surnom que tu lui as donné dans ta requête) devant le nom de tes colonnes.
Du coup, par exemple:
<div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['membre_pseudo']) . '</strong></p></div>

devient:
<div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['[b]m.[/b]membre_pseudo']) . '</strong></p></div>

Est-ce que tu peux faire les modifications sur tout tes $data et me dire si c'est bon ou pas?
oui bien sûr ^^, je viens d'essayer ça, mais ça na pas l'air de fonctionner Smiley ohwell
( avant de faire ces modifications, lorsque toutes les tables était rempli (pour un des membres test) les informations s'affichaient, hors en rajoutant .i .m .r les infos ne s'affichent plus du tout sur mon 'profil membre test', Smiley ohwell )

Le problème ne viendrait-il pas de la première requête qui regroupe les 3 tables Smiley ohwell ?


$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, r.membre_facebook, r.membre_twitter, r.membre_tumblr, r.membre_flickr, r.membre_pinterest, r.membre_googleplus, r.membre_fotolog FROM membres m INNER JOIN infos_membre i ON m.membre_id = i.i_membre_id INNER JOIN rs_membre r ON m.membre_id = r.rs_membre_id WHERE m.membre_id=:id');
        $query->bindValue(':id', $id, PDO: [langue]ARAM_INT);
        $query->execute();
        $data = $query->fetch();
Pages :