Навигация по php-странице по серийному номеру

Может ли кто-нибудь помочь в этом скрипте навигации по php-странице, чтобы включить подсчет обычного серийного номера? В этом скрипте есть переменная под названием «page_id» — я хочу, чтобы эта переменная хранила настоящую ссылку на страницу в порядке, например 0, 1, 2, 3, 4, 5...

<?
$onpage = 10; // on page

/*
 $pagerecord - display records per page
 $activepage - current page
 $records - total records
 $rad - display links near current page (2 left + 2 right + current page = total 5)
*/

function navigation($pagerecord, $activepage){

$records = 55;
$rad = 4;

if($records<=$pagerecord) return;

$imax = (int)($records/$pagerecord);
if ($records%$pagerecord>0)$imax=$imax+1;

if($activepage == ''){
$for_start=$imax;
$activepage = $imax-1;
}
$next = $activepage - 1; if ($next<0){$next=0;}
$end =0;
$prev = $activepage + 1; if ($prev>=$imax){$prev=$imax-1;}
$start=  $imax;
if($activepage >= 0){
$for_start = $activepage + $rad + 1; 
if($for_start<$rad*2+1)$for_start = $rad*2+1;
if($for_start>=$imax){ $for_start=$imax; }
}
if($activepage < $imax-1){
$str .= ' <a href="?page='.($start-1).'"><<< End</a> <span style="color:#CCCCCC">•</span> <a href="?page='.$prev.'">< Forward</a> | ';
}
$meter = $rad*2+1;  //$rad; ---------------------
for($i=$for_start-1; $i>-1; $i--){
$meter--;
//$line = '|'; if ($meter=='0'){ $line = ''; }
$line = ''; if ($i>0)$line = '|';
if($i<>$activepage){
$str .= " <a href='?page=".$i."&page_id=xxx'>".($i)."</a> ".$line." ";
} else {
$str .= " <strong>[".($i)."]</strong> ".$line." ";
}

if($meter=='0'){ break; }
}
if($activepage > 0){
$str .= " | <a href='?page=".$next."'>Back ></a> <span style='color:#CCCCCC'>•</span> <a href='?page=".($end)."'>Start >>></a> ";
}

return $str;

}

if(is_numeric($_GET["page"])) $page = $_GET["page"];
$navigation = navigation($onpage, $page); // detect navigation

echo $navigation;
?>

Вместо xxx здесь (page_id=xxx) я хочу сослаться на реальный номер страницы в обычном порядке, когда этот скрипт показывает ссылки, но в обратном порядке.

Очень нужна помощь в этом деле! Заранее спасибо!


person ilnur777    schedule 10.04.2010    source источник
comment
Пожалуйста, объясните, что этот скрипт делает прямо сейчас, что не работает и что вам нужно сделать. Я не думаю, что слишком много людей готовы пройти через это и выяснить все это :)   -  person Pekka    schedule 11.04.2010
comment
Хорошо, обновлен пример сработавшего скрипта! Вы можете проверить это! Это обратная навигация по страницам. Но мне нужен реальный номер страницы по порядковому номеру, например 0,1,2,3,4! Возможно, внутри основного for() должен быть еще один for(), который будет считаться как $j++; ?   -  person ilnur777    schedule 11.04.2010


Ответы (1)


Мне помог один из программистов с моим скриптом выше. Итак, вот рабочий пример перевернутой навигации по страницам на PHP.

<?
$onpage = 10; // on page

/*
 $pagerecord - display records per page
 $activepage - current page
 $records - total records
 $rad - display links near current page (2 left + 2 right + current page = total 5)
*/

function navigation($pagerecord, $activepage){

$records = 126;
$rad = 4;

if($records<=$pagerecord) return;

$imax = (int)($records/$pagerecord);
if ($records%$pagerecord>0)$imax=$imax+1;

if($activepage == ''){
$for_start=$imax;
$activepage = $imax-1;
}
$next = $activepage - 1; if ($next<0){$next=0;}
$end =0;
$prev = $activepage + 1; if ($prev>=$imax){$prev=$imax-1;}
$start=  $imax;
if($activepage >= 0){
$for_start = $activepage + $rad + 1;
if($for_start<$rad*2+1)$for_start = $rad*2+1;
if($for_start>=$imax){ $for_start=$imax; }
}

$meter = $rad*2+1;  //$rad; ---------------------
$new_meter = $for_start-1;
if($activepage < $imax-1){
$str .= ' <a href="?page='.($start-1).'&page_id='.$end.'"><<< End</a> <span style="color:#CCCCCC">•</span> <a href="?page='.$prev.'&page_id='.($imax-$prev-1).'">< Forward</a> | ';
}
for($i=$for_start-1; $i>-1; $i--){
$meter--;
//$new_meter++;
//$line = '|'; if ($meter=='0'){ $line = ''; }
$line = ''; if ($i>0)$line = '|';
if($i<>$activepage){
$str .= " <a href='?page=".$i."&page_id=".($imax-$i-1)."'>".($i)."</a> ".$line." ";
} else {
$str .= " <strong>[".($i)."]</strong> ".$line." ";
}

if($meter=='0'){ break; }
}
if($activepage > 0){
$str .= " | <a href='?page=".$next."&page_id=".($imax-$next-1)."'>Back ></a> <span style='color:#CCCCCC'>•</span> <a href='?page=".($end)."&page_id=".($start-1)."'>Start >>></a> ";
}

return $str;

}

if(is_numeric($_GET["page"])) $page = $_GET["page"];
$navigation = navigation($onpage, $page); // detect navigation

echo $navigation;
?>

$page = сохраняет номер страницы в обратном порядке

$page_id = сохраняет реальную страницу в последовательном порядке. поэтому вы можете делать запросы SELECT к базе данных и использовать ORDER BY id DESC.

person ilnur777    schedule 11.04.2010