Bonjour,

j'ai cherché sur le forum et je n'ai pas trouver ma reponse,
je souhaiterais Récupérer les 20 derniers commentaires de chaque article.

je vous montre ma requête actuel :

$User_Comms_Query = mysql_query('SELECT u.*,c.* from commentaires c INNER JOIN utilisateur u ON c.id_user = u.id WHERE c.id_article in (2,5,7,9) ORDER BY c.id LIMIT 20 ');

traduction : Je recupere TOUS l'utilisateur et commentaire associer au commentaire qui on pour commun l'ID d'utilisateur où c.id_article est egale a 2 ou 5 ou 7 ou 9 TRIE par id LIMITE a 20.

Mais il me recupere que 20 derniers commentaire et non pas 20 de chaque (soit maxi 80 commentaire). :/

Maintenant, je vous montre se que j'ai essayé :

$User_Comms_Query = mysql_query('SELECT u.*,c.* from commentaires c INNER JOIN utilisateur u ON c.id_user = u.id WHERE (c.id_article="2" ORDER BY c.id LIMIT 20) or (c.id_article="5" ORDER BY c.id LIMIT 20) or (c.id_article="7" ORDER BY c.id LIMIT 20) or (c.id_article="9" ORDER BY c.id LIMIT 20) ');

mais sa ne marche pas (je m'en doutais un peu :/)

alors je suis bloqué.

ps: il y aurais une astuce avec double JOIN ?

5 réponses


kaloutch
Auteur
Réponse acceptée

bon ba ne sachant pas faire des FONCTION MYSQL , j'ai trouver par magie une autre solution !

du coup j'utilise JAVA pour mes commentaires : quand je clic il vas chercher les 20 derniers commentaires de cette article

si vous voulez plus de détail , envoyer un message sur mon poste . bye

Hello :)

Alors, là, pour ton soucis, pas 36 solutions et va falloir devenir un expert Mysql :)

Non je déconne... là comme ça, la première idée qui me vient est la suivante :

tu créés une procédure stockée sous Mysql qui :

  • Liste tes articles
  • A partir du résultat, tu fais une boucle qui fait un select top 20 sur ta table avec un where id = [données de la précédente requête]

Là, tu devrais avoir une liste complête avec ton ID article et les 20 ID commentaires.

Bon... là, je vais pas pouvoir te faire un exemple clair... mais au moins as tu saisi ce que je voulais dire ?

VOIR ICI POUR PLUS D'INFOS : Bonne lecture :)

kaloutch
Auteur

j'ai penser a sa déjà mais le hic c'est que j'ai déjà beaucoup de requête sur ma page (dizaines). et si j'ai 50 article sa fais 50 requête SELECT et je suis pas sur que ce sois très bon d'avoir trop de requête.

Hello :)

La problématique, c'est plus tu vas avoir d'infos, plus ça va prendre de ressources.

L'avantage de la procédure stockée c'est que la requête est précompilée sur le serveur, un gain de performance comparativement à une boucle for en php avec 1 requête SQL inside.

Au mieux, tu utilises un système de cache comme il a été expliqué dans les tutos.. une fois par heure tu refresh ton accueil... simple et efficace aussi :)

kaloutch
Auteur

je vais utiliser les procédures mais je n'y connais rien encore.
je vais peut etre poser des questions "con" mais on écrit la procédure dans le fichier php ? ou mysql(dans phpmyadmin)?