Pb d'optimisation php/mysql

Pb d'optimisation php/mysql - PHP - Programmation

Marsh Posté le 14-12-2004 à 16:14:25    

Salut tlm  :hello:  
 
je vous explique mon problème : j'ai une table "article" auquelle un certains nombres de commentaires sont reliés... donc j'ai une table "commentaires" qui contient id (l'id du comm), id_art (l'id de l'article commenté), date (au format datetime : YYYY-MM-DD HH:MM:SS).
 
J'enregistre pour chaque membre la dernière visite sur le site au format datetime aussi.
 
Sur mon index.php, j'affiche tous les articles avec un lien : "il y a xx commentaires" pour chaque article.
 
Je voudrais que lorsque un des commentaire de l'article est plus récent que la dernière connexion, le lien soit d'un autre style, donc il faut détecter avec Mysql...
 
Pb : je sais pas comment optimiser mon code et je suis nul en Mysql !
 
Donc je peux essayer de rechercher dans la table 'commentaire' la liste des id_art telle que date > dernière visite, le problème c'est que je sais pas comment dire à Mysql de ne rechercher qu'une seule fois par id_art afin d'éviter de faire des recherches inutiles...
merci !  :hello:

Reply

Marsh Posté le 14-12-2004 à 16:14:25   

Reply

Marsh Posté le 14-12-2004 à 16:33:10    

Hummm à vue de nez :  
 
select id_art, count(id)
from commentaire
where date > date_dernière_visite
group by id_art
 
Et tu utilises la fonction mysql_num_rows() qui te donnera le nombre d'articles.
 
Basiquement, il y a un select count(distinct id_art) avec les mêmes critères, mais bon les select de ce type c'est pas toujours génial niveau perfs.
 
Je suis très moyen en PHP, il y a sans doute une meilleure solution :)


Message édité par Fred999 le 14-12-2004 à 16:34:26
Reply

Marsh Posté le 16-12-2004 à 02:14:20    

J'aurais dit :
 
select distinct(id_art)
from commentaire
where date > date_dernière_visite
 
c la methode la plus simple je pense

Reply

Marsh Posté le 16-12-2004 à 09:49:43    

Qu'est-ce que cela vient faire dans la cat PHP ?  [:kiki]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

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