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

Форум 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>

  Ответить  
Rambler's Top100
вверх

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