Avatar billede dugi Nybegynder
02. oktober 2004 - 17:32 Der er 5 kommentarer

Kommentar system med (niveau)besvarelses funktion

Hej Eksperter :)

Er løbet ind i et lille problem.
Jeg er ved at lave et kommentar system, hvor man kan besvare de allerede nuværende kommentarer.

Jeg har udarbejdet følgende funktion:

showComments($r[id]);

function showComments($news_id, $comment_id='',$level=0)
{
  $res = mysql_query("SELECT * FROM news_comments WHERE svar='$comment_id' AND tal='$news_id' ORDER BY dato") or die(mysql_error());
  while($row = mysql_fetch_assoc($res)) 
  {
    if($level >= '1')
    { }
    else
    {
      echo "<hr color=#203A49>";
    }

print '<table border=0 height=100% cellspacing="0" cellpadding="0"><tr height=100%>';
for($i=1; $i<$level; $i++) { echo '<td width="15" style="border-right: solid 1px #000000;">&nbsp;</td>'; }


echo '<td><div>';
?>
<table>
<tr><td width="232" align="left"><font face="Tahoma" size="1" color="#203A49"><b>Author</b>: <?php echo $row["navn"]; ?></font></td></tr>
<?php
echo "<tr><td width=232 align=left><font face=Tahoma size=1 color=#203A49><b>IP</b>: $row[ip]</font></td><td width=232 align=right><font face=Tahoma size=1 color=#203A49>";
echo "</font></td></tr>";
}
?>
<tr>
<td width="232" align="left"><font face="Tahoma" size="1" color="#203A49">ID: <b><?php echo $row[pri]; ?></b></font></td><td width="232" align="right"></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<?php

       
        showComments($news_id, $row['pri'],$level+1);
    }
}



Jeg har af en eller anden grund, bygget funktionen sådan op, at hvergang der en som besvarer en kommentar, skal den lave en ekstra td, som så for den besvarende kommentar til at rykke længere ind under den kommentar som man svarede på.

Det vil jeg gerne have gjort sådan at når man besvarer en kommentar til kommentar som _IKKE_ er besvaret endnu, at den laver en td. Hvis så en person besvarer til en allerede besvarede kommentar til den bare ændre i td'ens størrelse i steden for at indsætte en ny.


Har prøvet nogle ting, men kan ikke få det til at virker, da hele systemet er bygget op en funktion.
For jeg tænkte på

$indryk = 10;
while(blabla)
{
  $indryk += 10;
}

Men der gør så selvfølgelig at den hele flytter alt, og det skal den ikke. Den skal kun "redigerer" i en besvarets kommentars længde. Så foreslog en ven så at man bruger en if sætning, men det har jeg ikke lige overskud eller logik i dette sekund til at se.


Så håber der nogen her på sitet, som har en idé eller en metode som de vil dele og hjælpe mig med, for ikke at sige mit humor.

Det må gerne være med eksempler i steden for bare forklaringer, forstår det bedst med et eksempel.

Tusind tusind mange gange tak på forhånd.

Med Venlig Hilsen
Morten Rugaard
Avatar billede dugi Nybegynder
02. oktober 2004 - 17:46 #1
Desuden må i undskylde koden er så "standard" med <font face=""> osv, og måske lidt rodet too.

Men det skulle gå stærkt, og kun en "skabalon" det jeg har her :)
Avatar billede Slettet bruger
02. oktober 2004 - 22:29 #2
vil du lave noget ala xpn.dk?
Avatar billede dugi Nybegynder
03. oktober 2004 - 12:17 #3
ja sådan ca. :)
Avatar billede Slettet bruger
03. oktober 2004 - 19:58 #4
ok, jeg har også tænkt meget over hvordan man gør.. jeg må nok hellere holde øje med denne tråd :P
Avatar billede avminarm Juniormester
04. oktober 2004 - 10:26 #5
denne artikel er vist lige hvad du søger: http://www.devarticles.com/c/a/MySQL/Building-a-Threaded-News-System-With-PHP - den benytter godt nok lister istedet for tabeller
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