Web-мастер: курс молодого бойца

Вывод файлов в таблицу в три колонки

 Страницы: 1 | 2 | 3
 

 Добавлено 2008-10-12 17:16:43
evgenijj
Модератор




Сообщений: 1371
Зарегистрирован: 09.11.2007

Цитировать
Snic пишет:
единственно чего тут не хватает, это табличного вывода по колонкам.
Издеваешься? Что еще не понятно? Вот часть массива, которая выводится на текущей странице:
<?php
// Получаем часть массива
$filearray $dir->getFileArraySlice( ($page-1)*PERPAGEPERPAGE);

foreach( 
$filearray as $value) {
  
$path $dir->getDirectoryName().'/'.$value;
  echo 
'<img src="'.$path.'" alt="" />'."\n";
}
?>
А вот код, который позволяет вывести картинки в таблице:
<?php
// Массив $files содержит файлы, которые надо вывести в таблице
$count count$files );
$rows floor($count 3);
$mod $count 3;
echo 
'<table border="1">';
for ( 
$i 0$i $rows$i++ ) {
  echo 
'<tr>';
  echo 
'<td>'.$files[$i*3].'</td><td>'.$files[$i*1].'</td><td>'.$files[$i*2].'</td>';
  echo 
'</tr>'
}
if ( 
$mod != ) {
  echo 
'<tr>';
  if ( 
$mod == ) echo '<td>'.$files[$count 1].'</td><td>&nbsp;</td><td>&nbsp;</td>';
  if ( 
$mod == ) echo '<td>'.$files[$count 2].'</td><td>'.$files[$count 1].'</td><td>&nbsp;</td>';
  echo 
'</tr>';
}
echo 
'</table>';
?>
Трудно сложить два + два?


Денежные купюры пронумерованы для того, чтобы когда-нибудь я мог сложить их все одну к одной, по порядку.
Наверх  Посмотреть профиль   Сайт автора  

 Добавлено 2008-10-13 08:03:00
Snic


Сообщений: 242
Зарегистрирован: 18.12.2007

Цитировать
жек, я об этом сразу догадался, просто у меня возникла проблема с подсчётом, и соответственно неправильный вывод

<?php
// количество изображений на странице
define'PERPAGE');
$directory 'save';
$dir = new DirectoryItems($directory);
// Отфильтровываем все файлы, которые не являются изображениями
$dir->filter();
// Сортируем картинки
$dir->indexOrder();
// Общее количество изображений в директории
$totalCount $dir->getCount();
// Текущая страница
if ( isset( $_GET['page'] ) )
  
$page $_GET['page'];
else
  
