Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр 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>=1 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 Яндекс.Метрика Яндекс цитирования