Avatar billede 17196 Nybegynder
29. september 2005 - 00:04 Der er 12 kommentarer og
1 løsning

Ulæste kommentarer med bold

Jeg har en film sektion hvor man kan oprette nye film og stemme og kommentere disse film.
På min forside vil jeg gerne have de kommentarer som den enkelte bruger ikke har læst med fed, og dem der er læst med almindeligt.
Og sorteret efter datoen på kommentaren.

Det skulle gerne være sådan at hvis man går ind og læser filmID xxx, at det så registreres at man har læst samtligte kommentarer under den film. Og går man fra forsiden ind og læser kommentarID 5, at det så også registreres at kommentar 1-4 også er læst.

Det er for indviklet til at jeg med min kendskab til php kan løse det. Håber i kan hjælpe.

Script på forside indtil videre:
<?
$query = mysql_query("SELECT * FROM film_comment ORDER BY id DESC limit 5") or die(mysql_error());
while($r=mysql_fetch_array($query)){
$query2 = mysql_query("SELECT * FROM film_view WHERE(film_ID='$r[filmid]' && comment_ID='$r[commentid]' && author_VIEW='$_COOKIE[username]')") or die(mysql_error());
$num_rows = mysql_num_rows($query2);
?>
<table width="100%"  border="0" cellpadding="0" cellspacing="0" onclick="location.href='movies.php?id_film=<?=$r[filmid]?>&commentid=<?=$r[commentid]?>'" onmouseover="this.style.backgroundColor='#EEEEEE'" onmouseout="this.style.backgroundColor='#FFFFFF'" class="font_blue_hand">
  <tr>
    <td class="font_blue">
<?
if ($num_rows > 0) {
?>
    <?=$r[date]?> | <?=$r[time]?> - <?=substr(htmlspecialchars($r[title]),0,18).((strlen($r[title]) > 18) ? ".." : "")?>
<?
}
if ($num_rows < 1) {
?>
    <b><?=$r[date]?> | <?=$r[time]?> - <?=substr(htmlspecialchars($r[title]),0,18).((strlen($r[title]) > 18) ? ".." : "")?></b>
<?
}
?>    
</td>
  </tr>                                                       
</table>
<?
}
?>

H J Æ L P ! !
Avatar billede Slettet bruger
29. september 2005 - 01:16 #1
Medmindre jeg har misforstået dit spørgsmål, tror du så ikke du kunne udnytte HTMLs evner til at vise klikkede og uklikkede links forskelligt?

Så kunne du slippe for at kode en hel del overflødig PHP.

--
pacroon
Avatar billede 17196 Nybegynder
29. september 2005 - 01:47 #2
Hehe, nej den går ikke!
Avatar billede jakobdo Ekspert
29. september 2005 - 06:48 #3
Du kunne f.eks. lave en helt ny tabel, som udelukkende holder styr på hvem som har læst hvad.

F.eks. readComment

Når en bruger så vil læse om en film eller en kommentar, så skal du gøre det via et link:
read.php?commentId=2

Og så gemmer du brugerens id i en cookie ser jeg?
Disse 2 info gemmer du så i tabellen.

Ved ikke om det var noget i den stil du tænkte på ?
Avatar billede 17196 Nybegynder
29. september 2005 - 08:34 #4
Jo helt sikkert!
Det har jeg faktisk allerede gjort, men har svært ved at se hvordan det skal fungere.
For det skulle jo gerne være sådan at hvis man går ind på f.eks. commentId=3 så skal det også være sådan at commentId 1 og 2 også indsættes.
Og hvis man går på movies.php?filmId=4, så skal det registreres at samtlige kommentarer ved det film id er læst!
Avatar billede jakobdo Ekspert
29. september 2005 - 09:31 #5
Måske at gemme filmid og tidspunkt for sidste besøg på det filmid.
(jeg antager du også gemmer filmid til comments?)
Men så kan man altid se om der er nyere comments efter sidste besøg?
Avatar billede 17196 Nybegynder
29. september 2005 - 09:48 #6
Ja det gør jeg.
Det med at indsætte tidspunkt er måske en mulighed, men jeg har svært ved at overskue hvordat den skal drejes i koden.
Men lad os sige at der er kommet 3 kommentarer til en film, og man har allerede læst 1 og 2, så skulle det jo gerne figurere på forsiden, sådan at det kun er kommentar 3 der er med bold. Vil gerne vise de 5 sidste kommentarer på forsiden, også selvom de er læst.
Avatar billede jakobdo Ekspert
29. september 2005 - 10:22 #7
Du må gerne give mig en side, så jeg kan se en side...
Lige pt kommer du med en masse ønsker, som jeg godt kan lave, men jeg ved slet ikke hvad du har at gøre godt med.
Har du f.eks. en dato på hvornår en comment er fra?
Avatar billede 17196 Nybegynder
29. september 2005 - 10:39 #8
:)
Du kan se det her:
http://www.explosif.dk
På nuværende tidspunkt, viser den bare i menuen til højre de sidste 5 kommentarer. Det er her der gerne skulle vises de 5 sidste kommentarer, hvoraf dem der ikke er læst er bold.

Og ja har både date og time på sidste kommentar.
Avatar billede jakobdo Ekspert
29. september 2005 - 10:58 #9
Det bør være muligt at kode!
Jeg ville gemme info på:
http://www.explosif.dk/movies.php?id_film=52
Så har du en tabel igen, som hed: readCommentFilm
I den gemmer du så:
filmid = 52
bruger = 2
datotid = NOW()

Når bruger så logger ind, så skal du jo tjekke de neyste 5 indlæg om brugeren har læst dem!
Noget i stil med:
if(nytIndlæg(tid) > gammeltidfratabellen-readCommentFilm)
echo "<b>overskrift</b>";
else
echo "overskrift";
Avatar billede 17196 Nybegynder
29. september 2005 - 11:25 #10
Ok, så vil du hver gang brugeren går ind og kigger film id=x indsætte en række med sidste tidspunkt i readCommentFilm, og på den måde holde styr på hvornår han sidst har kigget på kommentarer?
Avatar billede 17196 Nybegynder
29. september 2005 - 12:12 #11
Yubiiiiiiiiiii!
Det fungerer, en million gange tak for hjælpen!
Det er den bedste dag i mit liv! :P
Avatar billede jakobdo Ekspert
29. september 2005 - 12:34 #12
Supert... :o)

Et svar.
Avatar billede jakobdo Ekspert
29. september 2005 - 13:28 #13
Takker for point!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester