2

所以我想用 MySQL 和 PHP 制作一个简单的喊话箱,而且我对这两种语言都足够了解,可以很容易地制作它。我也知道如何限制它一次只显示最后 5-10 条或任何评论。但是,制作它的过程是什么,所以喊话框只显示最后 5 条评论,然后有一个按钮显示“旧评论”,它显示接下来的 5 条,依此类推,然后另一个按钮显示“新评论”它返回一页。我不太确定在不编写大量代码的情况下如何做到这一点。

这是我的喊话框的代码:

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连接信息)

喊话箱.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 排序的五个评论,依此类推。

4

3 回答 3

0

SELECT * FROM 喊话框 ORDER BY id DESC LIMIT OFFSET,LIMIT

在您的情况下,对于较早的评论,您的 OFFSET 将是 0 和 LIMIT 5 THEN OFFSET 5 和 LIMIT 5 THEN OFFSET 10 和 LIMIT 5 SO ON....

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

于 2013-08-20T21:06:22.033 回答
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

于 2013-08-20T20:48:10.003 回答
0

喊话箱.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>

有条件的下一个和上一个:

<?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>
于 2013-08-20T20:49:49.260 回答