“下一评论”按钮

时间:2013-08-20 20:38:47

标签: php mysql database select

所以我想用MySQL和PHP制作一个简单的shoutbox,我知道这两种语言都足够容易。另外我知道如何限制它只显示最后5-10或一次任何评论。然而,制作它的过程是什么,所以shoutbox只显示最后5条评论,然后有一个按钮显示“旧评论”,它显示下一个5等等,然后另一个按钮显示“较新评论”它会回到页面。如果不编写大量代码,我不太清楚如何做到这一点。

以下是我的shoutbox代码:

addmessage.php

<?php
include("config.php");
if ($_POST['shoutname'] and $_POST['shout'] !== " ") {
    if (isset($_POST['shoutname'])) {
        $shoutname = mysql_real_escape_string($_POST['shoutname']);
        $shout = mysql_real_escape_string($_POST['shout']);
        mysql_query("INSERT INTO shoutbox (name, shout) VALUES ('$shoutname','$shout')");
        mysql_close($bd);
    }
}

header("Location: shoutbox.php");
?>

(config.php包含我的mysql连接信息)

shoutbox.php

<?php
include("config.php");
$data = mysql_query("SELECT * FROM shoutbox ORDER BY id DESC LIMIT 5");
    while ($info = mysql_fetch_array($data)) {
        echo $info['name']. "<br>";
        echo $info['shout']. "<br>";
    }
?>
<form method="post" action="addmessage.php">
Name: <input type="text" name="shoutname" /><br />
Message: <input type="text" name="shout" />
<input type="submit" />
</form>

我只是不确定如何制作一个按钮,显示下一个按ID排序的五条评论,依此类推。

3 个答案:

答案 0 :(得分:0)

您可以通过在mysql查询中插入偏移量来获取前5条消息旁边的消息。它看起来像这样:

SELECT * FROM shoutbox ORDER BY id DESC LIMIT [OFFSET],[LIMIT]

您可以将偏移量作为已在shoutbox.php文件中自动生成的请求参数发布。

另请参阅:http://dev.mysql.com/doc/refman/5.0/en/select.html

答案 1 :(得分:0)

<强> shoutbox.php

<?php
include("config.php");
$page = (isset($_GET['page'])?$_GET['page']:1);
$start = ($page * 5) - 5;
$data = mysql_query("SELECT * FROM shoutbox ORDER BY id DESC LIMIT ".$start.",5");
    while ($info = mysql_fetch_array($data)) {
        echo $info['name']. "<br>";
        echo $info['shout']. "<br>";
    }
?>
<a href="shoutbox.php?page=<?php echo $page+1;?>">Next 5 messages</a>
<form method="post" action="addmessage.php">
Name: <input type="text" name="shoutname" /><br />
Message: <input type="text" name="shout" />
<input type="submit" />
</form>

有条件的下一个&amp;上一个:

<?php
include("config.php");
$page = (isset($_GET['page'])?$_GET['page']:1);
$start = ($page * 5) - 5;
$data = mysql_query("SELECT * FROM shoutbox ORDER BY id DESC LIMIT ".$start.",5");
    while ($info = mysql_fetch_array($data)) {
        echo $info['name']. "<br>";
        echo $info['shout']. "<br>";
    }
    $q = mysql_query("SELECT count(id) AS count FROM shoutbox");
    $count = mysql_fetch_assoc($q);
    $count = $count['count'];
    if($start + 5 < $count)
        echo '<a href="shoutbox.php?page='. ($page+1) .'">Next 5 messages</a>';
    if($count > 0 && $start>0)
        echo '<a href="shoutbox.php?page='. ($page-1) .'">Previous 5 messages</a>';
?>
<form method="post" action="addmessage.php">
Name: <input type="text" name="shoutname" /><br />
Message: <input type="text" name="shout" />
<input type="submit" />
</form>

答案 2 :(得分:0)

SELECT * FROM shoutbox ORDER BY id DESC LIMIT OFFSET,LIMIT

在您的情况下,对于较早的评论,您的OFFSET首次为0且限制为5 然后 OFFSET 5和LIMIT 5 然后 OFFSET 10和LIMIT 5 所以.......

对于较新的评论以相反的顺序运行