Problème de requête UPDATE INNER JOIN SET WHERE [Résolu/Fermé]

Signaler
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014
-
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014
-
Bonjour à tous et à toutes,

Je suis confronté à un problème que je n'arrive pas à résoudre :/,
J'ai précédemment créer 3 tables pour stocker les infos des membres de mon site,
la premiere contient toute les infos obligatoire lors de l'inscription
la 2 eme des infos secondaire du membre
et la 3eme les réseaux sociaux du membre

lors de l'inscription l'id du membre s'insère dans ces 3 tables.
Par la suite j'ai rajouter une page modification du profil en ajoutant simplement une requête de modification pour les 3 tables qui sont regroupé en 1 requête UPDATE INNER JOIN,

mais ma requête n'a pas l'air de fonctionner :/ pourtant aucune erreur ne s'affiche et la composition de la requête semble être bonne :/

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


et voici les requêtes avec le formulaire pour modifier :

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

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

        //On prend les infos principale (obligatoire) du membre
		$id=($_SESSION['membre_id']);
        $query = $bdd->prepare('SELECT membre_pseudo, membre_mail, membre_avatar FROM membres WHERE membre_id=:id');
        $query->bindValue(':id', $id, PDO::PARAM_INT);
        $query->execute();
        $data = $query->fetch();
		//On prend les infos secondaire du membre
		$id2=($_SESSION['i_membre_id']);
        $query2 = $bdd->prepare('SELECT membre_nom, membre_prenom, membre_naissance, membre_signature, membre_siteweb, membre_biographie, membre_profession, membre_localisation FROM infos_membre WHERE i_membre_id=:id');
        $query2->bindValue(':id', $id2, PDO::PARAM_INT);
        $query2->execute();
        $data2 = $query2->fetch();
		// On prend les infos réseaux sociaux du membre
		$id3=($_SESSION['rs_membre_id']);
        $query3 = $bdd->prepare('SELECT membre_facebook, membre_twitter, membre_tumblr, membre_flickr, membre_pinterest, membre_fotolog, membre_googleplus FROM rs_membre WHERE rs_membre_id=:id');
        $query3->bindValue(':id', $id3, PDO::PARAM_INT);
        $query3->execute();
        $data3 = $query3->fetch();
        echo '<div id="infosmembre">';
        echo '<p class="textesimplegrisay">' . "Consulter votre : " . '<a href="voirprofil.php?action=consulter">' . "Profil" . '</a>';
        echo '<h1 class="textemoyengrisay">' . "Modification de votre profil" . '</h1>';
        echo '</div>';

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

        <fieldset>
		
		<legend><p class="textesimplegrisay"><b>Identifiants</b></p></legend>
		
        <div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['membre_pseudo']) . '</strong></p></div>
		
		<p class="textesimplegrisay">Vous devez renseigner votre mot de passe pour valider la modification.</p>
		
          <div id="cadrepseu"><p class="classinscr"><label for="mdp">Mot de Passe :</label><input type="password" name="mdp" id="pass" value="' . $data['membre_mdp'] . '" /></p></div>
		  
		  <p class="textesimplegrisay">La confirmation de votre mot de passe est essentiel pour la modification.</p>
		  
        <div id="cadrepseu"><p class="classinscr"><label for="confirm">Confirmer le mot de passe :</label><input type="password" name="confirm" id="confirm" value="' . $data['membre_mdp'] . '"/></p></div>
		
		</fieldset>
		<fieldset>
		
		<legend><p class="textesimplegrisay"><b>Informations secondaire</b></p></legend>
		
		<div id="cadrepseu"><p class="classinscr"><label for="nom">Votre Nom : </label><input type="text" name="nom" id="nom" value="' . $data2['membre_nom'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="prenom">Votre Prenom : </label><input type="text" name="prenom" id="prenom" value="' . $data2['membre_prenom'] . '" /></p></div>
		
		<p class="textesimplegrisay">Votre date de naissance doit figurer de la manière suivante : AAAA-MM-JJ.</p>
		
		<div id="cadrepseu"><p class="classinscr"><label for="naissance">Votre date de naissance : </label><input type="text" name="naissance" id="naissance" value="' . $data2['membre_naissance'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="siteweb">Votre site Web : </label><input type="text" name="siteweb" id="siteweb" value="' . $data2['membre_siteweb'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="localisation">Votre localisation : </label><input type="text" name="localisation" id="localisation" value="' . $data2['membre_localisation'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="signature">Votre signature : </label><input type="text" name="signature" id="signature" value="' . $data2['membre_signature'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="biographie">Votre biographie : </label><input type="text" name="biographie" id="biographie" value="' . $data2['membre_biographie'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="profession">Votre profession : </label><input type="text" name="profession" id="profession" value="' . $data2['membre_profession'] . '" /></p></div>
		
        </fieldset>

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

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

		</fieldset>
		
		<fieldset>
		
		<legend><p class="textesimplegrisay"><b>Réseaux Sociaux</b></p></legend>
		
		<div id="cadrepseu"><p class="classinscr"><label for="facebook">Votre adresse Facebook : </label><input type="text" name="facebook" id="facebook" value="' . $data3['membre_facebook'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="twitter">Votre adresse Twitter : </label><input type="text" name="twitter" id="twitter" value="' . $data3['membre_twitter'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="tumblr">Votre adresse Tumblr : </label><input type="text" name="tumblr" id="tumblr" value="' . $data3['membre_tumblr'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="flickr">Votre adresse Flickr : </label><input type="text" name="flickr" id="flickr" value="' . $data3['membre_flickr'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="pinterest">Votre adresse Pinterest : </label><input type="text" name="pinterest" id="pinterest" value="' . $data3['membre_pinterest'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="googleplus">Votre adresse Google Plus : </label><input type="text" name="googleplus" id="googleplus" value="' . $data3['membre_googleplus'] . '" /></p></div>
		
		<div id="cadrepseu"><p class="classinscr"><label for="fotolog">Votre adresse Fotolog : </label><input type="text" name="fotolog" id="fotolog" value="' . $data3['membre_fotolog'] . '" /></p></div>
		
        </fieldset>
		
        <p class="classinscr"><input type="submit" value="Modifier son profil" />
        <input type="hidden" id="sent" name="sent" value="1" />
        </p></form>';

        echo '</div>';

        $query->CloseCursor();
		$query2->CloseCursor();
		$query3->CloseCursor();
		


Merci pour votre aide et votre attention.

5 réponses

Messages postés
71
Date d'inscription
mardi 30 octobre 2012
Statut
Membre
Dernière intervention
26 juillet 2013

Teste le code sql sur phpmyadmin si tu n'a pas d'erreur sa veut dire que sa vien des code de la page
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014
1
Merci pour ton attention spz91 :),
Mais comment tester mes requêtes sur phpmyadmin :/ en faisant un copier coller avec la commande sql de chacune de mes requêtes ?

Merci pour ton aide.
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
76
Salut !

$reqmod->execute() or die(print_r($reqmod->errorInfo()));
Pour voir les éventuelles erreurs de ta requete ;-)
Messages postés
71
Date d'inscription
mardi 30 octobre 2012
Statut
Membre
Dernière intervention
26 juillet 2013

nn tu le fait une fois en mettant des valeur au azzar si il n'y a pas d'erreur sur phpmyadmin sa veut dire vien pas de mysql
Messages postés
106
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 janvier 2014
1
Bonjours à tous et merci d'avoir porté attention à mon soucis :),
J'ai trouvé l'erreur, une requête UPDATE ne s'effectue sur qu'une table à la fois, un INNER JOIN ne peu pas fonctionner avec un UPDATE ^^,

Ensuite dans mes requêtes de modification j'utilisais 2 définitions d'id ( $id et $id3 ) qui correspondait au même id membre mais qui ne venait pas des mêmes tables, mais étant donné que l'id est identique ^^' j'ai supprimé $id3 et sa définition ne laissant que $id dans les 2 requêtes de modif, et cela fonctionne :).