J'en pense que ca va pas du tout
Là, tu fais autant de requêtes qu'il y a de sujets
Alors que ca peut être fait en une seule requête :
SELECT sujets.titre, sujets.id_sujet, max(messages.date) AS DerniereDate
FROM sujets, messages
WHERE sujets.categorie ='$categorie'
AND sujets.id_sujet = messages.id_sujet
GROUP BY sujets.id_sujet