分页上一个 - 下一个增量

时间:2015-07-29 09:46:00

标签: php mysql database pagination

我创建了一个php新闻系统,但我有一个问题:

<?php
include('config.php');
if( isset( $_GET["page"]) ) $PAGE=$_GET["page"]; else $PAGE=1;
$query1=mysql_query("select id, name, email , age from addd LIMIT ". (($PAGE * 5) - 5) .",5");

echo "<table><tr><td>Testo</td><td>Nome</td><td>Anni</td></tr>";

function truncate_string($str, $length) {
if (!(strlen($query2['name']) <= $length)) {
    $query2['name'] = substr($query2['name'], 0, strpos($query2['name'], ' ', $length)) . '...';
}

return $query2['name'];
}

while($query2=mysql_fetch_array($query1))
{
$number= $query2['name'];
echo "<tr><td>".substr($query2['name'], 0, 500)."...</td>";
echo "<td>".$query2['email']."</td>";
echo "<td>".$query2['age']."</td>";
echo "<td>".str_word_count($number)."</td>";
echo "<td><a href='edit.php?id=".$query2['id']."'>Mod</a></td>";
echo "<td><a href='delete.php?id=".$query2['id']."' onclick=\"return confirm('Sei sicuro di volerlo eliminare?');\");'>Canc</a></td><tr>";
echo "<td><a href='singletwo.php?id=".$query2['id']."');'>vedi</a></td<tr>";
}
?>

页面遵循以下编号:?page = 1,?page = 2 ecc。

每个页面包含5条新闻。

如何创建自动分页系统?

使用Prev-Next,自动检测可能的下一页或上一页?

我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

首先在变量中包含最大长度和总行数:

<?php
include('config.php');

$max = 5;
$total = mysql_query("select count(*) from addd");
$PAGE = isset($_GET["page"]) ? $_GET["page"] : 1;

$query1 = mysql_query("select id, name, email , age from addd LIMIT " . (($PAGE * $max) - $max) . "," . $max);

这样,您就可以计算出您需要的页数。

以下代码将为您提供页面列表(第1页,第2页,第3页等):

for($i = 0; $i < ceil($total / $max); $i ++)
{
    $p = $i + 1;
    echo '<a href="?page=' . $p . '">Page ' . $p . '</a>';
}

如果您更喜欢上一个和下一个链接,请尝试以下操作:

if($PAGE > 1)
    echo '<a href="?page=' . ($PAGE - 1) . '>Previous</a>';

if(ceil($total / $max) > $PAGE)
    echo '<a href="?page=' . ($PAGE + 1) . '>Next</a>';

答案 1 :(得分:1)

你能做的是:

$currentPage = isset($_GET['page']) ? $_GET['page'] : 1;
$limit = $currentPage*5;
$offset = $offset-5;

现在您已拥有这些数字,您可以在查询中使用它们:

$stmt = "SELECT
...
FROM news
LIMIT ".$offset.", ".$limit.";

这样您就可以获得所需的记录。至于下一个和上一个按钮:

if ($currentPage > 1) {
    // Show previous button
}

对于下一个按钮,您需要执行另一个查询:

$stmt = "SELECT COUNT(*) as total FROM news";
$result = $pdo->fetch();
$totalRows = $result['total'];

if ($currentPage < round($totalRows/5)) {
    // Show next button
}