Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Слишком длинная постраничная навигация

Сообщения:  [1-4] 

 
 автор: cheops   (09.04.2006 в 00:23)   письмо автору
 
   для: ZetRider   (08.04.2006 в 14:15)
 

Для этого можно приспособить следующую функцию
<?php
  
function pager($page, $total, $pnumber, $page_link, $parameters)
  {
    
// Вычисляем число страниц в системе
    
$number = (int)($total/$pnumber);
    if((float)(
$total/$pnumber) - $number != 0) $number++;
    
// Проверяем есть ли ссылки слева
    
if($page - $page_link > 1)
    {
      echo 
"<a class=menu href=$_SERVER[PHP_SELF]?page=1{$parameters}>[1-$pnumber]</a>&nbsp;&nbsp;...&nbsp;&nbsp;";
      
// Есть
      
for($i = $page - $page_link; $i<$page; $i++)
      {
          echo 
"&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$i{$parameters}>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a>&nbsp;";
      }
    }
    else
    {
      
// Нет
      
for($i = 1; $i<$page; $i++)
      {
          echo 
"&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$i{$parameters}>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a>&nbsp;";
      }
    }
    
// Проверяем есть ли ссылки справа
    
if($page + $page_link < $number)
    {
      
// Есть
      
for($i = $page; $i<=$page + $page_link; $i++)
      {
        if(
$page == $i)
          echo 
"&nbsp;<em class=menu>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</em>&nbsp;";
        else
          echo 
"&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a>&nbsp;";
      }
      echo 
"&nbsp;...&nbsp;&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$number{$parameters}>[".(($number - 1)*$pnumber + 1)."-$total]</a>&nbsp;";
    }
    else
    {
      
// Нет
      
for($i = $page; $i<=$number; $i++)
      {
        if(
$number == $i)
        {
          if(
$page == $i)
            echo 
"&nbsp;<em class=menu>[".(($i - 1)*$pnumber + 1)."-$total]</em>&nbsp;";
          else
            echo 
"&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$i{$parameters}>[".(($i - 1)*$pnumber + 1)."-$total]</a>&nbsp;";
        }
        else
        {
          if(
$page == $i)
            echo 
"&nbsp;<em class=menu>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</em>&nbsp;";
          else
            echo 
"&nbsp;<a class=menu href=$_SERVER[PHP_SELF]?page=$i{$parameters}>[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a>&nbsp;";
        }
      }
    }
    echo 
"<br><br>";
  }
?>

$page - текущая страница, которая извлекается и GET-параметра page
$total - общее число позиций
$pnumber - число позиций на странице
$page_link - число ссылок до троеточия
$parameters - дополнительные GET-параметры в ссылки постраничной навигации

   
 
 автор: ZetRider   (08.04.2006 в 14:15)   письмо автору
 
   для: cheops   (08.04.2006 в 13:56)
 

А как мона ето сделать?

   
 
 автор: cheops   (08.04.2006 в 13:56)   письмо автору
 
   для: ZetRider   (08.04.2006 в 11:18)
 

Хм... а вы сделайте как у нас на главной странице форума, скрывайте лишние ссылки под троеточием ...

   
 
 автор: ZetRider   (08.04.2006 в 11:18)   письмо автору
 
 

вот есть код вывода псотраничной тхт навигации... Но в базе у меня уже более 130 строк, и вид перехода на следующую страницу сообщений уже набрал вид:
[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ][ 8 ][ 9 ][ 10 ][ 11 ][ 12 ][ 13 ][ 14 ]
Как можно соле [ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ][ 8 ][ 9 ][ 10 ]переносить на следующую строку?

<?php 
$base
="log.txt"; // Файл где находиться инфа

$general=file($base); //Заносим весь наш файл в массив

$lines_file=file($base); //Еще разочек занесем наш файли в массив :-)

$lines_gb=count($lines_file); //Считаем общее количество записей в файле, ну т.е. строк.

$pmessages = file("$base");

$onlyg=10; //Сколько записей выводить на страницу

if (@$page == "" or $page < 0) //Если переменная $page равна пустоте, или она меньше 0
{
$page = "1"; //Тогда переменнная $page=1
}

$first = count($pmessages) - ($onlyg * ($page - 1));
$second = count($pmessages) - ($onlyg * $page) + 1;

if (
$second < 1)
{
$second = 1;
}

$pages = (int) ((count($pmessages) + $onlyg) / $onlyg); //Считаем общее количество страниц

for ($onlyg = 1; $onlyg <= $pages; $onlyg++) //Загоняем все в цикл, т.е. присваемваем переменно $onlyg значение
//1 и пока она меньше или равна $pages увеличиваем ее на единичку.
{
if (
$onlyg != $page) //Если $olyg не равняется $page
{
//То наши ссылки имеют такой вид
$line_gb .= "[ <a href=\"?id=index&page=$onlyg\">$onlyg</a> ]";
}
if (
$onlyg == $page) //А если равняеться
{
//То такой
$line_gb .= "[ $onlyg ]"; //Ну т.е. в выводим не в виде ссылки ту страницу где сейчас находиться пользователь
}
}
for ( 
$i = $first-1; $i >= $second-1; $i--)
{
list(
$name, $time, $mail, $icq, $msg)=explode("--", $general[$i]);
$id = $i;
$id++;
echo 
"
$name, $time, $mail, $icq, $msg
"
;
}
echo 
"<br><center><b>$line_gb</b><br>Всего записей - <font color=red>$lines_gb</font>.</center>";
?>

   

Сообщения:  [1-4] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования