我创建了一个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,自动检测可能的下一页或上一页?
我不知道该怎么做。
答案 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
}