如何为现有代码添加分页?
How to add pagination to existing code?
我通过列出数据库中的一些项目来完成我的代码,但现在我必须对它们进行分页,因为这会使页面过载。所以这是我的部分代码
<!--elements to display-->
<form method="get" action="?">
<div class="underlineInput">
<span>Display</span>
<select class="pageSelect" name="per_page" onchange="this.form.submit()">
<option>25</option>
<option>50</option>
<option>100</option>
<option>500</option>
<option>all</option>
</select>
<span> items per page</span>
</div>
</form>
</div>
</div>
<!--table-->
<table class="table">
<thead>
<tr>
<th>
<div class="handle" style="border-color:#0fb175;"></div>
<div class="thContent"> <a href="" class="">ID</a></div>
</th>
<th>
<div class="handle" style="border-color:#b10f46;"></div>
<div class="thContent"> <a href="" class="">Username</a></div>
</th>
<th>
<div class="handle" style="border-color:#0fb175;"></div>
<div class="thContent"> <a href="" class="">Cod</a></div>
</th>
<th>
<div class="handle" style="border-color:#0f53b1;"></div>
<div class="thContent"> <a href="" class="">Email</a></div>
</th>
<th>
<div class="handle" style="border-color:#0fb175;"></div>
<div class="thContent"> <a href="" class="">Roles</a></div>
</th>
<th>
<div class="handle" style="border-color:#0fb175;"></div>
<div class="thContent"> <a href="" class="">Activated</a></div>
</th>
<th class="underlineInput">
<div class="handle" style="border-color:#cfb01d;"></div>
<div class="thContent">Actiuni</div>
</th>
</tr>
</thead>
<tbody>
<form id="delete_alll" method="post">
<?php
$sql = "SELECT * FROM `admins` WHERE `username` = '".$_SESSION['logged_in']."'";
$adimin_logat = mysqli_query($db_connect, $sql);
$row = mysqli_fetch_assoc($adimin_logat);
//afisteaza rolurile mai mare decat admin care e 1 in functie de userul logat
$sql = "SELECT * FROM `admins` WHERE `roles` > ".$row['roles']." ";
if(isset($_POST['search_user'])){
$sql="SELECT * FROM `admins` WHERE `roles` > ".$row['roles']." AND `username` = '".$_POST['srch_usr']."'";
}
$connect = mysqli_query($db_connect, $sql);
$counter = 0;
if(isset($_GET['per_page'])){
$resultPerPage = $_GET['per_page'];
}
else{
$resultPerPage = 6;
}
$count = 0;
while (($item = mysqli_fetch_array($connect)))
{
if ($counter % 2) {
$bgcolor = '#D3D3D3';
} else {
$bgcolor = '#A8A8A8';
}
$counter++;
$count++;
?>
<tr>
<td bgcolor="<?= $bgcolor ?>" ><input type="checkbox" name="check_dell_all[]" value="<?= $item['id'] ?>" /><?= $item['id'] ?></td>
<td bgcolor="<?= $bgcolor ?>" ><?= $item['username'] ?></td>
<td bgcolor="<?= $bgcolor ?>"><?= $item['code'] ?></td>
<td bgcolor="<?= $bgcolor ?>"><?= $item['email'] ?></td>
<td bgcolor="<?= $bgcolor ?>"><?php
if ($item['roles'] == 0)
{
echo "Root";
}
if ($item['roles'] == 1)
{
echo "Admin";
}
if ($item['roles'] == 2)
{
echo "Editor";
}
if ($item['roles'] == 3)
{
echo "Something_else";
}
?></td>
<td bgcolor="<?= $bgcolor ?>">
<?php
if ($item['activated'] == '0')
{
echo "No";
}
if ($item['activated'] == '1')
{
echo "Yes";
}
?>
</td>
<td bgcolor="<?= $bgcolor ?>" class="underlineInput">
<select class="focusSelect" onChange="window.document.location.href=this.options[this.selectedIndex].value;" value="GO">
<option selected="selected"></option>
<option value="admin.php?action=edit&admin_id=<?= $item['id'] ?>">Edit</option>
<option value="admin.php?action=delete&admin_id=<?= $item['id'] ?>">Sterge</option>
<option value="admin.php?action=activate&admin_id=<?= $item['id'] ?>">Activare</option>
</select>
</td>
</tr>
<?php
}
?>
</tbody>
</form>
而且是这样显示的!
我的问题是如何通过简单的获取时间单击页面的编号(将由 row number
拆分为 how many to show
生成)来对其进行分页?page=2&items_toshow=25 并且必须显示第 25 到 50 项。你能帮助我吗 ?谢谢
对现有列表应用分页非常简单。
我可以给你解释一下伪逻辑:
1) 获取记录总数。您需要 2 个 sql,一个用于计数,一个用于最后几点中解释的实际记录。
2) 添加可变页数。 (例如20)
3) 将总记录数除以每页记录数。
为其添加 ceil() 函数。
从 1 开始循环到页数。
将锚 link 放入其中,将其指向带有编号的当前页面。
从 url 获取页码并通过应用限制过滤记录。
我通过列出数据库中的一些项目来完成我的代码,但现在我必须对它们进行分页,因为这会使页面过载。所以这是我的部分代码
<!--elements to display-->
<form method="get" action="?">
<div class="underlineInput">
<span>Display</span>
<select class="pageSelect" name="per_page" onchange="this.form.submit()">
<option>25</option>
<option>50</option>
<option>100</option>
<option>500</option>
<option>all</option>
</select>
<span> items per page</span>
</div>
</form>
</div>
</div>
<!--table-->
<table class="table">
<thead>
<tr>
<th>
<div class="handle" style="border-color:#0fb175;"></div>
<div class="thContent"> <a href="" class="">ID</a></div>
</th>
<th>
<div class="handle" style="border-color:#b10f46;"></div>
<div class="thContent"> <a href="" class="">Username</a></div>
</th>
<th>
<div class="handle" style="border-color:#0fb175;"></div>
<div class="thContent"> <a href="" class="">Cod</a></div>
</th>
<th>
<div class="handle" style="border-color:#0f53b1;"></div>
<div class="thContent"> <a href="" class="">Email</a></div>
</th>
<th>
<div class="handle" style="border-color:#0fb175;"></div>
<div class="thContent"> <a href="" class="">Roles</a></div>
</th>
<th>
<div class="handle" style="border-color:#0fb175;"></div>
<div class="thContent"> <a href="" class="">Activated</a></div>
</th>
<th class="underlineInput">
<div class="handle" style="border-color:#cfb01d;"></div>
<div class="thContent">Actiuni</div>
</th>
</tr>
</thead>
<tbody>
<form id="delete_alll" method="post">
<?php
$sql = "SELECT * FROM `admins` WHERE `username` = '".$_SESSION['logged_in']."'";
$adimin_logat = mysqli_query($db_connect, $sql);
$row = mysqli_fetch_assoc($adimin_logat);
//afisteaza rolurile mai mare decat admin care e 1 in functie de userul logat
$sql = "SELECT * FROM `admins` WHERE `roles` > ".$row['roles']." ";
if(isset($_POST['search_user'])){
$sql="SELECT * FROM `admins` WHERE `roles` > ".$row['roles']." AND `username` = '".$_POST['srch_usr']."'";
}
$connect = mysqli_query($db_connect, $sql);
$counter = 0;
if(isset($_GET['per_page'])){
$resultPerPage = $_GET['per_page'];
}
else{
$resultPerPage = 6;
}
$count = 0;
while (($item = mysqli_fetch_array($connect)))
{
if ($counter % 2) {
$bgcolor = '#D3D3D3';
} else {
$bgcolor = '#A8A8A8';
}
$counter++;
$count++;
?>
<tr>
<td bgcolor="<?= $bgcolor ?>" ><input type="checkbox" name="check_dell_all[]" value="<?= $item['id'] ?>" /><?= $item['id'] ?></td>
<td bgcolor="<?= $bgcolor ?>" ><?= $item['username'] ?></td>
<td bgcolor="<?= $bgcolor ?>"><?= $item['code'] ?></td>
<td bgcolor="<?= $bgcolor ?>"><?= $item['email'] ?></td>
<td bgcolor="<?= $bgcolor ?>"><?php
if ($item['roles'] == 0)
{
echo "Root";
}
if ($item['roles'] == 1)
{
echo "Admin";
}
if ($item['roles'] == 2)
{
echo "Editor";
}
if ($item['roles'] == 3)
{
echo "Something_else";
}
?></td>
<td bgcolor="<?= $bgcolor ?>">
<?php
if ($item['activated'] == '0')
{
echo "No";
}
if ($item['activated'] == '1')
{
echo "Yes";
}
?>
</td>
<td bgcolor="<?= $bgcolor ?>" class="underlineInput">
<select class="focusSelect" onChange="window.document.location.href=this.options[this.selectedIndex].value;" value="GO">
<option selected="selected"></option>
<option value="admin.php?action=edit&admin_id=<?= $item['id'] ?>">Edit</option>
<option value="admin.php?action=delete&admin_id=<?= $item['id'] ?>">Sterge</option>
<option value="admin.php?action=activate&admin_id=<?= $item['id'] ?>">Activare</option>
</select>
</td>
</tr>
<?php
}
?>
</tbody>
</form>
而且是这样显示的!
我的问题是如何通过简单的获取时间单击页面的编号(将由 row number
拆分为 how many to show
生成)来对其进行分页?page=2&items_toshow=25 并且必须显示第 25 到 50 项。你能帮助我吗 ?谢谢
对现有列表应用分页非常简单。
我可以给你解释一下伪逻辑:
1) 获取记录总数。您需要 2 个 sql,一个用于计数,一个用于最后几点中解释的实际记录。
2) 添加可变页数。 (例如20)
3) 将总记录数除以每页记录数。
为其添加 ceil() 函数。
从 1 开始循环到页数。
将锚 link 放入其中,将其指向带有编号的当前页面。
从 url 获取页码并通过应用限制过滤记录。