$page 1;
$numPages ceil($totalCount/PERPAGE);
if ( 
$page $page 1;
if ( 
$page $numPages $page $numPages;
// Получаем часть массива
$filearray $dir->getFileArraySlice( ($page-1)*PERPAGEPERPAGE);
echo 
'<table border="1">';
foreach( 
$filearray as $value) {
$path[] = $dir->getDirectoryName().'/'.$value;
$count count$path );
$rows floor($count 3);
$mod $count 3;
for ( 
$i 0$i $rows$i++ ) {
  echo 
'<tr>';
  echo 
'<td>'.$path[$i*3].'</td><td>'.$path[$i*1].'</td><td>'.$path[$i*2].'</td>';
  echo 
'</tr>'
}
if ( 
$mod != ) {
  echo 
'<tr>';
  if ( 
$mod == ) echo '<td>'.$path[$count 1].'</td><td>- - -</td><td>- - -</td>';
  if ( 
$mod == ) echo '<td>'.$path[$count 2].'</td><td>'.$path[$count 1].'</td><td>- - -</td>';
  echo 
'</tr>';
}
}
echo 
'</table>'

// Создавать постраничную навигацию есть смысл, только если
// есть больше одной страницы
if($numPages 1) {
  
// Создаем навигатор
  
$nav = new PageNavigator($totalCountPERPAGE$page);
  echo 
$nav->getNavigator();
}

class 
DirectoryItems {
  private 
$filearray = array();
  private 
$directory;

  public function 
__construct($directory) {
    
$this->directory $directory;
    if ( 
is_dir($directory) ) {
      
$d opendir$directory ) or die("Failed to open directory.");
      while ( 
false !== ($f readdir($d)) ) {
        if( 
is_file($directory.'/'.$f) ) {
          
$this->filearray[] = $f;
        }
      }
      
closedir($d);
    } else {
      die(
"Must pass in a directory.");
    }
  }

  public function 
__destruct(){
    unset(
$this->filearray);
  }

  public function 
getDirectoryName(){
    return 
$this->directory;
  }
   
  public function 
indexOrder(){
    
sort($this->filearray);
  }

  public function 
getCount() {
    return 
count($this->filearray);
  }

  public function 
getFileArray() {
    return 
$this->filearray;
  }
   
  public function 
getFileArraySlice($start$numberitems) {
    return 
array_slice($this->filearray$start$numberitems);
  }

  
// исключить из массива все элементы с недопустимым расширением
  
public function filter(){
    
$extensions = array("jpg""jpeg""gif""png");
    foreach (
$this->filearray as $key => $value) {
      
$ext substr($value,(strpos($value".")+1));
      
$ext =  strtolower($ext);
      if(!
in_array($ext$extensions)){
        unset(
$this->filearray[$key]);
      }
    }
  }   
}

class 
PageNavigator {
  
// общее число страниц, необходимых для вывода всего списка изображений
  
private $totalpages;
  
// число изображений на одной странице
  
private $recordsperpage;
  
// текущая страница
  
private $currentpage
  
// текст для навигации
  
private $strfirst 'Первая';
  private 
$strlast 'Последняя';
 
  public function 
__construct($totalrecords$recordsperpage 10$currentpage 1){
    
$this->totalrecords $totalrecords;
    
$this->recordsperpage $recordsperpage;
    
$this->currentpage $currentpage;   
    
$this->setTotalPages($totalrecords$recordsperpage);
  }
  
// Возвращает HTML код навигатора
  
public function getNavigator(){
    
$strnavigator '<div>'."\n";
    
// Ссылка "Первая страница"   
    
if($this->currentpage != 1) {
      
$strnavigator .= $this->createLink(1$this->strfirst);
      
$strnavigator .= ' ... ';
    }
    
// Две страницы назад + текущая страница + две страницы вперед
    
for($i $this->currentpage 2$i <= $this->currentpage 2$i++) {
      if(
$i or $i $this->totalpages) continue;
      if(
$i == $this->currentpage) {
        
$strnavigator .= '<b>';
        
$strnavigator .= $i;
        
$strnavigator .= '</b>'."\n";
      } else {
        
$strnavigator .= $this->createLink($i$i);
      }
      if (
$i != $this->totalpages$strnavigator .= ' | ';
    }
    
// Ссылка "Последняя страница"   
    
if($this->currentpage != $this->totalpages){
      
$strnavigator .= ' ... ';
      
$strnavigator .= $this->createLink($this->totalpages$this->strlast);
    }
    
$strnavigator .= '</div>'."\n";
    return 
$strnavigator;
  }
 
  private function 
createLink($offset$strdisplay ){
    
$strtemp '<a href="'.$_SERVER['PHP_SELF'].'?page='.$offset.'">'.$strdisplay.'</a>'."\n";
    return 
$strtemp;
  }
  
// всего страниц
  
private function setTotalPages($totalrecords$recordsperpage){
    
$this->totalpages ceil($totalrecords/$recordsperpage);
  }
}
?>



Лень - двигатель прогресса, имхо :)
Наверх  Посмотреть профиль    

 Добавлено 2008-10-13 10:21:19
evgenijj
Модератор




Сообщений: 1371
Зарегистрирован: 09.11.2007

