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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Слишком длинная постраничная навигация
 
 автор: 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>";
?>

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

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

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

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

   
 
 автор: 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-параметры в ссылки постраничной навигации

   
Rambler's Top100
вверх

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