PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
viktor6
Отправлено: 30 Июня, 2010 - 19:15:09
Новичок
Покинул форум
Сообщений всего: 15
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
уважаемые гуру поправьте скрипт который делает сканирует содержимое папки и выводит на страничку ссылки на эти файлы. У меня это все получилось в один столбик а хотелось чтобы они както отделялись по месяцам и както компактно было не гуляло свободное место на страничке
файли в таком виде лежат в папке
2010.03.07.htm
2010.03.08.htm
,
,
2010.06.29.htm
2010.06.30.htm
PHP:
скопировать код в буфер обмена
<?
echo ( "<meta http-equiv=\" Content-Type\" content=\" text/html; charset=windows-1251\" />" ) ;
echo ( "<title>» Логи сервера Plusnet</title>" ) ;
echo ( "<h1 align=center>Логи сервера Plusnet:</h1>" ) ;
echo ( "<body style=\" background-color: rgb(204, 204, 204); color: rgb(0, 0, 0);\" oncopy=\" return false\" alink=\" #ee0000\" link=\" #0000ee\" vlink=\" #551a8b\" >" ) ;
echo ( "<body bgcolor=\" white\" text=\" black\" link=\" red\" vlink=\" red\" alink=\" green\" background=\" bg.gif\" >" ) ;
echo ( "<td><p align=\" center\" >[<a href=\" http://cs.datasvit.ks.ua\" >Home</a>] [<a href=\" http://forums.vik.datasvit.ks.ua/forumdisplay.php?f=140\" >Forum</a>]</p></td>" ) ;
echo ( "<hr>" ) ;
function getFiles( $path ) {
//Function takes a path, and returns a numerically indexed array of associative arrays containing file information,
//sorted by the file name (case insensitive). If two files are identical when compared without case, they will sort
//relative to each other in the order presented by readdir()
$i = 0 ;
while ( ( $file = readdir ( $dh ) ) !== false ) { if ( $file == "." || $file == ".." || $ext != "htm" ) continue ;
$fullpath = $path . "/" . $file ;
$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 ;
}
} else die ( "Cannot open directory: $path " ) ; } else die ( "Path is not a directory: $path " ) ; sort ( $fileNames , SORT_STRING
) ; $i = 0 ;
foreach ( $fileNames as $f ) $sortedFiles [ $i ++ ] = $files [ $f ] ;
return $sortedFiles ;
}
$files = getFiles( "./" ) ;
foreach ( $files as $file ) print "<center><b><a href=\" $file[name] \" >$file[name] </a></b><br></center>\n " ;
?>
(Отредактировано автором: 30 Июня, 2010 - 19:20:57)
Uchkuma
Отправлено: 30 Июня, 2010 - 19:59:42
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010
Откуда: Киров
Помог: 6 раз(а)
В общем вот. Разделение по месяцам, как вы хотели. Файлы в массиве вроде отсортированы, так что все должно вывести правильно.
PHP:
скопировать код в буфер обмена
foreach ( $files as $file ) {
//$year = substr($file, 0, 4);
$month = substr ( $file , 5
, 2
) ; //месяц
# Если пошел другой месяц, вставляем разделитель <hr>
if ( empty ( $cur_month ) OR
$cur_month == $month ) $separator = '' ; else $separator = '<hr>' ; $cur_month = $month ;
echo "$separator <a href=\" $file[name] \" >$file[name] </a><br>" ;
}
Если вы хотите сделать в несколько столбцов, то вывод файлов надо заключить в таблицу, а в качестве разделителя использовать </td><td>.
viktor6
Отправлено: 01 Июля, 2010 - 13:52:42
Новичок
Покинул форум
Сообщений всего: 15
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Uchkuma пишет: В общем вот. Разделение по месяцам, как вы хотели. Файлы в массиве вроде отсортированы, так что все должно вывести правильно.
PHP:
скопировать код в буфер обмена
foreach ( $files as $file ) {
//$year = substr($file, 0, 4);
$month = substr ( $file , 5
, 2
) ; //месяц
# Если пошел другой месяц, вставляем разделитель <hr>
if ( empty ( $cur_month ) OR
$cur_month == $month ) $separator = '' ; else $separator = '<hr>' ; $cur_month = $month ;
echo "$separator <a href=\" $file[name] \" >$file[name] </a><br>" ;
}
Если вы хотите сделать в несколько столбцов, то вывод файлов надо заключить в таблицу, а в качестве разделителя использовать </td><td>.
Изменения не увидел изменилось только то что теперь оно слева стало а раньше по средине
Да хотелось бы чтобы было несколько столбцов + чтобы каждый столбик отнсился к определенному месяцу
Uchkuma
Отправлено: 01 Июля, 2010 - 14:38:52
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010
Откуда: Киров
Помог: 6 раз(а)
Вы так сделали?
PHP:
скопировать код в буфер обмена
echo '<table><tr><td>' ; //начинаем таблицу, в которую будут вставляться файлы
foreach ( $files as $file ) {
//$year = substr($file, 0, 4);//пригодится, если будем делить по годам
$month = substr ( $file , 5
, 2
) ; //достаем месяц из имени файла
# Если пошел другой месяц, вставляем разделитель $separator
//разделитель '</td><td>' закрывает текущий столбец и открывает новый
if ( empty ( $cur_month ) OR
$cur_month == $month ) $separator = '' ; else $separator = '</td><td>' ; $cur_month = $month ;
echo "$separator <a href=\" $file[name] \" >$file[name] </a><br>" ; //выводим очередной файл
}
echo '</td></tr></table>' ; //заканчиваем таблицу
Каждый новый месяц будет в новом столбце.
(Добавление)
Вы хоть немножко в код вникаете? :) Щас проставлю комментарии.(Отредактировано автором: 01 Июля, 2010 - 14:51:13)
viktor6
Отправлено: 01 Июля, 2010 - 14:44:10
Новичок
Покинул форум
Сообщений всего: 15
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
вот как
PHP:
скопировать код в буфер обмена
<?
echo ( "<meta http-equiv=\" Content-Type\" content=\" text/html; charset=windows-1251\" />" ) ;
echo ( "<title>» Логи сервера Plusnet</title>" ) ;
echo ( "<h1 align=center>Логи сервера Plusnet:</h1>" ) ;
echo ( "<body style=\" background-color: rgb(204, 204, 204); color: rgb(0, 0, 0);\" oncopy=\" return false\" alink=\" #ee0000\" link=\" #0000ee\" vlink=\" #551a8b\" >" ) ;
echo ( "<body bgcolor=\" white\" text=\" black\" link=\" red\" vlink=\" red\" alink=\" green\" background=\" bg.gif\" >" ) ;
echo ( "<td><p align=\" center\" >[<a href=\" http://cs.datasvit.ks.ua\" >Home</a>] [<a href=\" http://forums.vik.datasvit.ks.ua/forumdisplay.php?f=140\" >Forum</a>]</p></td>" ) ;
echo ( "<hr>" ) ;
function getFiles( $path ) {
//Function takes a path, and returns a numerically indexed array of associative arrays containing file information,
//sorted by the file name (case insensitive). If two files are identical when compared without case, they will sort
//relative to each other in the order presented by readdir()
$i = 0 ;
while ( ( $file = readdir ( $dh ) ) !== false ) { if ( $file == "." || $file == ".." || $ext != "htm" ) continue ;
$fullpath = $path . "/" . $file ;
$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 ;
}
} else die ( "Cannot open directory: $path " ) ; } else die ( "Path is not a directory: $path " ) ; sort ( $fileNames , SORT_STRING
) ; $i = 0 ;
foreach ( $fileNames as $f ) $sortedFiles [ $i ++ ] = $files [ $f ] ;
return $sortedFiles ;
}
$files = getFiles( "./" ) ;
echo '<table><tr><td>' ;
foreach ( $files as $file ) {
//$year = substr($file, 0, 4);
$month = substr ( $file , 5
, 2
) ; //месяц
# Если пошел другой месяц, вставляем разделитель <hr>
if ( empty ( $cur_month ) OR
$cur_month == $month ) $separator = '' ; else $separator = '</td><td>' ; $cur_month = $month ;
echo "$separator <a href=\" $file[name] \" >$file[name] </a><br>" ;
}
echo '</td></tr></table>' ;
?>
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB