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

Форум PHP

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

 

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

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

тема: Сканируем и сортируем файлы из папки
 
 автор: night_charter   (05.04.2006 в 14:49)   письмо автору
 
 

Вопрос наверняка к cheops, врядли кто-нибудь другой справится с этой задачей.Неважно...
Есть код:

<?
function getFiles($path) {
   
$files = array();
   
$fileNames = array();
   
$i 0;
   
   if (
is_dir($path)) {
       if (
$dh opendir($path)) {
           while ((
$file readdir($dh)) !== false) {
               if (
$file == "." || $file == "..") continue;
               
$fullpath $path "/" $file;
               
$fkey strtolower($file);
               while (
array_key_exists($fkey,$fileNames)) $fkey .= " ";
               
$a stat($fullpath);
               
$files[$fkey]['size'] = $a['size'];
               if (
$a['size'] == 0$files[$fkey]['sizetext'] = "-";
               else if (
$a['size'] > 1024$files[$fkey]['sizetext'] = 

(
ceil($a['size']/1024*100)/100) . " K";
               else if (
$a['size'] > 1024*1024$files[$fkey]['sizetext'] = 

(
ceil($a['size']/(1024*1024)*100)/100) . " Mb";
               else 
$files[$fkey]['sizetext'] = $a['size'] . " bytes";
               
$files[$fkey]['name'] = $file;
               
$files[$fkey]['type'] = filetype($fullpath);
               
$fileNames[$i++] = $fkey;
           }
           
closedir($dh);
       } else die (
"Cannot open directory:  $path");
   } else die (
"Path is not a directory:  $path");
   
sort($fileNames,SORT_STRING);
   
$sortedFiles = array();
   
$i 0;
   foreach(
$fileNames as $f$sortedFiles[$i++] = $files[$f];
   
   return 
$sortedFiles;
}

$files getFiles("./maps");
foreach (
$files as $file) {
print 
"$file[name]<br>\n";
}
?> 

Этот код выводит мне список карт, которые находятся в папке MAPS.
Приведу пример:
012.jpg - Скриншот к карте 012.s2z
012.s2z - Карта 012.s2z
1.jpg - Скриншот к карте 1.s2z
1.s2z - Карта
И так далее... Вообщем надо сделать таблицу в которой будут две колонки:
1 - Название карты | 2 - рисунок (скриншот к карте) и вывести все циклом.
Подскажите как отсортировать? Заранее благодарен!

   
 
 автор: cheops   (05.04.2006 в 14:57)   письмо автору
 
   для: night_charter   (05.04.2006 в 14:49)
 

Чего-то пока не очень понятна логика построения карты...

   
 
 автор: Night_Charter   (05.04.2006 в 15:27)   письмо автору
 
   для: cheops   (05.04.2006 в 14:57)
 

Мне скрипт выводит:

012.jpg
012.s2z
1.jpg
1.s2z
2_meltdown.jpg
2_meltdown.s2z

Надо сделать с помощью цикла сортировку:

<table width=100%>
<tr>
<td width=40%>Карта: 012.s2z</td>
<td width=60%><img src=maps/012..jpg></td>
<tr>
<tr>
<td width=40%>Карта: 1.s2z</td>
<td width=60%><img src=maps/1.jpg></td>
<tr>
<tr>
<td width=40%>Карта: 2_meltdown.s2z</td>
<td width=60%><img src=2_meltdown/1.jpg></td>
<tr>

И так с каждыми двумя первыми строками...Всего у меня 450 карт.
Потом закрываем </table>

   
 
 автор: Night_Charter   (05.04.2006 в 16:17)   письмо автору
 
   для: Night_Charter   (05.04.2006 в 15:27)
 

Точнее так:
<table width=100%>

<tr> 
<td width=40%>Карта: 012.s2z</td> 
<td width=60%><img src=maps/012..jpg></td> 
</tr> 
<tr> 
<td width=40%>Карта: 1.s2z</td> 
<td width=60%><img src=maps/1.jpg></td> 
</tr> 
<tr> 
<td width=40%>Карта: 2_meltdown.s2z</td> 
<td width=60%><img src=2_meltdown/1.jpg></td> 
</tr> 

   
 
 автор: Night_Charter   (05.04.2006 в 17:29)   письмо автору
 
   для: Night_Charter   (05.04.2006 в 16:17)
 

Все получилось при помощи след. кода:

<?

function getFiles($path) {

   
$files = array();
   
$fileNames = array();
   
$i 0;
   
   if (
is_dir($path)) {
       if (
$dh opendir($path)) {
           while ((
$file readdir($dh)) !== false) {
               if (
$file == "." || $file == "..") continue;
               
$fullpath $path "/" $file;
               
$fkey strtolower($file);
               while (
array_key_exists($fkey,$fileNames)) $fkey .= " ";
               
$a stat($fullpath);
               
$files[$fkey]['size'] = $a['size'];
               if (
$a['size'] == 0$files[$fkey]['sizetext'] = "-";
               else if (
$a['size'] > 1024$files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " K";
               else if (
$a['size'] > 1024*1024$files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb";
               else 
$files[$fkey]['sizetext'] = $a['size'] . " bytes";
               
$files[$fkey]['name'] = $file;
               
$files[$fkey]['type'] = filetype($fullpath);
               
$fileNames[$i++] = $fkey;
           }
           
closedir($dh);
       } else die (
"Cannot open directory:  $path");
   } else die (
"Path is not a directory:  $path");
   
sort($fileNames,SORT_STRING);
   
$sortedFiles = array();
   
$i 0;
      
$fileNames = (preg_grep ("/[\w,\W]+\.[s2z.]/"$fileNames));
   foreach(
$fileNames as $f$sortedFiles[$i++] = $files[$f];
   
   return 
$sortedFiles;
}






$files getFiles("./maps");

echo 
"<table width=70%>";




foreach (
$files as $file) {





$par "<tr><td width=25%>Карта : <b>$file[name]</b></td><td width=75%><img src=maps/$file[name].jpg border=0 width=150 heifght=150></td></tr>";

$par str_replace("s2z.jpg""jpg"$par);

echo 
$par;
}

echo 
"</table>";

?> 

Файлы то называются одинаково, только раcширение разное s2z и jpg.

   
 
 автор: Night_Charter   (05.04.2006 в 17:42)   письмо автору
 
   для: Night_Charter   (05.04.2006 в 17:29)
 

Я наверно уже как флудер выгляжу.
Извините если что не так ;)
Вообщем вышеуказанный код необходимо разбить постранично, по 20-30 карт настраницу. Реально это сделать? Если да, то как?

   
 
 автор: Night_Charter   (06.04.2006 в 09:20)   письмо автору
 
   для: Night_Charter   (05.04.2006 в 17:42)
 

Господа!!!
Мой вопрос все еще в силе ;)
Я всегда работаю с mysql а тут с файлами столкнулся...
Даже незная как сделать из этого кода постраничную навигацию.

   
 
 автор: cheops   (06.04.2006 в 13:21)   письмо автору
 
   для: Night_Charter   (06.04.2006 в 09:20)
 

Для организации тут постраничной навигации - элементы следует поместить в массив, а далее воспользоваться скриптом в разделе "Примеры PHP" - http://www.softtime.ru/scripts/pager.php.

   
 
 автор: Night_Charter   (06.04.2006 в 14:54)   письмо автору
 
   для: cheops   (06.04.2006 в 13:21)
 

Спасибо за подсказку, уже справился.
Топик можно закрывать!

   
Rambler's Top100
вверх

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