Page 1 sur 1

encore un LEFT JOIN

Posté : 26 juil. 2009, 18:33
par graffx
salut a tous, je viens vous poser mon probleme car on ne repond jamais a mes messages sur le sdz.

Voila, j' ai une requete qui fonctionne tres bien pour ma messagerie :
   $requetemp  = mysql_query('SELECT  
   mp_expediteur, mp_receveur, mp_titre,               
   mp_time, mp_text, mp_lu, id, pseudo, avatar,
   localisation, inscrit, post, signature
   FROM mp
   LEFT JOIN connexion ON pseudo = mp_expediteur
   WHERE mp_id = "'.$id_mess.'"');

J' aimeria maintenant améliorer mes forums, et je vosu explique pourquoi.

Mes forums fonctionnent bien, mais il est basique (pseudo, date, titre, message).

J' aimerai donc combiner a nouveau deux tables, celle du forum et celle des membres pour que je puisse afficher plus d' infos par message (avatar, localisation, age, etc).


Le hic est que je me retrouve avec une erreur sql, je comprend pas pourquoi, ensuite j' ai pris exemple sur celle plus haut, pareil.

Deux tables: forum_general et connexion (celle des membres).

J' ai ceci pour seulement le forum et ca fonctionne:

$sql = 'SELECT pseudo,email,date_verif,texte,lect,titre FROM forum_general 
   WHERE id="'.mysql_escape_string($id).'"';

J' ai essayé ceci plus diverses tentatives foireuses, si vous pouviez m' aider parce que la je bute:


$sql = 'SELECT pseudo, email, date_verif, texte, lect, titre, id, pseudo, avatar,  localisation, inscrit, post, signature FROM forum_general 
LEFT JOIN connexion ON pseudo = pseudo_pseudo
   WHERE id="'.mysql_escape_string($id).'"';

A l' aide svp :(

Posté : 26 juil. 2009, 19:11
par niuxe
Hello,
...
requetemp  = mysql_query('SELECT  
   mp_expediteur, mp_receveur, mp_titre,               
   mp_time, mp_text, mp_lu, id, pseudo, avatar,
   localisation, inscrit, post, signature
   FROM mp
   LEFT JOIN connexion ON pseudo = mp_expediteur
   WHERE mp_id = "'.$id_mess.'"');
...
Ta syntaxe est fausse, n'est il pas ? Pour comprendre comment se passe une jointure, je te préconise de lire entres autres, ceci.


++

Posté : 26 juil. 2009, 19:30
par graffx
mais fausse coment ca puisque j' ai utilisé le tuto du sdz sur leur messagerie, et ca, ca fonctionne :o :o


Dis moi juste ce qui te parait faux, parce que ma messagerie fonctionne en tout point comme il faut :cry:


edit: super interessant ton lien,, je vais tout lire de suite, je crosi que c' est un des plus complet que j' ai pu voir, merci

Posté : 26 juil. 2009, 20:26
par niuxe
ceci :
requetemp  = mysql_query('SELECT  
mp_expediteur, mp_receveur, mp_titre,               
mp_time, mp_text, mp_lu, id, pseudo, avatar,
localisation, inscrit, post, signature
FROM mp
LEFT JOIN connexion ON pseudo = mp_expediteur
WHERE mp_id = "'.$id_mess.'"');
serait à remplacer par à peu près cela : ;)
$sql = "SELECT  m.mp_expediteur, m.mp_receveur, m.mp_titre, ";
$sql .= "m.mp_time, m.mp_text, m.mp_lu, ";
$sql .= "c.id, c.pseudo, c.avatar, c.localisation, c.inscrit, c.post, c.signature ";
$sql .= "FROM mp AS m LEFT JOIN connexion AS c ";
$sql .= "ON c.id_connexion = m.id_connexion WHERE m.mp_id = '".$id_mess."'";  // oO

$requetemp  = mysql_query($sql);
*code fait de tête

<<<EDIT
Hum, pourquoi LEFT JOIN ? Es tu sûr de faire le bon choix de jointures ?
EDIT;

++

Posté : 26 juil. 2009, 22:41
par graffx
Heu en effet, j' avais sql. sur ma messagerie, merci de m' avoir guidé, je vais aller lire le tuto et étudier ta solution, je te tiens au courant, merci encore :)