PHP显示多页数据库数据

时间:2013-09-20 23:35:52

标签: php

我正在使用此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页,最后一个类型)。我该怎么做呢?如果您也可以解释您的代码,将会有所帮助,因为我们将非常感激。它有助于我的学习过程。

谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

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