8725 sujets

Développement web côté serveur, CMS

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

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();
Est-ce que dans tous les cas, le champ "membre_id" est bien rempli dans les 3 tables? Car en fait, dans ta requête qui regroupe tout, tu fais ta jointure sur ce champ:
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

Il faut impérativement que ce champ soit rempli dans chacune des tables, sinon effectivement ta requête ne renverra rien.
Okkkkkk merci =) donc si j'ai bien compris,
Il me suffirait juste de séparer les requêtes en envoyant chacunes des req* vers (WHERE) avec sont id respectif à la table Smiley lol ?

J'essaye ça de suite, je tiens au courant =)
Modifié par Reverb (11 Jul 2013 - 13:25)
Non Smiley smile
Il faut juste que les 3 champs soient remplis.
En tant qu'humain, comment tu réfléchis:
- Machin vient d'entrer son mail, je vais voir si il existe dans la base
- ah oui, il existe bien, son id est le numéro 3
- je veux récupérer ses infos de réseaux sociaux: je vais voir dans la table RS et je cherche la ligne 3

Là c'est pareil, le inner join sur le champ membre_id signifie qu'il fait le lien entre les tables grâce à ce champ. Du coup, si ce champ est vide pour la table RS par exemple, il ne pourra pas faire "je récupère les infos de la table RS en cherchant la ligne dont l'id est 3", puisqu'il n'y aura pas d'id 3.

Peux tu faire un résumé des différents champs de tes tables, juste au cas où?
Re,

J'ai essayer de séparer les 3 requêtes ( avant de lire ton dernier post ^^' )
et cela à l'air de fonctionner Smiley lol mais je tombe sur une erreur que j'avais déjà rencontrer au paravent et que j'avais résolu par un coup de hasard ^^' ou qui en tout cas n'était pas ré apparu.

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '12' for key 'PRIMARY'' in /home/croba286/public_html/modifier.php:295 Stack trace: #0 /home/croba286/public_html/modifier.php(295): PDOStatement->execute() #1 /home/croba286/public_html/voirprofil.php(37): include('/home/croba286/...') #2 {main} thrown in /home/croba286/public_html/modifier.php on line 295


$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();


Je pense que mon problème doit venir des critères de select else if Smiley ohwell

Concernant mes tables :
-- Structure de la table `membres`
--

