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

Форум PHP

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

 

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

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

тема: Постр. навигация файлов
 
 автор: d1xi   (11.02.2007 в 14:25)   письмо автору
 
 

Помогите пожалуйста сделать навигацию,вида
(1),2,3...20
Вторая стр:
1,(2),3,4...20
3я стр:
1,2,(3),4,5...20
4я стр:
1,2,3,(4),5,6...20
5я стр:
1 ... 3 4 (5) 6 7 ... 20
6я стр:
1 ... 4 5 (6) 7 8 ... 20
7я стр:
1 ... 5 6 (7) 8 9 ... 20
И тд...
Очень надо...

пс: если можно то переделать,эту http://softtime.ru/scripts/pager.php
навигацию,под ту что я написал.

   
 
 автор: bronenos   (11.02.2007 в 17:30)   письмо автору
 
   для: d1xi   (11.02.2007 в 14:25)
 

Не знаю, может, так...
<?
$total 
20// всего
$page intval ($_GET['page']);
$page = ($page>=and $page<=$total)
 ? 
$page 1;

$m2 $page 2;
$p2 $page 2;

$m2 = ($m2>=1)
 ? 
$m2 1;
$p2 = ($p2<=$total)
 ? 
$p2 $total;

$pages[] = 1;

if (
$m2>1) {
 if ((
$m2-1) > 1)
  
$pages[] = '...';
 else
  
$pages[] = ($m2+1) / 2;
}

for (
$i=$m2$i<=$p2$i++)
 
$pages[] = $i;

if (
$p2 $total) {
 if ((
$p2+1) < $total)
  
$pages[] = '...';
 else
  
$pages[] = ($p2+$total) / 2;
}

$pages[] = $total;

print 
implode ('&nbsp;'$pages);
?>

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

   
 
 автор: d1xi   (11.02.2007 в 20:43)   письмо автору
 
   для: bronenos   (11.02.2007 в 17:30)
 

Как бы этот код дополнить

<?php

  
// Имя файла

  
$filename "text.txt";

  
// Число позиций на странице

  
$pnumber 3;

  
// Открываем файл для чтения

  
$bufer file_get_contents($filename);



  
// Находим все строки при помощи регулярного выражения

  
preg_match_all("#([\d]+) ([^\n]+)(\n|$)#U",

                 
$bufer

                 
$out,

                 
PREG_PATTERN_ORDER);

  
// Формируем промежуточный массив

  
for($i 0$i count($out[1]); $i++)

  {

    
$temp[] = trim($out[2][$i]);

  }



  
// Проверяем передан ли номер текущей страницы

  
if(isset($_GET['page'])) $page $_GET['page'];

  else 
$page 1;

  
// Число страниц

  
$total count($temp);

  
$number = (int)($total/$pnumber);

  if((float)(
$total/$pnumber) - $number != 0$number++;



  
$start = (($page 1)*$pnumber 1);

  
$end $page*$pnumber 1;

  if(
$end $total$end $total;



  
// Выводим содержимое страниц

  
for($i $start$i $end$i++)

  {

    echo 
$temp[$i]."<br>";

  }



  
// Постраничная навигация

  
for($i 1$i <= $number$i++)

  {

    
// Если это произвольная страница

    
if($i != $number)

    {

      if(
$page == $i)

      {

        echo 
"[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]&nbsp;";

      }

      else

      {

        echo 
"<a href=$_SERVER[PHP_SELF]?page=".$i.">[".

             ((
$i 1)*$pnumber 1)."-".$i*$pnumber."]</a>&nbsp;";

      }

    }

    
// Если это последняя страница заменяем последнюю цифру 

    // максимальным числом позиций в массиве $temp

    
else

    {

      if(
$page == $i)

      {

        echo 
"[".(($i 1)*$pnumber 1)."-".($total 1)."]&nbsp;";

      }

      else

      {

        echo 
"<a href=$_SERVER[PHP_SELF]?page=".$i.">[".

             ((
$i 1)*$pnumber 1)."-".($total 1)."]</a>&nbsp;";

      }

    }

  }

?>


Мне это пошло бы тоже,но если записей в базе 300,то ссылок будет оч много!
Как бы меньше сделать?

   
 
 автор: t4f   (11.02.2007 в 21:02)   письмо автору
 
   для: d1xi   (11.02.2007 в 20:43)
 

Есть функция file - чтение строк в массив. Считываешь строки в массив, а потом массив разбиваешь функцией array_slice

   
 
 автор: bronenos   (11.02.2007 в 21:08)   письмо автору
 
   для: d1xi   (11.02.2007 в 20:43)
 

у меня на сайте так стоит...
<?
print "<form name='chpage'><select name='page' onChange='document.chpage.submit();'>";
for (
$i=0$i<$total$i++)
{
 
$sed = ($_GET['page']==$i) ? 'selected' '';
 print 
"<option value='$i$sed>".($i+1)."</option>\n";
}
print 
"</select></form>";
?>

   
 
 автор: d1xi   (11.02.2007 в 21:35)   письмо автору
 
   для: bronenos   (11.02.2007 в 21:08)
 

Не так не пойдет!!!
Нужно без применения ява-скриптов!
И к тому же,у меня идут не записи,а файлы!

   
Rambler's Top100
вверх

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