Je développe un forum et cherche en ce moment à coder la fonction qui permet à l'utilisateur de distinguer les forums lus de ceux qu'il n'a pas encore lu
J'ai réfléchi et ai trouvé (tout seul comme un grand
* Quand un visiteur visite un forum, on ajoute son id dans un champ f_read de la table forums (pareil pour les sujets)
-> Concrètement, ça donne :
SQL
UPDATE forums
SET f_read = f_read + ', 1'
WHERE f_id = 3
SET f_read = f_read + ', 1'
WHERE f_id = 3
-> Ce qui donnera à terme quelque chose du genre f_read = '123, 54, 1, 2, 48, 87987, 654'
(bien entendu, dès qu'un membre poste dans le forum, je vide ce champ
* Ensuite, pour lister les forums, on fait une condition qui regarde si l'id du membre est dans la liste :
SQL
SELECT [...] CASE WHEN 1 IN (f_read) THEN '1'
ELSE '0'
END AS f_read
ELSE '0'
END AS f_read
... et j'affiche mes belles icones lu / non lu
Seulement voilà, je fais directement appel au champ f_read dans ma requête (avec IN (f_read) ) et MySQL me renvoie toujours 0 même quand mon id est dans le champ
Je pense que c'est parce qu'il interprète mon champ comme du texte (et l'entoure donc avec des guillemets) et non comme une "suite de nombres séparés par des virgules" ...
En effet, la requête suivante marche parfaitement :
SQL
SELECT [...] CASE WHEN 1 IN (123, 54, 1, 2, 48, 87987, 654) THEN '1'
ELSE '0'
END AS f_read
ELSE '0'
END AS f_read
Ce qu'il faudrait, c'est covnertir le contenu du champ en un format de suite que MySQL comprendrait, mais je sèche...
Des idées ?
P.S: Arf, on a pas le droit à assez de smileys dans nos messages : P
Edit : Mes explications me semblent un peu confuses, n'hésitez donc pas à me poser des questions ^ ^