Цитировать
Вот рабочий вариант (см. файл вложения):
<?php
// количество изображений на странице
define'PERPAGE'10 );
$directory './files/images/1/small';
$dir = new DirectoryItems($directory);
// Отфильтровываем все файлы, которые не являются изображениями
$dir->filter();
// Сортируем картинки
$dir->indexOrder();
// Общее количество изображений в директории
$totalCount $dir->getCount();
// Текущая страница
if ( isset( $_GET['page'] ) )
  
$page $_GET['page'];
else
  
$page 1;
$numPages ceil($totalCount/PERPAGE);
if ( 
$page $page 1;
if ( 
$page $numPages $page $numPages;
// Получаем часть массива
$filearray $dir->getFileArraySlice( ($page-1)*PERPAGEPERPAGE);

foreach( 
$filearray as $value) {
  
$path[] = $dir->getDirectoryName().'/'.$value;
}

$count count$path );
$rows floor($count 3);
$mod $count 3;
echo 
'<table border="1" cellpadding="2" cellspacing="0">';
for ( 
$i 0$i $rows$i++ ) {
  echo 
'<tr>';
  echo 
'<td><img src="'.$path[$i*3].'" alt="" /></td><td><img src="'.$path[$i*1].'" alt="" /></td><td><img src="'.$path[$i*2].'" alt="" /></td>';
  echo 
'</tr>'
}
if ( 
$mod != ) {
  echo 
'<tr>';
  if ( 
$mod == ) echo '<td><img src="'.$path[$count 1].'" alt="" /></td><td>&nbsp;</td><td>&nbsp;</td>';
  if ( 
$mod == ) echo '<td><img src="'.$path[$count 2].'</td><td><img src="'.$path[$count 1].'" alt="" /></td><td>&nbsp;</td>';
  echo 
'</tr>';
}
echo 
'</table>'

// Создавать постраничную навигацию есть смысл, только если
// есть больше одной страницы
if($numPages 1) {
  
// Создаем навигатор
  
$nav = new PageNavigator($totalCountPERPAGE$page);
  echo 
$nav->getNavigator();
}

class 
DirectoryItems {
  private 
$filearray = array();
  private 
$directory;

  public function 
__construct($directory) {
    
$this->directory $directory;
    if ( 
is_dir($directory) ) {
      
$d opendir$directory ) or die("Failed to open directory.");
      while ( 
false !== ($f readdir($d)) ) {
        if( 
is_file($directory.'/'.$f) ) {
          
$this->filearray[] = $f;
        }
      }
      
closedir($d);
    } else {
      die(
"Must pass in a directory.");
    }
  }

  public function 
__destruct(){
    unset(
$this->filearray);
  }

  public function 
getDirectoryName(){
    return 
$this->directory;
  }
   
  public function 
indexOrder(){
    
sort($this->filearray);
  }

  public function 
getCount() {
    return 
count($this->filearray);
  }

  public function 
getFileArray() {
    return 
$this->filearray;
  }
   
  public function 
getFileArraySlice($start$numberitems) {
    return 
array_slice($this->filearray$start$numberitems);
  }

  
// исключить из массива все элементы с недопустимым расширением
  
public function filter(){
    
$extensions = array("jpg""jpeg""gif""png");
    foreach (
$this->filearray as $key => $value) {
      
$ext substr($value,(strpos($value".")+1));
      
$ext =  strtolower($ext);
      if(!
in_array($ext$extensions)){
        unset(
$this->filearray[$key]);
      }
    }
  }   
}

