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

Форум PHP

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

 

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

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

тема: Помощь по доработке скрипта (постраничная навигация)
 
 автор: Oleg77   (26.03.2015 в 19:15)   письмо автору
 
 

Здравствуйте, форумчане!

Вот есть код постраничной навигации, в котором используется один файл, из которого берутся данные:

<?php
  // Имя файла
  $dir = 'dir';
  //
  $lines = scandir($dir);
  
  // Число позиций на странице
  $pnumber = 3;
 
  // Удаляем все пробельные символы в конце строк
   array_walk($lines, 'trim_array');

  // Проверяем передан ли номер текущей страницы
  if(isset($_GET['page'])) $page = $_GET['page'];
  else $page = 1;
  // Число страниц
  $total = count($lines);
  $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 $lines[$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;";
      }
    }
  }
?>



Не подскажете как его доработать, чтобы информация бралась из директории, в которой много файлов?
Вот код, который перебирает файлы из директории и выводит их на странице:

 foreach (glob ('dir/*.txt') as $f) {   
    $n++;   
    $files .=  '<a href="index.php?id='.$n.'">'.basename($f,'.txt').'</a><br>';    
} 

  echo $files. '<br><br>';
  //если был запрос файла, выводим его на странице  
if($id) {     
    $f = glob('dir/*.txt');   
    include $f[$id-1]; 
}



С уважением,
Олег

  Ответить  
 
 автор: Trianon   (26.03.2015 в 22:36)   письмо автору
 
   для: Oleg77   (26.03.2015 в 19:15)
 

проще будет написать заново.

  Ответить  
 
 автор: magic   (01.04.2015 в 22:57)   письмо автору
 
   для: Oleg77   (26.03.2015 в 19:15)
 

Посмотри вот этот скрипт
Хоть он и старенький, работает до сих пор на сайте.
Тут выводится в таблице 4х4, т.е. 16 изображений на страницу, внизу есть предыдущее и следующее.
Не знаю насчет нагрузки на сервер, фунция glob вроде сильно грузит сервер, если много файлов надо перебирать. У меня порядка где-то 100 фото может меньше, поэтому не чувствуется. Почитай в инете, по поводу этой функции много написано.
<table cellpadding="0" cellspacing="0">        
            <?php
            $spisok=glob("img/foto/*.{jpg}",GLOB_BRACE); // Смотрим директории с маленькими изображениями 
            $spisok1=glob("img/foto/b/*.{jpg}",GLOB_BRACE); // Смотрим директории с большыми изображениями
            sort($spisok);
            sort($spisok1);
            $pnumber=16; // Сколько изображений будет выводится на странице
            if(empty($_GET['start'])) 
            {
                $start=0;
                $a=0;
                for($i=0; $i<4; $i++)
                {
                    echo "<tr>";
                    for($y=0; $y<4; $y++, $a++)
                    {
                        echo "<td><a title=\"\" rel=\"1\" href=\"".$spisok1[$a]."\"><img src=\"".$spisok[$a]."\" alt=\"\"></a></td>";
                    }
                    echo "</tr>";
                }
            }
            else
            {
                $start=$_GET['start'];
                $a=$start;
                for($i=0; $i<4; $i++)
                {
                    echo "<tr>";
                    for($y=0; $y<4; $y++, $a++)
                    {
                        if(!empty($spisok[$a]))
                        {
                            echo "<td><a title=\"\" rel=\"1\" href=\"".$spisok1[$a]."\"><img src=\"".$spisok[$a]."\" alt=\"\"></a></td>";
                        }
                        else 
                        {
                            echo "<td>&nbsp;</td>";
                        }
                    }
                    echo "</tr>";
                }
            }
            ?>        
        <tr class="arrow">
            <td colspan="2" height="40">
                <?php
                 // выводим ссылки на переключение страниц
                 if($start!=0)
                 {
                     echo "<a title='Вернуться назад' href=http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?start=".($start-$pnumber)."><<< предыдущие</a>";
                 }
                 else echo "&nbsp;";
                 ?>
            </td>
            <td colspan="2">
                <?php
                 if(count($spisok)>$start+$pnumber)
                 {
                     echo "<a title='Смотреть дальше' href=http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?start=".($start+$pnumber).">следующие >>></a>";
                 }
                 else echo "&nbsp;";
                ?>
            </td>
        </tr>
        </table>

  Ответить