嗨,我是一個新的程序員。PHP-Modifing分頁排序
我有一個簡單分頁這工作正常, 我已經排序選擇通過ID,標題等,這也是工作正常排序我的記錄結果,代碼如下所示。
現在我想結合了兩個並具有分頁功能應該在兩種條件下工作。
即當默認顯示記錄集結果時,分頁應該像以前一樣工作。 當記錄集結果按選項排序時,分頁也應該對排序結果起作用。
我得到了一些想法,代碼在下面,但我無法得到它的工作。
我的記錄和基本分頁,排序的代碼是:
<?php
$table='mytable';
$pagename = "is-test.php";
$db = mysql_select_db($database,$connection) or trigger_error("SQL", E_USER_ERROR);
$sql1 = "SELECT COUNT(*) FROM $table";
$result1 = mysql_query($sql1, $connection) or trigger_error("SQL", E_USER_ERROR);
$row = mysql_fetch_row($result1);
$numrows = $row[0];
$rowsperpage = 5;
$totalpages = ceil($numrows/$rowsperpage);
if (isset($_GET['page']) && is_numeric($_GET['page'])) {
$currentpage = (int) mysql_real_escape_string($_GET['page']);
} else {
$currentpage = 1;
}
if ($currentpage > $totalpages) {
$currentpage = $totalpages;
}
if ($currentpage < 1) {
$currentpage = 1;
}
$orderBy = array('id', 'title',);
$order = '';
if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) {
$order = mysql_real_escape_string($_GET['orderBy']);
}else{
$order='id';
}
$offset = ($currentpage - 1) * $rowsperpage;
$sql2 = "SELECT * FROM $table ORDER BY $order ASC LIMIT $offset, $rowsperpage";
$result2 = mysql_query($sql2, $connection) or trigger_error("SQL", E_USER_ERROR);
$list = mysql_fetch_assoc($result2);
$startrow = ($currentpage-1) * $rowsperpage
我的排序選項代碼:
Sort by
<a href="?orderBy=id">id:</a>
<a href="?orderBy=title">title:</a>
我對分頁代碼:
if ($currentpage != $totalpages) {
$nextpage = $currentpage + 1;
echo " <li><a href='$pagename?page=$nextpage'>Next»»</a></li> ";
}
if($currentpage<$totalpages){
for ($x = ($currentpage - 3); $x < (($currentpage + 3) + 1); $x++) {
if (($x > 0) && ($x <= $totalpages)) {
if ($x == $currentpage) {
echo " <li id='pcurrent'><a href='$pagename?page=$x'>$x</a></li>";
} else {
echo " <li><a href='$pagename?page=$x'>$x</a></li> ";
}}}
}
if ($currentpage > 1){
$prevpage = $currentpage - 1;
echo " <li><a href='$pagename?page=$prevpage'>««Prev</a></li> ";
}
高達現在除了分頁之外,所有的東西都在工作,只分頁記錄集記錄集結果我必須要改變URL參數分頁對排序結果工作, 所以我改變了我的分頁鏈接爲
if ($currentpage != $totalpages) {
$nextpage = $currentpage + 1;
echo " <li><a href='$pagename?orderBy=$order,page=$nextpage'>Next»»</a></li> ";
}
if($currentpage<$totalpages){
for ($x = ($currentpage - 3); $x < (($currentpage + 3) + 1); $x++) {
if (($x > 0) && ($x <= $totalpages)) {
if ($x == $currentpage) {
echo " <li id='pcurrent'><a href='$pagename?orderBy=$order,page=$x'>$x</a></li>";
} else {
echo " <li><a href='$pagename?orderBy=$order,page=$x'>$x</a></li> ";
}}}
}
if ($currentpage > 1){
$prevpage = $currentpage - 1;
echo " <li><a href='$pagename?page=$prevpage'>««Prev</a></li> ";
}
即加入ORDERBY = $爲了在分頁鏈接,但分頁現在沒有工作, 不在默認記錄集結果上,也不在排序記錄集結果上。
請看看我做錯了
男人你是生命的救星..工作像魅力很多。 –
也看上面有什麼方法來防止SQL注入我已經使用mysql_real_escape_string _GET是使它注入證明 –
使用mysql_real_escape_string來逃避$命令絕對是一個好主意。在$頁上使用它是可選的,因爲你把它轉換爲整數 –