[SQL] Lier la récupération d'infos de 2 tables

Lier la récupération d'infos de 2 tables [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 17-10-2008 à 23:51:45    

Bonjour,
 
Je me sers de mon forum pour générer des news sur mon site.
Mon script récupère les topics postés sur un forum donné pour les afficher en tant que news.
 
J'affiche le titre, la date, l'auteur, etc. Pas de problème, je récupère ces infos depuis la table forum_topics
 
Le problème est que je n'arrive pas à afficher le contenu du post, car il se trouve dans une autre table qui contient tout les posts du forum (topics et réponses): forum_posts, dans le champ 'message'.
La table forum_posts comporte également un champ topic_id qui sert à dire dans quel thread se trouve le post.
 
Je suppose que je dois faire une requête qui demande d'afficher le premier post en date du topic_id qui correspond à l'id de la news.
 
 

Code :
  1. $reponse = mysql_query("SELECT * FROM forum_topics WHERE forum_id='21'" );
  2. while ($donnees = mysql_fetch_array($reponse) )


 
Titre, Auteur, date, etc..

Code :
  1. echo $donnees['subject'];
  2. echo $donnees['poster'];
  3. echo $donnees['posted'];


 
J'ai très peu d'expérience en php/sql, alors merci de m'aider :-)


Message édité par dRmm le 18-10-2008 à 00:00:58
Reply

Marsh Posté le 17-10-2008 à 23:51:45   

Reply

Marsh Posté le 18-10-2008 à 03:27:33    

un INNER JOIN entre les 2 tables sur l'identifiant du topic, un ORDER BY sur la date de création du post et un LIMIT pour la première ligne et ça devrait rouler [:jkley]

Reply

Marsh Posté le 18-10-2008 à 14:27:09    

Merci à toi, mais je n'ai aucune idée du code à écrire pour cela. J'ai lu quelques docs là-dessus mais mes bases ne sont pas assez solides. Si quelqu'un peut m'éclairer.

Reply

Marsh Posté le 18-10-2008 à 14:34:27    

tet2neu a écrit :

un INNER JOIN entre les 2 tables sur l'identifiant du topic, un ORDER BY sur la date de création du post et un LIMIT pour la première ligne et ça devrait rouler [:jkley]


En gros ça :
 

Code :
  1. SELECT T.SUBJECT, T.POSTER, T.POSTED, P.MESSAGE
  2. FROM FORUM_TOPICS T INNER JOIN FORUM_POSTS P ON T.TOPIC_ID = P.TOPIC_ID
  3. WHERE P.FORUM_ID = 'x'
  4. ;


Message édité par MEI le 18-10-2008 à 14:49:13

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 18-10-2008 à 14:41:08    

j'aurais plutôt vu une jointure sur TOPIC_ID
 
Et là tu renvoies tous les posts du topic. Il ne faut que le premier si j'ai bien compris. D'où le LIMIT pour ne récupérer que le premier

Reply

Marsh Posté le 18-10-2008 à 14:49:42    

Oups je me suis laissé abusé par le where comme un boulays :D
 
J'ai edit donc. ;)


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 21-10-2008 à 20:55:41    

Merci, on a fini par y arriver avec un peu d'aide.
 
Il reste un autre truc à régler:
 
Le rendu des news ne tient pas compte de la mise en page bbcode (sauts de lignes, balises genre [b][/b].
 
Quelle est la manip pour régler tout ça ? :-)
 
Je pense surtout aux sauts de ligne, qui ne sont indiqués par rien dans l'affichage des posts dans la base.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed