這是一個簡單的問題,但我似乎無法弄清楚。所以我有這個解析搜索和分頁結果的代碼。效果很好。我在哪裏把ORDER BY放在這段代碼裏?
<?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條件必須去這裏嗎?
感謝您的幫助提前。
是的,那正是我遇到的問題。你的建議像魅力一樣工作 - 謝謝! – JLA