我将为我的数据库类(数据库中的新项目)执行一个项目。我会用php。这些表是在mysql中创建的。我必须显示一个包含一些信息的网页:
attr1 | atrr2 | atrr3 | atrr4
| | |
| | |
但我想显示最后插入的20行。然后,如果用户想要看到插入的其他行,则网页将有一个下一页按钮,显示以下20行(不是相同的行)。
我知道我可以使用类似的东西:
select (attributes) from tbl ORDER BY 'ID' DESC LIMIT 20
1-然后,我如何检索(使用php编程)其他20行?如果我使用相同的查询,它将显示相同的信息。
2-我想只是查询所有数据并以某种方式存储它,但我不知道即使用户不想看到它也是存储所有数据的好选择。我想把它作为我的第一个问题,因为我必须从数据库中的其他表中检索其他信息。
你有什么建议?我如何在第一个问题中按照自己的意愿检索数据?
答案 0 :(得分:1)
这个概念叫做pagination
。在这 -
1st) LIMIT 20,0 (from 1 to 20)
2nd) LIMT 20,20 (from 21 to 40)
3rd) LIMIT 20,40 (from 41 to 60)
4th) LIMIT 20,60 (from 61 to 80)
它是limit
和offset
的组合。第1,第2,第3 ......是页面,(LIMIT 20,0)是查询的插件,offset
参数来自$_GET
(来自{{1} }})
答案 1 :(得分:1)
我最近在一个项目中做了其中一个。我使用Bootstrap pagination class来设置它的样式:
<div class="pagination" style="text-align:center">
<ul>
<?php
if($firstPage)
{
$relative = "./";
}
else
$relative = "../";
if($page != 1)
{
echo "<li><a href=\"".$relative."page/$page\">«</a></li>";
}
for($i = 1; $i <= ceil($numRows / $numItems); $i++)
{
if($i == $page)
echo "\t<li><a href=\"".$relative."page/$i"."\" style=\"background-color:#e5e5e5;color:#AAAAAA;\"><b>".$i."</b></a></li>";
else
echo "\t<li><a href=\"".$relative."page/$i\">".$i."</a></li>";
}
if(($page+1) <= ceil($numRows / $numItems))
echo "\t<li><a href=\"".$relative."page/".($page+1)."\">»</a></li>";
?>
</ul>
</div>
然后在控制器中,我形成了查询:
$numItems = 20; // Number of results to show per page
$q = "SELECT * FROM --- WHERE ---- = $-----";
$q .= " LIMIT ".(($page_number-1)*$numItems).','.($numItems*($page_number));