|
|
|
| Кому знакома эта навигация, помогите с запросом:
if(empty($_GET['page'])) $page = 1;
else $page = $_GET['page'];
$pnumber = 20;
$page_link = 3;
$first = ($page - 1)*$pnumber;
|
есть запросы:
$queryw = "SELECT * FROM tables";
$produltw = mysql_query($queryw);
$total = mysql_num_rows($produltw); // здесь вывод общего кол-во строк в таблице
$tcol = 30; // тут придел вывода строк
if($total > $tcol) {$total = $tcol;}
$sqlmod = "SELECT * FROM tables LIMIT $first, $pnumber";
$resultt = mysql_query($sqlmod);
$t = mysql_num_rows($resultt);
if ( 0 < $t )
{
for ( $i=0; $i<$t; $i++ ) {
// Далее идет вывод строк
}
}
pager($page, $total, $pnumber, $page_link, ""); // это вывод самой навигации
|
Если я ограничеваю пользователю вывод его строк до 30, а в базе у него их 70, получается что страниц 2 как и должно быть [1-20][20-30], но товаров показывает 40! Что нехватает в запросах, помогите решить проблему.
Заранее благодарю! | |
|
|
|
|
|
|
|
для: clubxaliav
(23.10.2012 в 10:12)
| | Вот этот фрагмент
$tcol = 30; // тут придел вывода строк
if($total > $tcol) {$total = $tcol;}
$sqlmod = "SELECT * FROM tables LIMIT $first, $pnumber";
|
нужно поправить таким образом, что если вы находитесь на последней странице, у вас вместо $pnumber в SQL-запросе использовался остаток от деления $tcol на $pnumber. | |
|
|
|
|
|
|
|
для: cheops
(23.10.2012 в 12:16)
| | Логично, просто я думал, что этот вариант можно как-нибудь заменить, много действий! Других вариантов нет? | |
|
|
|
|
|
|
|
для: clubxaliav
(23.10.2012 в 12:34)
| | Лучше всего написать класс, который принимает параметры, выполняет действия для разных режимов работы. Один раз выполнить много действий, а потом пользоваться его результатами. | |
|
|
|
|
|
|
|
для: cheops
(23.10.2012 в 23:40)
| | Я вас непонимэ, наверное придется воспользоваться первым методом ))))))) У меня по русскому то 2 было ))))))) | |
|
|
|