tout simplement en ajoutant un champ(ex :lu) de type boolean prenant pour valeur 0(pour message non lu) ou 1 (pour message lu). si un utilisateur clique sur "lire le message" alors tu exécute une requête sql qui doit mettre à jour le champ lu.cette mise àjour force ce champ de passer à 1.Voici mon soucis : comment peut on repérer pour un User les messages qu'il n'a pas encore lu ?
<?php
while($row = $bd->fetch() ) {
<div class="lu_<?php echo $row['lu'] ?>">
<h3>sujet </h3>
</div>
<?php } ?>
puis dans un fichier css tu peux mettre en gras les titres des massages non lu
.lu_0 33 {
font-weight:bold;
}
(si tu veux afficher que les messages non lus tu peux filtrer ta requête sql avec la clause where lu=0)
de rien.ah ok... je vois ce que tu veux dire.
donc un champ 'lu' ds la table messages, puis une petite fonction qui me regarde si l'id du membre est dedans (lu) ou pas (non lu), et qui me renvoie true ou false par ex
Adjugé, je vais partir la dessus, et si y'a mieux je m'adapterai o)
merci messieurs pour votre concours
messages-user(
lu boolean,
user_id int,
messages_id);
le type boolean c'est l'équivalent de TINYINT. ce type occupe moins de place mémoire qu'un integer(1) .c'est koi le 33 ?.....bonjour,
puis dans un fichier css tu peux mettre en gras les titres des massages non lu.lu_0 33 { font-weight:bold; }
c'est koi le 33 ?.....bonjour,
puis dans un fichier css tu peux mettre en gras les titres des massages non lu.lu_0 { font-weight:bold; }
.lu_0 {
font-weight:bold;
}
et lorsque qu'un message est rajouté à ce topic (sujet ?) il faut détruite toutes les lignes ayant l'id_topic pour que de nouveau il soit 'à lire' ?Si tu pars sur une table associative il faut créer un enregistrement uniquement quand l'utilisateur lit le topic.
Donc tu peux même dégager le champ booléen de cette table.
encore une fois suis désolé logiquement il faut plutôt insérer l'id du message et l'id de l'utilisateur dans la table user-message(merci XTG ) et non mettre à jour. Dans le cas d'espère l'id de l'utilisateur est connu(stocké en session au moment de de l'authentification) et l'id du message est transmis dans l'url.une fois cette table 'associative' créée... comment doit on la mettre à jour ?
<?php while ($row = $dbh->fetch() ) { ?>
<a href="message-lu.php?message_id=<?php echo $row['message_id']?>"><?php echo $row['sujet'] ?> </a>
<?php } ?>
<?php
//script d'insertion id message et id user
//message-user.php
$dbh = new PDO('mysql:host=localhost;dbname=nom_bd;charset=utf8', 'user', 'password');
$user_id=$_SESSION['user_id'];
if( isset($_GET['message_id']) ){
$stmt = $dbh->prepare("INSERT INTO messages-user VALUES(:user_id, :message_id)");
$stmt->execute(array(':user_id' => $user_id, ':message_id'=> $_GET['message_id']));
}
?
Pour afficher les messages non lus ou lus une simple requête avec jointure sur les tables :user, messages-user et messages.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 49 invités