class 
PageNavigator {
  
// общее число страниц, необходимых для вывода всего списка изображений
  
private $totalpages;
  
// число изображений на одной странице
  
private $recordsperpage;
  
// текущая страница
  
private $currentpage
  
// текст для навигации
  
private $strfirst 'Первая';
  private 
$strlast 'Последняя';
 
  public function 
__construct($totalrecords$recordsperpage 10$currentpage 1){
    
$this->totalrecords $totalrecords;
    
$this->recordsperpage $recordsperpage;
    
$this->currentpage $currentpage;   
    
$this->setTotalPages($totalrecords$recordsperpage);
  }
  
// Возвращает HTML код навигатора
  
public function getNavigator(){
    
$strnavigator '<div>'."\n";
    
// Ссылка "Первая страница"   
    
if($this->currentpage != 1) {
      
$strnavigator .= $this->createLink(1$this->strfirst);
      
$strnavigator .= ' ... ';
    }
    
// Две страницы назад + текущая страница + две страницы вперед
    
for($i $this->currentpage 2$i <= $this->currentpage 2$i++) {
      if(
$i or $i $this->totalpages) continue;
      if(
$i == $this->currentpage) {
        
$strnavigator .= '<b>';
        
$strnavigator .= $i;
        
$strnavigator .= '</b>'."\n";
      } else {
        
$strnavigator .= $this->createLink($i$i);
      }
      if (
$i != $this->totalpages$strnavigator .= ' | ';
    }
    
// Ссылка "Последняя страница"   
    
if($this->currentpage != $this->totalpages){
      
$strnavigator .= ' ... ';
      
$strnavigator .= $this->createLink($this->totalpages$this->strlast);
    }
    
$strnavigator .= '</div>'."\n";
    return 
$strnavigator;
  }
 
  private function 
createLink($offset$strdisplay ){
    
$strtemp '<a href="'.$_SERVER['PHP_SELF'].'?page='.$offset.'">'.$strdisplay.'</a>'."\n";
    return 
$strtemp;
  }
  
// всего страниц
  
private function setTotalPages($totalrecords$recordsperpage){
    
$this->totalpages ceil($totalrecords/$recordsperpage);
  }
}
?> 



Денежные купюры пронумерованы для того, чтобы когда-нибудь я мог сложить их все одну к одной, по порядку.
Наверх  Посмотреть профиль   Сайт автора Отредактировано автором 13.10.2008

 Добавлено 2011-04-01 12:35:34



Сообщений: 1
Зарегистрирован: 01.04.2011

Цитировать
Ребят помогите ламеру, как в выше приведенный код добавить еще две колонки? что бы было пять.

Мой вариант: естевственно нерабочий.

<?
$count 
count$path ); 
$rows floor($count 5); 
$mod $count 5
echo 
'<table border="1" cellpadding="2" cellspacing="0">'
for ( 
$i 0$i $rows$i++ ) { 
  echo 
'<tr>'

  echo 
'
<td><img src="'
.$path[$i*5].'" alt="" /></td>
<td><img src="'
.$path[$i*1].'" alt="" /></td>
<td><img src="'
.$path[$i*2].'" alt="" /></td>
<td><img src="'
.$path[$i*3].'" alt="" /></td>
<td><img src="'
.$path[$i*4].'" alt="" /></td>';

  echo 
'</tr>';

if ( 
$mod != ) { 
  echo 
'<tr>'

  if ( 
$mod == ) echo '
<td><img src="'
.$path[$count 1].'" alt="" /></td>';

  if ( 
$mod == ) echo '
<td><img src="'
.$path[$count 2].'" alt="" /></td>
<td><img src="'
.$path[$count 1].'" alt="" /></td>';

  if ( 
$mod == ) echo '
<td><img src="'
.$path[$count 4].'" alt="" /></td>
<td><img src="'
.$path[$count 3].'" alt="" /></td>';
  echo 
'</tr>'


echo 
'</table>'

?>
Наверх  Посмотреть профиль   Отредактировано автором 03.04.2011

 Добавлено 2019-04-14 00:17:50


Цитировать
http://loveawake.ru/ - Знакомства Nor Zeyt&#039;un. Сайт знакомств Nor Zeyt&#039;un бесплатно, без регистрации, для серьезных отношений.
Наверх Незарегистрированный пользователь  
 Страницы: 1 | 2 | 3
 
Быстрый ответ
 
Цвет шрифта: Закрыть все теги
Сообщение
Защитный код