CREATE TABLE IF NOT EXISTS `membres` (
  `membre_id` int(11) NOT NULL AUTO_INCREMENT,
  `membre_pseudo` varchar(40) NOT NULL,
  `membre_mdp` varchar(40) NOT NULL,
  `membre_mail` varchar(100) NOT NULL,
  `membre_inscription` date NOT NULL,
  `membre_avatar` varchar(255) NOT NULL DEFAULT 'profilpardefaut.jpg',
  `membre_derniere_visite` int(11) NOT NULL,
  `membre_banni` int(11) NOT NULL DEFAULT '0',
  `membre_rang` tinyint(4) NOT NULL DEFAULT '2',
  `membre_post` tinyint(4) NOT NULL,
  PRIMARY KEY (`membre_id`),
  UNIQUE KEY `membre_pseudo` (`membre_pseudo`,`membre_mail`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='Inscription des membres, infos etc...' AUTO_INCREMENT=17 ;


-- Structure de la table `infos_membre`
--

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


-- Structure de la table `rs_membre`
--

CREATE TABLE IF NOT EXISTS `rs_membre` (
  `rs_membre_id` int(11) NOT NULL AUTO_INCREMENT,
  `membre_facebook` text NOT NULL,
  `membre_twitter` text NOT NULL,
  `membre_tumblr` text NOT NULL,
  `membre_flickr` text NOT NULL,
  `membre_pinterest` text NOT NULL,
  `membre_googleplus` text NOT NULL,
  `membre_fotolog` text NOT NULL,
  PRIMARY KEY (`rs_membre_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='Réseaux Sociaux des membres' AUTO_INCREMENT=16 ;


Merci encore pour toutes ses explications ^^.
Ton erreur vient du fait que tu essaies d'insérer un id particulier (dans ce cas précis, l'id "12") alors que ton champ est en auto increment, donc il va déterminer de lui même la valeur. Retire le champ correspondant à l'id dans ta/tes requêtes d'insertion, ainsi que le bindValue concernant l'id:
$query3=$bdd->prepare('INSERT INTO rs_membre (membre_facebook, membre_twitter, membre_tumblr, membre_fotolog, membre_pinterest, membre_googleplus, membre_flickr[b], rs_membre_id[/b]) VALUES (:facebook,:twitter,:tumblr,:fotolog,:pinterest,:googleplus,:flickr[b],:id[/b])');

(supprime les trucs en gras)
Ah attends, en fait j'avais pas vu:
Tu dois mettre l'auto increment uniquement sur membre_id dans la table membres.
Ensuite, quand tu insères dans les autres tables, tu laisses comme tu as fait (en précisant l'id). Donc ta query3 était bonne en fait! Par contre la query qui insère dans la table membres ne doit pas avoir d'id
Re,
J'ai donc retiré l'auto incrément dans infos_membre > i_membre_id
et également pour rs_membre > rs_membre_id
( ces deux champs d'id des tables ne sont plus qu'en PRIMARY )

j'ai également supprimé =:id et le bindvalue qui correspondait à l'id pour toutes les requêtes 'query' donc requête de modification ( effectivement je n'y avait pas pensé Smiley ohwell si c'est une requête de modification l'id restera le même =) merci encore xD )

L'erreur cible toujours la même ligne 295 mais est différente Smiley ohwell


Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'rs_membre_id' cannot be null' in /home/croba286/public_html/modifier.php:295 Stack trace: #0 /home/croba286/public_html/modifier.php(295): PDOStatement->execute() #1 /home/croba286/public_html/voirprofil.php(37): include('/home/croba286/...') #2 {main} thrown in /home/croba286/public_html/modifier.php on line 295


Si j'ai bien compris l'erreur, mon champs rs_membre_id est conté comme nul Smiley ohwell ?

Voici mon code actuelle de mes requêtes de modification :


$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');
        $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->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');
        $query->bindValue(':mdp',$pass,PDO: [langue]ARAM_STR);
        $query->bindValue(':mail',$email,PDO: [langue]ARAM_STR);
	    $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');
        $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->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');
        $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->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>';
    }
}
?>
Oui tu as bien compris ton erreur, rs_membre_id est compté comme null. Maintenant, pourquoi? Si tu reprends ton code:
		$query3=$bdd->prepare('INSERT INTO rs_membre (membre_facebook, membre_twitter, membre_tumblr, membre_fotolog, membre_pinterest, membre_googleplus, membre_flickr, [b]rs_membre_id[/b]) VALUES (:facebook,:twitter,:tumblr,:fotolog,:pinterest,:googleplus,:flickr,[b]:id[/b])');
	    $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);
		[b]$query3->bindValue(':id',$id,PDO:: PARAM_INT);[/b]
		$query3->execute();
		$query3->CloseCursor();

Tu peux voir que tu as assigné à ton champ rs_membre_id le contenu de :id. Mais tu peux voir aussi que tu as fait un bindValue de :id avec $id. Et là... si tu regardes ton code source, à aucun moment tu ne fais de $id=une valeur.
Je pense que c'est un oubli de modification, en fait tu devrais mettre:
$query3->bindValue(':id',$rs_membre_id,PDO:: PARAM_INT);

dans ce cas, $rs_membre_id existe bien, puisque tu l'as initialisé au début (2e ligne)

Pareil pour ta query2, ou tu devras bind :id avec i_membre_id.

Ensuite, la suppression du :id, c'était pour la requete INSERT INTO de la table membres, car son champ est en auto-increment. Pour les autres, il faut le laisser. Tu l'as bien laissé dans les autres INSERT INTO des deux autres tables, mais il faut aussi le laisser dans toutes tes requetes UPDATE:
UPDATE machin SET truc = bidule WHERE m.membre_id = :id

en n'oubliant pas de bind une valeur à :id
Modifié par GroquikMLV (11 Jul 2013 - 16:49)
Re,
Merci Smiley lol j'avoue ne pas avoir pensé à ça ^^', ( $id , $i_membre_id , $rs_membre_id )

Par contre quand tu parle de ma requête insert pour la table membres Smiley ohwell tu parle de la premiere requête de modification général ^^' ? car seul sur ma page inscriptionvalide.php figure une requête d'insertion dans ma table membres Smiley ohwell .

Je doit donc rajouté les Bindvalue mais par exemple pour une requête de modification qui regroupe 2 table
je devrais donc écrire le code de la manière suivante ?

$query3->bindValue(':id',$id,$i_membre_id,PDO:: PARAM_INT);
ou
$query2->bindValue(':id',$id,$rs_membre_id,PDO:: PARAM_INT);

et pour 3 par exemple : 
$query->bindValue(':id',$id,$rs_membre_id,$rs_membre_id,PDO:: PARAM_INT);


Merci encore pour ton temps ^^.
Modifié par Reverb (11 Jul 2013 - 20:42)
Je parlais de celle-ci:
$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)');

Tu dois enlever rs_membre_id (juste après membre_flickr) et sa valeur associée :id.

Pour une requete qui regroupe plusieurs table, un seul id suffit, puisque tu fais les jointures sur les id. Par exemple, si tu fais ceci (exemple purement imaginé):
select m.nom, m.prenom, i.date_naissance, rs.facebook FROM membres m INNER JOIN infos_membres i ON m.membre_id = i.i_membre_id INNER JOIN rs_membres rs ON m.membre_id = rs.rs_membre_id WHERE m.membre_id = :id

tu vois bien que les tables sont jointes grace au champ membre_id de la table membres. Du coup, il faut juste que tu fournisse une valeur pour ce champ, par exemple:
$query->bindValue(':id',$ta_valeur_correspondant_a_l_id,PDO:: PARAM_INT);

Une seule valeur ne peut être affectée qu'à une variable dans un bindValue, donc
$query3->bindValue(':id',$id,$i_membre_id,PDO:: PARAM_INT);
ou
$query2->bindValue(':id',$id,$rs_membre_id,PDO:: PARAM_INT);
ou
$query->bindValue(':id',$id,$rs_membre_id,$rs_membre_id,PDO:: PARAM_INT); 

sont des affectations qui ne fonctionneront pas Smiley smile
Modifié par GroquikMLV (11 Jul 2013 - 21:22)
Re,
J'ai essayer d'appliquer ce que tu ma conseillé,
mais cette fois-ci je pense avoir du mal à comprendre Smiley ohwell ,

Si dans ma requêtes d'insertion pour la table 'rs_membre' je supprime l'insertion de l'id,
comment l'id sera t'il inséré ?

Ensuite, ce que je ne comprend pas non plus Smiley ohwell c'est pourquoi faire cette action pour la table rs_membre et ne pas réaliser la même pour la table infos_membre Smiley ohwell ?

Ne faudrait-il pas justement inséré l'id dans les requêtes INSERT et ne pas les ajouter dans les requêtes UPTADE ?
Si j'ai bien suivi ^^, une fois après inséré une première infos dans une table,( par exemple la table 'membres' qui contient les informations d'inscription ) l'id n'as pas besoin d'être modifié, puisqu'il est attitré au membre inscrit ( par exemple : Jean sera toujours égal à l'id 6, dans toutes les autres tables le mêmes id y figura est n'aura donc pas besoin d'être modifié ?

Désolé si je suis un peu à la masse ^^' j'aimerais tout comprendre pour ne plus reproduire les mêmes erreurs par la suite Smiley lol ,

Merci encore pour ton aide et le temps que tu me consacre groquikMLV Smiley smile ,
Sincèrement.
Bon, je vais essayer de tout résumer, mais c'est normal que tu aies un peu de mal, ce n'est pas facile à comprendre, et parfois des points qui peuvent me sembler compréhensible ne le sont pas forcément pour quelqu'un qui a moins d'expérience dans le domaine.

Donc quand tu as un champ en auto increment dans une table, il s'incrémentera automatiquement à l'insertion suivante. Dans ce cas, pas besoin de préciser l'id dans la requete INSERT INTO, ce sera fait automatiquement. Si le dernier membre avait le numéro 8, automatiquement le prochain aura le numéro 9: INSERT INTO membres (nom, prenom) VALUES(:nom, Smiley langue renom) -----> Comme tu peux le voir, je ne précise pas membre_id dans la première parenthèse, et je ne donne pas non plus de valeur d'id dans la deuxième.

Dans une table où le champ n'est pas en auto increment, c'est à toi de préciser l'id. Par exemple, tu veux insérer les infos de réseaux sociaux de Paul, qui a l'id 11: INSERT INTO rs_membres (rs_membre_id, facebook) VALUES (:id, :facebook), et tu feras un bindValue où tu affectera la valeur 11 à :id.

Dans une table UPDATE, il faut toujours mettre l'id dans la condition WHERE. Pourquoi? Si tu veux par exemple changer un mot de passe pour une personne (Paul, qui a l'id 11), mais que tu ne mets pas de condition:
UPDATE membres SET mdp=:mdp

dans ce cas, TOUS les mots de passe de ta table auront la valeur que tu auras attribué. En vrai, il faudrait faire:
UPDATE membres SET mdp=:mdp WHERE membre_id=:id

Bon, en vrai tu peux très bien faire un update pour tous les gens qui s'appellent Paul, dans ce cas ta condition ne sera pas sur l'id mais sur le prenom (UPDATE ...... WHERE prenom=:prenom), mais quand tu travailles sur une seule personne, c'est mieux de bosser avec son id.

J'ai été clair?
Donc dans ton cas, si je résume (dis moi si je me trompe):
- l'utilisateur s'inscrit pour la 1ere fois, il donne son nom, son prenom, etc (les infos de la table membres si je comprends bien). Dans ce cas, requete INSERT INTO sur la table membres, et tu ne fournis pas d'id dans la requete (généré automatiquement)
- l'utilisateur modifie ses infos, et il ajoute aussi son facebook ----> toi tu récupères son id dans membres (SELECT membre_id FROM membres WHERE email=:email). Admettons que ça te renvoie l'id 11.
- tu insères les nouvelles infos concernant facebook ----> INSERT INTO rs_membre (rs_membre_id, facebook) VALUES (:id, :facebook), et tu fais un bindValue où tu donne la valeur 11 à :id. Comme tu peux le voir, dans ce cas, on précise l'id, car le champ n'est pas auto increment.
- plus tard, le facebook du mec change. Il met à jour son info concernant facebook. Toi, tu veux modifier le facebook uniquement pour lui, pas pour tout le monde, et tu sais qu'il a l'id 11 ------> UPDATE rs_membres SET facebook=:facebook WHERE rs_membre_id=:id (et tu n'oublies pas de faire bindValue entre :id et la valeur 11)

Je sais pas si j'ai été clair, dis moi si il y a une notion que tu ne comprends pas.
Bonjour groquikMLV =),
Ouiii !! j'ai compris tes explications Smiley lol ( est-tu enseignant dans la vie général xD ? ) je met tout ça en application et je te tiens au courant Smiley smile , merciiiii encore !!!
Re,
C'est bon !! donc les :id et $id, ou $i_membre_id, $rs_membre_id doivent figuré dans toutes les requêtes de modification, et j'ai dû rajouter devant les définissions de ces 2 variables
$rs_membre_id
$i_membre_id
>
$i_membre_id = ($_SESSION['i_membre_id'])==($_SESSION['membre_id']);
$rs_membre_id = ($_SESSION['rs_membre_id'])==($_SESSION['membre_id']);,

Maintenant dans la page modification, les informations ce modifie sans problème dans les tables, sauf que xD,
les informations rempli ne s'affiche pas sur la page de modification Smiley ohwell ( sauf la table membres qui possède toutes les infos de base qui affiche bien le mdp cripté, l'avatar, le pseudo avec la date d'inscription etc ) je crois qu'il faut obligatoirement que toutes les informations d'une de mes tables soit rempli pour qu'elle puisse s'afficher, si il en manque la moitié, aucune informations déjà informé ne d'affichera Smiley decu y'a t'il une solution ? à part séparé requête par requête de chaque champs de chaque table xD

Du coup concernant l'affichage des informations de la page consulter.php c'est le même problème, si des infos manque parmi une table, celle-ci n'en affichera aucune Smiley ohwell .
Non non, je ne suis pas enseignant, je sors tout juste de la fac ^^ Mon premier job fait que je suis amené à développer en java/j2e, mais je reste attaché aux technos web pour divers projets persos, et donc j'essaie de suivre régulièrement l'évolution de celles-ci.

Concernant ton problème, peux tu me fournir un exemple concret de tes tables? Par exemple le contenu de la table membre pour une seule personne (remplace ses vraies infos par des infos imaginaires, naturellement), avec le contenu de la table rs_membres et infos_membre? Ou alors un petit schema/screenshot?

Un truc du genre:
TABLE MEMBRES:
id | nom | prenom |ville
3 | Martin | Xavier | Lille

TABLE RS_MEMBRES:
rs_membre_id | facebook | twitter
3 | facebook.com/xavmartin | twitter.com/xavmartin

TABLE INFOS_MEMBRES:
etc.


En gros, un truc où je peux voir pour une seule personne tout ce qui la concerne dans les différentes tables, pour tous les champs (même si certains champs sont vides, affiche quand même leur nom)
Re ( ok =) cela explique ton haut niveau xD )
J'ai pris des captures d'écran je pense que ça sera plus simple xD

voici la capture ecran de la table : "membres" ( les infos obligatoire d'inscription, normalement la dessus pas de problème )

upload/50351-screenshot.jpg

ensuite ma table "infos_membre"



et pour finir ma table "rs_membre" ( je me suis aperçu que l'ajout ou la modification ne fonctionnai plus après les dernières modification faite... Smiley decu )

upload/50351-screenshot.PNG

voici à quoi ressemble le site vu de la page modification du profil ( test )

upload/50351-screenshot.PNG" alt="upload/50351-Capturemod.jpgupload/50351-screenshot.PNGupload/50351-screenshot.PNG" /> upload/50351-screenshot.PNG
Modifié par Reverb (13 Jul 2013 - 13:14)
Salut à toi,
je n'arrive pas à mettre les captures écran dans le bonne ordre ^^'

Ma table:

> membres ( avant le _ = membre "membre_id, membre_mdp, etc" )

_id | _pseudo | _mdp | _mail| _inscription | _avatar | _derniere_visite |_banni | _rang | _post
--------------------------------------------------------------------------------------------
12 | crocro | **** | email | 11-05-2013 | img.jpg| 0 | 0 | 2 | 0

> infos_membre ( seul l'id est de la manière suivante:i_membre_id, sinon même principe _ )

_id | _nom | _prenom | _naissance | _siteweb | _localisation | _signature | _biographie | _profession
--------------------------------------------------------------------------------------------------
12 | dupon | john | 00-00-1990 | www.com| France | blablabla | blablabla | blablabla

> rs_membre ( seul l'id est écrit de la manière suivante : rs_membre_id sinon membre_ )

_id | _facebook | _twitter | _tumblr | _flickr | _pinterest | _googlesplus | _fotolog
--------------------------------------------------------------------------------------------------
12 | facebook | ( vide ) | ( vide ) | flickr | ( vide ) | google | (vide )


Voilà Smiley ohwell j’espère que c'est compréhensible ^^'
aucune des deux tables ne s'insère ou se modifie Smiley decu ,

Merci encore pour ton aide.
Modifié par Reverb (15 Jul 2013 - 14:46)
Bonsoir,
Désolé pour le retard, j'ai de gros problèmes avec ma connexion internet en ce moment, qui devraient je l'espère être réglés dans les jours à venir... Du coup, je ne peux pas venir voir tes messages tous les jours.

Donc là on a les infos de la table. Maintenant, tu dis que c'est au moment où tu affiches les infos que ça ne marche pas. Peux-tu donc me donner la ou les requête(s) SELECT que tu as fait pour pouvoir récupérer ces infos? Et peux-tu aussi donner la dernière version de ton code qui affiche ces infos (tous les echo $data['nom'] et compagnie quoi ^^)

A+ Smiley smile
Salut à toi =),

GroquikMLV a écrit :
Bonsoir,
Désolé pour le retard, j'ai de gros problèmes avec ma connexion internet en ce moment, qui devraient je l'espère être réglés dans les jours à venir... Du coup, je ne peux pas venir voir tes messages tous les jours.


( pas de soucis ^^ déjà je trouve ça très respectueux de ta part de prendre tout ce temps que tu me consacre pour avancé dans mes projets, sincèrement ^^, j’espère que tes problèmes de connexion seront vite résolu Smiley cligne . )

Concernant mes requêtes d'insertions et de modification pour la table "infos_membre" et "rs_membre" ne fonctionne toujours pas Smiley ohwell , Lorsque je suis sur ma ( en tant qu'internaute ) que j'accède à la modification du profil, et que j'effectue la modification, tout les messages de validation s'affiche( La modification de votre profil à été effectué avec succès etc... )
aucune erreur indexé par php ne s'affiche Smiley ohwell , et pourtant la modification ou l'insertion d'information ne s'effectue pas pour ma table "infos_membre" et "rs_membre" Smiley decu .

voici mes requêtes de modification mis à jour :


$i_membre_id = ($_SESSION['i_membre_id'])==($_SESSION['membre_id']);
$rs_membre_id = ($_SESSION['rs_membre_id'])==($_SESSION['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',$rs_membre_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',$i_membre_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',$rs_membre_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',$i_membre_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>';
    }
}
?>


ensuite concernant l'affichage des informations dans ma page modification du profil,
-quand les informations d'une table n'est pas totalement rempli, aucune infos ne s'affichent.

Voici mon formulaire de modification avec les codes qui affichent les infos (tous les echo $data)


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: [langue]ARAM_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: [langue]ARAM_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: [langue]ARAM_INT);
        $query3->execute();
        $data3 = $query3->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="' . $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><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="' . $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();


Merci encore groquikMLV Smiley ravi

ps : j'ai effectuer une modification qui permet la modification des tables rs_membre et infos_membre mais pas l'insertions Smiley ohwell .
j'ai modifier :

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


par

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

Modifié par Reverb (16 Jul 2013 - 14:02)
Pour la page des infos qui ne s'affichent pas, rajoute les closeCursor() après chaque requête exécutée, j'ai lu que si on ne le faisait pas, parfois ça peut renvoyer des résultats vides (me demande pas pourquoi, j'en sais rien ^^)

Pour les requêtes d'insertions et de modifications: d'après ce que j'ai compris, tes modifications (UPDATE) fonctionnent, je me suis donc concentré uniquement sur les insertions (INSERT INTO). Je pense avoir trouvé quelque chose:
A chaque fois, tu fais:
else if (empty($i_membre_id) && [b]empty($rs_membre_id)[/b])
{
	
		$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:  Smiley langue ARAM_STR);
        $query3->bindValue(':twitter',$twitter,PDO:  Smiley langue ARAM_STR);
		$query3->bindValue(':tumblr',$tumblr,PDO:  Smiley langue ARAM_STR);
		$query3->bindValue(':fotolog',$fotolog,PDO:  Smiley langue ARAM_STR);
		$query3->bindValue(':googleplus',$googleplus,PDO:  Smiley langue ARAM_STR);
		$query3->bindValue(':pinterest',$pinterest,PDO:  Smiley langue ARAM_STR);
		$query3->bindValue(':flickr',$flickr,PDO:  Smiley langue ARAM_STR);
		$query3->bindValue(':id',[b]$rs_membre_id[/b],PDO:  Smiley langue ARAM_INT);
		$query3->execute();
		$query3->CloseCursor();

Comme tu peux le voir (j'ai surligné en gras), tu fais un if(empty(ton id)), alors tu insères... en passant en paramètre cet id!!! Du coup, quand il fait la requête, il insère les données que tu lui passes, mais pour rs_membre_id, il n'insère rien (puisque la variable est "empty"). A mon avis ton erreur vient de là je pense.
Modifié par GroquikMLV (16 Jul 2013 - 22:04)
Pages :