Bonjour!
je veux ajouter à mon site la possibilité pour les utilisateurs qui y ont un compte de recevoir des messages et de les lire.
j'ai une table dans ma base de données qui regroupe les messages.
je veux que lorsque l'utilisateur à un nouveau message, que cela lui soit notifié lors de sa connexion et que lorsqu'il clique su le l'objet, il puisse ouvrir le message et que ce message reçoive dans la base de données un statut 'Readed' pour qu'il ne soit plus compté la prochaine fois.
voici la structure de la table et le code pour compter les message non lu
tu as fait la majeure partie du travail. Maintenant, ça dépend fort de ta page. Au chargement de la page après le login, tu charges le code que tu as écrit et soit tu fais un div de notification qui s'affiche, soit tu changes l'image de ton logo "courrier"...
En fait, j'arrive à récupérer les différents éléments des messages. ce qui me bloque c'est comment changer le statut du message en 'Readed' dans la base de données quand l'utilisateur clique sur le lien (le subjet). de plus je souhaite que seul le contenu du message qui est sélectionné s'affiche.
En fait, tu dois le faire en plusieurs fois:
Un select pour récupérer le sujet, l'id et le statut de tes messages pour construire la liste.
Et un select pour récupérer le contenu du message que l'utilisateur aura cliqué suivit d'un update du statut du message.
Il ne faut pas tout récupérer d'un coup dans la première requête, car si l'utilisateur a des milliers de messages, c'est cher pour finalement n'afficher que le sujet.
Donc le premier select devient un truc du genre:
$Query = 'SELECT IDMessage, MsgState, MsgSubject FROM UserMessage WHERE IDUser=\''.$_SESSION['ID'].'\' and MsgState=\'NotReaded\';';
$Rq = mysql_query($Query);
$Cnt = mysql_num_rows(Rq);
il n'y a cas afficher tous les titres de tes messages en lien comme ceci:
[.\GetMessage.php?idMessage=351 Sujet du message]
[.\GetMessage.php?idMessage=358 Sujet du message]
l'utilisateur clique sur l'intitulé du message et on appelle second Select suivit de l'update dans GetMessage.php:
$selectQuery = 'SELECT * FROM UserMessage WHERE IDUser=\''.$_SESSION['ID'].'\' and IDMessage=\''.$_GET["idMessage"].'\';'
$updateQuery = UPDATE UserMessage SET MsgState=\'Readed\' WHERE IDUser=\''.$_SESSION['ID'].'\' and IDMessage=\''.$_GET["idMessage"].'\';'
$result = mysql_query($selectQuery);
C'est peu soigné et fait rapidement comme explication mais bon... ^^
je ne sait pas comment éditer les message. donc je complète mon post précédent:
- dois-je afficher mes liens avec une boucle while? (c'est ce que je faisais)
- comment rendre les idMessage dans les liens dynamique?