0

我正在使用这个 while 语句来显示数据库的所有内容......

$sql = mysql_query("SELECT id,question,date,user,numberofcomments,body,locked FROM questions ORDER BY id DESC");

while($row=mysql_fetch_assoc($sql)) {
    echo '<div class="comment">';
    echo '<div class="leftpart">';
    echo "<div class='date'><img src='../assets/icons/Time-info.png'> ".ago($row['date']);
    echo "</div><br><img src='../assets/icons/User-Info.png'> ".$row['user'];
    echo "<br><img src='../assets/icons/Comments.png'> ".$row[numberofcomments];
    echo '</div>';
    echo '<div class="rightpart-topic">';
    if($row['locked']==1) { echo '<img src="../assets/icons/Lock.png" /> ';
    }
    echo '<a href="topic.php?id='.$row[id].'">'.$row['question'].'</a>';
    echo '<br>'.substr($row['body'],0,70).'...';
    echo '</div>';
    echo '</div>';

}

我只想显示 10 行,然后有显示其余行的链接(如第 1、2、3、4 页中的最后一个类型)。我该怎么做呢?如果您还可以解释您的代码,这将有所帮助,因为我们将不胜感激。它有助于我的学习过程。

谢谢!

4

2 回答 2

0

您需要使用某种传递的 $_GET 变量在查询中执行 LIMIT。

$start=0;
$limit = 10;
$page = (isset($_GET['page']) ? : 0));

$start = $page * $limit;

$sql = mysql_query("SELECT id,question,date,user,numberofcomments,body,locked FROM questions ORDER BY id DESC LIMIT {$start},{$limit}");

应该很不言自明。

如果没有设置页面变量,那么您正在查看页面 0,或者您的数据库查询的前 10 个结果。如果 page = 1,那么您将查看 $page (value=1) * $limit (10) = $start(现在值为 10),这将为您提供结果 10-20 或第 1 页等。

因此,为您的用户提供一个按钮,该按钮可以将他们链接到硬分页链接,或者使用 ajax。

每个网址都需要像这样:

http://wwww.yoursite.com/somepage.php?page=1
于 2013-09-21T00:19:36.247 回答
-1

抛开效率不谈,您可以简单地设置一个计数器并在循环期间检查它的值是否大于 10。如果是这样,向父 div 添加一个“隐藏”类。该类将使用 display:none;

于 2013-09-20T23:43:03.737 回答