Avatar billede walkie84 Nybegynder
20. oktober 2010 - 19:19 Der er 8 kommentarer og
1 løsning

Hjælp til kommentar script

Hej,

Jeg har lavet nedenstående kommentar script - har dog brug for lidt hjælp til nogle ekstra features.

Hvordan kan jeg gøre således at når folk trykker på reply, skal den automatisk scrolle ned til bunden hvor formen er og der skal stå: Du besvarer (navn på den man har reply'et til).

Screenshot: http://www.tristram.dk/exp_ss.jpg



<html>
<head>
<script type='text/javascript' src='jquery.pack.js'></script>
<script type='text/javascript'>
$(function(){
    $("a.reply").click(function() {
        var id = $(this).attr("id");
        $("#parent_id").attr("value", id);
        $("#name").focus();
    });
});
</script>
</head>

<body>
<?php

function getComments($row) {
    echo "<li class='comment'>";
    echo "<div class='container'>";
    echo "<div class='top_box'>";
    echo "<div class='aut'>".$row['author']."</div>";
    echo "<div class='timestamp'>".$row['created_at']."</div>";
    echo "</div>";
    echo "<div class='comment-body'>".$row['comment']."</div>";
    echo "<div class='reply'><a href='#comment_form' class='reply' id='".$row['id']."'><img src='reply.png' title='Reply'></a></div>";
    echo "</div>";
    $q = "SELECT * FROM comments WHERE parent_id = ".$row['id']."";
    $r = mysql_query($q);
    if(mysql_num_rows($r)>0)
        {
        echo "<ul>";
        while($row = mysql_fetch_assoc($r)) {
            getComments($row);
        }
        echo "</ul>";
        }
    echo "</li>";
}



$newsid = $_GET[newsid];
?>
<div id='wrapper'>
<ul>
<?php
$q = "SELECT * FROM comments WHERE parent_id = '0' && news_id = '$newsid'";
$r = mysql_query($q);
while($row = mysql_fetch_assoc($r)):
    getComments($row);
endwhile;
?>
</ul>

<form id="comment_form" action="post_comment.php" method='post'>
    <label for="name">Name:</label><br>
    <input type="text" name="name" id='name'/><br>
    <label for="comment_body">Comment:</label><br>
    <textarea name="comment_body" id='comment_body'></textarea>
    <input type='hidden' name='parent_id' id='parent_id' value='0'/>
    <input type='hidden' name='newsid' value='<? echo $newsid; ?>'/>
    <div id='submit_button'>
        <input type="submit" value="Add comment"/>
    </div>
</form>
</div>

</body>
</html>
Avatar billede walkie84 Nybegynder
20. oktober 2010 - 19:29 #1
Jeg har fundet ud af at scrolle til bunden ved at bruge window.scrollTo(0, document.body.scrollHeight);

Sat ind her:

<script type='text/javascript'>
$(function(){
    window.scrollTo(0, document.body.scrollHeight);
    $("a.reply").click(function() {
        var id = $(this).attr("id");
        $("#parent_id").attr("value", id);
        $("#name").focus();
    });
});
</script>

Det virker, så jeg håber at det er gjort korrekt :)

Har nogle en ide om hvordan jeg lige over reply-formen kan få skrevet hvem man laver en reply til?
Avatar billede webweaver Praktikant
21. oktober 2010 - 00:48 #2
En nem måde at "scroll'e" på via ren HTML, kan gøres såldes,


Du har dit reply link et sted....
<a class="text-style" href="#scroll</a>


Og denne indsætter du, hvor du vil scroll'e til.
<a name="scroll"></a>

Hvis du vil vise, hvem der besvares på, skal du have navnet på det indlæg med dig. Har du adgang til den variabel?

En variabel igennem din reply knap. Sådan ville jeg gøre.
Avatar billede walkie84 Nybegynder
21. oktober 2010 - 08:24 #3
Hej Lasse,

Tak for svaret.

Når man trykker på reply, sender den allerede id med:
<a href='#comment_form' class='reply' id='".$row['id']."'>
Navnet på den der besvares på ligger i $row['author'], men hvordan får jeg både det og id med?

Mvh
Morten
Avatar billede webweaver Praktikant
21. oktober 2010 - 09:52 #4
Hej Morten.

Det kan du gøre således,

<a href='http://www.mitSiteHer.dk/minFil.php?author=$row['author']#comment_form' class='reply' id='".$row['id']."'>Mit link er her ...</a>

Og nede ved formen..

<?

if ($author) {

  echo "Du besvarer" . $author;

}

?>
Avatar billede walkie84 Nybegynder
21. oktober 2010 - 10:00 #5
Jeg tror måske jeg har fundet en løsning ved at smide min variabel ind i "name" i linket:
<a href='#comment_form' class='reply' name='".$row['author']."' id='".$row['id']."'><img src='reply.png' width='42px' title='Besvar'></a>

Og så hente den med jquery således:


$(function(){
    $("a.reply").click(function() {
        var id = $(this).attr("id");
        $("#parent_id").attr("value", id);
        var name = $(this).attr("name");
        $("#authorname").attr("value", name);
        $("#name").focus();
    });
});

For så at sætte den ind i input value:

Du besvarer: <input type="text" id="authorname" value="Ingen" DISABLED/>


Jeg ville egentligt helst have det udskrevet som tekst
Avatar billede walkie84 Nybegynder
21. oktober 2010 - 10:00 #6
Hej,

Det kan jeg ikke for så genindlæser den siden, men jeg har fundet ud af det som du kan se herover :)

Tak
Avatar billede webweaver Praktikant
21. oktober 2010 - 10:14 #7
Du kan ikke bare bruge

document.write (authorname); for at vise det på siden?
Avatar billede walkie84 Nybegynder
21. oktober 2010 - 11:08 #8
Nej det virkede ikke.
Men jeg har bare smidt det ind i en disabled textbox, hvilket ser fint nok ud :)
Avatar billede walkie84 Nybegynder
21. oktober 2010 - 11:09 #9
Lukker spørgsmål - tak for dine forsøg Lasse :)
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