这是一个简单的问题,但我似乎无法弄清楚。所以我有这段代码可以解析搜索并对结果进行分页。效果很好。
<?php
require_once("models/config.php");
if (!securePage($_SERVER['PHP_SELF'])){die();}
require_once("models/header.php");
define("NUMBER_PER_PAGE", 5); //number of records per page of the search results
function pagination($current_page_number, $total_records_found, $query_string = null)
{
$page = 1;
echo "Page: ";
for ($total_pages = ($total_records_found/NUMBER_PER_PAGE); $total_pages > 0; $total_pages--)
{
if ($page != $current_page_number)
echo "<a href=\"?page=$page" . (($query_string) ? "&$query_string" : "") . "\">";
echo "$page ";
if ($page != $current_page_number)
echo "</a>";
$page++;
}
}
$page = ($_GET['page']) ? $_GET['page'] : 1;
$start = ($page-1) * NUMBER_PER_PAGE;
$personid = ($_POST['personid']) ? $_POST['personid'] : $_GET['personid'];
$firstname = ($_POST['firstname']) ? $_POST['firstname'] : $_GET['firstname'];
$surname = ($_POST['surname']) ? $_POST['surname'] : $_GET['surname'];
$sql = "SELECT * FROM persons WHERE 1=1";
if ($personid)
$sql .= " AND personid='" . mysqli_real_escape_string($mysqli,$personid) . "'";
if ($firstname)
$sql .= " AND firstname='" . mysqli_real_escape_string($mysqli,$firstname) . "'";
if ($surname)
$sql .= " AND surname='" . mysqli_real_escape_string($mysqli,$surname) . "'";
$total_records = mysqli_num_rows(mysqli_query($mysqli,$sql));
$sql .= " LIMIT $start, " . NUMBER_PER_PAGE;
pagination($page, $total_records, "personid=$personid&firstname=$firstname&surname=$surname");
$loop = mysqli_query($mysqli,$sql)
or die ('cannot run the query because: ' . mysqli_error($mysqli,i));
while ($record = mysqli_fetch_assoc($loop))
echo "<br/>{$record['personid']}) " . stripslashes($record['firstname']) . " - {$record['surname']}";
echo "<center>" . number_format($total_records) . " search results found</center>";
pagination($page, $total_records, "personid=$personid&firstname=$firstname&surname=$surname");
?>
但是,我希望我的搜索结果按姓氏排序。所以我修改了一行代码来表示:
$sql = "SELECT * FROM persons WHERE 1=1 ORDER BY surname";
然后,当我搜索名字时,我会得到所有记录,并按姓氏完美排序。我尝试将 ORDER BY 放在其他地方,但搜索不起作用。
为了获得按姓氏排序的正确过滤结果,ORDER BY 条件必须放在此处吗?
感谢您提前提供的帮助。
最佳答案
您正在寻找这样的东西吗?
$sql .= " ORDER BY surname";
$sql .= " LIMIT $start, " . NUMBER_PER_PAGE;
问题是否只是您需要在正在构建的 SQL 查询末尾附加“ORDER BY”语句?
关于php - 我应该在这段代码中放置 ORDER BY 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22487257/