2012-05-27 3 views
0

Привет У меня есть рабочий PHP на основе пагинацию, который работает отлично, но когда я сортировать данные по сортировке ссылки пагинация dosen't работает ..PHP-Pagination не работает после сортировки

метод сортировки я использовал имеет прямую связь сортировка с запросом mysql.

посмотрите пожалуйста, что я делаю неправильно.

мой полный код пока

<?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; 

////////////////////////LINKS FOR SORTING/////////////////////// 
     echo "<a href=orderBy=id,>id:</a>"; 
     echo "<a href=orderBy=title,>title:</a>"; 
//////////////////////////////////////////////////////////////// 

//////////////////////////PAGINATION/////////////////////////// 
echo " <li><a href='$pagename?orderBy=$order,page=$totalpages'>$totalpages</a></li> "; 


if ($currentpage != $totalpages) { 
$nextpage = $currentpage + 1; 
echo " <li><a href='$pagename?orderBy=$order,page=$nextpage'>Next&raquo;&raquo;</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'>&laquo;&laquo;Prev</a></li> "; 
} 
if ($currentpage > 5) { 
echo "<li><a href='$pagename?page=1'>1</a></li> "; 
} 
    ?> 
+0

У вас возникла ошибка? Вы посмотрели журналы? У вас есть столбец под названием 'title' в вашей таблице? – Filype

ответ

1

только что видел, что: вы запятые вместо & в вашем URL звонки:

echo " <li><a href='$pagename?orderBy=$order,page=$nextpage'>Next&raquo;&raquo;</a></li> "; 

изменение:

echo " <li><a href='$pagename?orderBy=$order&page=$nextpage'>Next&raquo;&raquo;</a></li> "; 
  • изменить остальные линии, имеющие эту проблему также
+0

попробовал это .. работать как не работает после сортировки –

+0

у вас есть какие-то строки (число)? какие $ значения у вас есть в конце? что вы не имеете в виду? Я тестировал это с помощью собственной разбивки на страницы и не могу найти ошибку. –

+0

pagination работает, когда вы не используете сортировку (orderBy = $ order удален из ссылок на страницы). Я получаю значения в ссылке на страницы как page1, page2 и т. Д., Тогда, если я сортирую свой набор записей с сортировкой (orderBy = $ order добавлен в ссылки на страницы) отсортированный набор записей, и я получаю значения в ссылочной ссылке как orderBy = id, page1, orderBy = id, page2 и т. д., но ничего не происходит –

Смежные вопросы