【发布时间】:2015-05-26 21:40:24
【问题描述】:
大家早上好!
我一直在做一个小项目,我认为我已经完成了。所以,我有一堆页面,但我有一个有超过 100k 结果的 MYSQLi 查询,我认为不显示所有 100k+ 结果会很好,所以我在网站上添加了分页。我遇到的问题是,每当有人对页面进行排序并单击下一页时,排序就会消失。
在我写这篇文章的时候,我有点想通了,但这是我的代码:
$sort = "id";
if(isset($_GET['sort'])) {
switch ($_GET['sort'] ) {
case 0:
$sort = 'id';
break;
case 1:
$sort = 'priority DESC';
break;
case 2:
$sort = 't_name';
break;
case 3:
$sort = 'loc';
break;
case 4:
$sort = 'w_req';
break;
case 5:
$sort = 'tel';
break;
case 6:
$sort = 'maint_user';
break;
}
}
// pagination
$total_results = mysqli_num_rows(mysqli_query($mysqli,"SELECT w_status FROM w_o WHERE (w_status = 'active' OR w_status = 'open') ORDER BY $sort"));
if(!isset($page_number))
$page_number = (int)$_GET['page'] <= 0 ? 1 : (int)$_GET['page']; // grab the page number
$perpage = 15; // number of elements perpage
if($page_number > ceil($total_results/$perpage))
$page_number = ceil($total_results/$perpage);
$start = ($page_number - 1) * $perpage;
$result = mysqli_query($mysqli,"SELECT * FROM w_o WHERE (w_status = 'active' OR w_status = 'open') ORDER BY $sort LIMIT $start, $perpage");
我认为我的问题是 $sort="id";每次单击下一步时, $sort 都会重置为 = "id" 所以我在想,也许在分页代码中包含 $sort ?我很感激我能得到的任何帮助。谢谢你:)
这是html:
<form action="re_assign_a.php" method="post" name="view_order">
<table border="0" width="100%">
<tr>
<td align="left"><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=".($page_number-1)."'";?>" class="button_s">Previous</a></td>
<td align="right"><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=".($page_number+1)."'";?>" class="button_s">Next</a></td>
</tr>
</table>
<br>
<table border='2' style='width: 100%; margin: auto; border-width: 1px'>
<tr>
<th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=0";?>" title="Click to sort by order number." class="tooltip"><span title="More">Order #</span></a></th>
<th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=1";?>" title="Click to sort by Priority." class="tooltip"><span title="More">Priority</span></a></th>
<th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=2";?>" title="Click to sort by Tenant Name." class="tooltip"><span title="More">Tenant Name</span></a></th>
<th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=3";?>" title="Click to sort by Apartment/Location" class="tooltip"><span title="More">Apartment</span></a></th>
<th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=4";?>" title="Click to sort by Work Requested" class="tooltip"><span title="More">Work Requested</span></a></th>
<th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=5";?>" title="Click here to sort by Phone Number" class="tooltip"><span title="More">Resident Phone #</span></a></th>
<th><a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=6";?>" title="Click to sort by a good date to perform work" class="tooltip"><span title="More">Assigned to</span></a></th>
<th>Check to Re-Assign</th>
</tr>
<?php
$i = 0;
while($row = mysqli_fetch_array($result))
{
$test_id = $row['id'];
echo "<tr class='table_work'>";
echo "<td align='center'><a href='one_order.php?id=$test_id'>" . $row['id'] . "</td>";
echo
"<td align='center'><a href='one_order.php?id=$test_id'>";
if ($row['priority'] == '1') { echo "<div class='priority1'> </div>"; } elseif ($row['priority'] == '2') { echo "<div class='priority2'> </div>"; } elseif ($row['priority'] == '3') { echo "<div class='priority3'> </div>"; };
echo "</a></td>
<td align='center'><a href='one_order.php?id=$test_id'>"; echo custom_echo1 ($row['t_name']); echo "</a></td>
<td align='center'><a href='one_order.php?id=$test_id'>"; echo custom_echo1 ($row['loc']); echo "</a></td>
<td align='center'><a href='one_order.php?id=$test_id'>"; echo custom_echo($row['w_req']); echo "</a></td>";
echo "<td align='center'><a href='one_order.php?id=$test_id'>"; echo custom_echo2($row['tel']); echo "</a></td>";
echo "<td align='center'><a href='one_order.php?id=$test_id'>" . $row['maint_user'] . "</a></td>";
echo "<td align='center'><input name='assign[$i]' type='checkbox' value='" . $row['id'] . "' ></td>";
++$i;
}
?>
</table><br>
<table border="0" width="100%">
<tr>
<td align="left"><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=".($page_number-1)."'";?>" class="button_s">Previous</a></td>
<td align="right"><a href="<?php echo $_SERVER['PHP_SELF'] . "?page=".($page_number+1)."'";?>" class="button_s">Next</a></td>
</tr>
</table>
【问题讨论】:
-
早上好。你遇到了什么错误?
-
没有错误,只是当有人对页面进行排序并单击下一页时,无论他们应用什么排序,它都会按 id 对其进行排序。
-
能给个html代码吗?您是否考虑过永久存储排序类型(会话、cookie 等)?
-
必须在每个站点设置 $_GET['sort']。当您转到下一个站点时,您需要 URL 中的排序变量。
-
是的,您需要通过排序选项来获取下一个请求。
标签: php sorting mysqli pagination