Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> просмотр директории, с возможностью скачивания файлов. 
:(
    Опции темы
welt
Дата 24.9.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround

Репутация: нет
Всего: нет



приветствую.
нужно написать такой скрипт:
есть папка например folder1
в ней лежат разные папки.
в каждой из этих папок лежат по немкольку mp3 файлов.
периодически в папку folder1 добавляюца папки содержащие mp3 файлы.
скрипт лежит в папке folder 1.
нужно чтобы он выводил содержимое каждой папки - т.е. список музыкальый файлов с возможностью их скачивания.
у меня вот такой срипт.
Код

      function paintUndersideOfFox($c = '.', $wcwd = false) {
        if($wcwd === false)
          $wcwd = substr($wcwd = $_SERVER['REQUEST_URI'], 0, strrpos($wcwd, '/') + 1);

        echo('<ul class="dirlist">');
        $d = opendir($c);
        while($f = readdir($d)) {
          if(strpos($f, '.') === 0) continue;

          $ff = $c . '/' . $f;
          echo '<li><a href="' . $wcwd . $ff . '">' . $f . '</a>';
          if(is_dir($ff)) paintUndersideOfFox($ff, $wcwd);
          echo '</li>';
        }
        echo('</ul>');
      }

и вызываю я функцию так
Код

 paintUndersideOfFox('folder_x');

где folder_x имя папки в папке folder1.
но это неудобно, поскольку приходица каждый раз прописывать вызов этой функции для каждой новой папки.
можно ли как-то переписать функцию, чтобы она сама определяла папку, которая добавляется и отображала ее содержимое с возможностью скачать.
т.е.
чтобы была таблица состоящая из названия паки и списка имен файлов с ссылками на них.

PM MAIL   Вверх
Strilo4ka
Дата 24.9.2009, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



Код

<style type="text/css">
a:hover{
background-color: #FFFF00;}
text-decoration:none}
</style>

<?php

  function showlinks()
  {
  $dir = opendir(".");
  // В цикле проходимся по всем файлам и
  // подкаталогам
  while (($file = readdir($dir)) !== false)
  {
    // Обрабатываем только подкаталоги,
    if(is_dir($file))
    {
      // Исключаем текущий ".", родительский ".."
      if($file != "." && $file != "..")
      {
       $dirs_mp3[]=$file;
      }

    }

  }
  closedir($dir);

  //находим в каждой папке файлы и заносим в масив
  foreach ($dirs_mp3 as $name_dir)
  {
  $dir=opendir($name_dir);
    while (($file = readdir($dir)) !== false)
    {
     // Обрабатываем только файлы
     if(!is_dir($file))
     {
     $links_mp3[]=$name_dir."\\".$file; // если не виндовс $name_dir."/".$file;
     }
    }
  closedir($dir);
  }

  foreach ($links_mp3 as $our_link)
  {
  echo "<ul><li><a href='$our_link'>".basename($our_link)."</a><li></ul>";
  }
 }

 showlinks()
?>

PM ICQ   Вверх
Ипатьев
Дата 25.9.2009, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Код

Options +Indexes 

в .htaccess
PM MAIL   Вверх
welt
  Дата 25.9.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround

Репутация: нет
Всего: нет



функция выводит список всех вайлов из всех папок.
это почти то что нужно.
подскажите, а как сделать чтобы еще и название каждой папки выводилось ?
т.е. чтобы выводило таблицу :

название папки | список файлов в ней

спасибо.
PM MAIL   Вверх
Strilo4ka
Дата 25.9.2009, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



можно так:
Код

<style type="text/css">
a:hover{
background-color: #FFFF00;}
text-decoration:none}
</style>

<?php

  function showlinks()
  {
  $dir = opendir(".");
  // В цикле проходимся по всем файлам и
  // подкаталогам
  while (($file = readdir($dir)) !== false)
  {
    // Обрабатываем только подкаталоги,
    if(is_dir($file))
    {
      // Исключаем текущий ".", родительский ".."
      if($file != "." && $file != "..")
      {
       $dirs_mp3[]=$file;
      }

    }

  }
  closedir($dir);

  //находим в каждой папке файлы и заносим в масив
  foreach ($dirs_mp3 as $name_dir)
  {
  $dir=opendir($name_dir);
    while (($file = readdir($dir)) !== false)
    {
     // Обрабатываем только файлы
     if(!is_dir($file))
     {
     //формируем двомерный масив ключом есть названия папки ...
     $links_mp3[$name_dir][]=$name_dir."\\".$file; // если не виндовс $name_dir."/".$file;
     }
    }
  closedir($dir);
  }


  // виводим названия каталогов
  foreach ($links_mp3 as $dir_name => $value)
  {
  echo "<b>".$dir_name."</b>";
  //выводим нашы ссилки
   foreach ($links_mp3[$dir_name] as $our_link)
    {
    echo "<ul><li><a href='$our_link'>".basename($our_link)."</a><li></ul>";
    }
  }

 }

 showlinks()


?>


Добавлено через 3 минуты и 13 секунд
вот такой у меня результат в браузере получился (только я брал txt файлы но неважно только что написал ):

1
  *1.txt
  *2.txt
  *3.txt
2
  *22222.txt
3
  *4.txt
PM ICQ   Вверх
skyboy
Дата 26.9.2009, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



замечание на будущее: вместо opendir+readdir лучше использовать glob.
лаконичнее будет.
PM MAIL   Вверх
Strilo4ka
Дата 26.9.2009, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



согласен!!! Быстрее работать будет (наверно) и кода меньше!

Добавлено @ 02:01
хорошая функция, помню такую (ее использовал). Надо было фотки удалять когда их с базы вытаскивал в временную папку ! При последующем просмотре надо было все удалять . Только щас я задумался а что если много сразу на сайт зайдет...повлияет на роботу интересно?!, но ладно суть не в это этого поста!!!!

Код

function clear_f()
{

    if (strpos($_SERVER['PHP_SELF'],"admin")) $files=glob("../temp_photo/*.jpeg");
    else $files=glob("temp_photo/*.jpeg");
    if ($files==true)
    {

    //удаляем коли масив не пустий
    foreach($files as $val)
                {
                unlink($val);
                }
    }
}




Это сообщение отредактировал(а) Strilo4ka - 26.9.2009, 02:09
PM ICQ   Вверх
Ипатьев
Дата 26.9.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



В самой первой версии операционной системы MS-DOS не было каталогов. Все файлы лежали прямо в корне диска.
Интересно, зачем потом придумали каталоги, если их содержимое можно вывалить на одной странице...
PM MAIL   Вверх
Strilo4ka
Дата 27.9.2009, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



наверно чтоб разбить на категории(тематики), упорядочить... а то так мусорка получаэться!!!

Это сообщение отредактировал(а) Strilo4ka - 27.9.2009, 00:10
PM ICQ   Вверх
welt
  Дата 28.9.2009, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround

Репутация: нет
Всего: нет



спасибо.
а еще подскажите, как сделать чтобы скрипт задавал для каждого файла в каждой папке свое имя ?
т.е. например в первой паке файлы:
wer.mp3
zxc.mp3
tyu.mp3
т.е. в каждой папке будет xml файл в котором
будет название папки и файлов, которые должны отображаться.
Код

<title>новое название папки</title>
<files>
<filename>ivanov.mp3</filename>
<filename>petrov.mp3</filename>
<filename>sidorov.mp3</filename>

</files>

PM MAIL   Вверх
Ипатьев
Дата 28.9.2009, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



С таким XML файлом - никак. в нем нет соответствия старых имен и новых.И, непонятно, зачем XML файлом задавать. Сразу переименовать файлы будет значительно проще.

PM MAIL   Вверх
welt
Дата 28.9.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround

Репутация: нет
Всего: нет



а если использовать txt файл, то как ?
PM MAIL   Вверх
Ипатьев
Дата 28.9.2009, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



так же
PM MAIL   Вверх
welt
Дата 28.9.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround

Репутация: нет
Всего: нет



ну все-таки подскажите как это можно сделать ?
PM MAIL   Вверх
welt
  Дата 29.9.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround

Репутация: нет
Всего: нет



помогите вывести результат в таблицу.
как я понимаю для этого надо знать кол-во файлов в каждой папке.
чтобы таблица была такая:


Код

______________________________
|              |  abc.mp3    |
|              |  dfg.mp3    |
| werwrr       |  ghjg.mp3   |
|              |  fbnm.mp3   |
|              | ..........  |
|______________|_____________|
|              |  qwe.mp3    |
|              |  nmb.mp3    |
| gfhfgh       |  rty.mp3    |
|              |  uioo.mp3   |
|              | ........    |
|______________|_____________|
                и т.д.


PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0948 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.