|
|
|
| Вопрос наверняка к 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 - рисунок (скриншот к карте) и вывести все циклом.
Подскажите как отсортировать? Заранее благодарен! | |
|
|
|
|
|
|
|
для: night_charter
(05.04.2006 в 14:49)
| | Чего-то пока не очень понятна логика построения карты... | |
|
|
|
|
|
|
|
для: 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 в 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 в 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:29)
| | Я наверно уже как флудер выгляжу.
Извините если что не так ;)
Вообщем вышеуказанный код необходимо разбить постранично, по 20-30 карт настраницу. Реально это сделать? Если да, то как? | |
|
|
|
|
|
|
|
для: Night_Charter
(05.04.2006 в 17:42)
| | Господа!!!
Мой вопрос все еще в силе ;)
Я всегда работаю с mysql а тут с файлами столкнулся...
Даже незная как сделать из этого кода постраничную навигацию. | |
|
|
|
|
|
|
|
для: Night_Charter
(06.04.2006 в 09:20)
| | Для организации тут постраничной навигации - элементы следует поместить в массив, а далее воспользоваться скриптом в разделе "Примеры PHP" - http://www.softtime.ru/scripts/pager.php. | |
|
|
|
|
|
|
|
для: cheops
(06.04.2006 в 13:21)
| | Спасибо за подсказку, уже справился.
Топик можно закрывать! | |
|
|
|