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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: rabota s katalogami

Сообщения:  [1-10]   [11-19] 

 
 автор: [CHOL]Scorpion   (29.07.2005 в 09:55)   письмо автору
 
   для: behrad   (28.07.2005 в 18:58)
 

дак и будет сбиваться. Ты же одномерный массив используешь. И при очередном проходе цикла перезаписываешь его.


мой вариант состоял в том, что:


$dir = "arhiv/";  // корневая папка в которой лежат остальные
exec ("ls ".$dir,$files); // теперь в массиве files лежат названия всех файлов и каталогов включая . и ..

for ($i=0; $i<count($files); $i++){
       if ($files[$i] != "." && $files[$i] != ".."){
           выполняем то что нужно
       }
}


Это я привёл пример получения содержимого дирректории.

Для твоих целей его можно модернизировать. Для начала ввести exec("find ".$dir,$allfiles); Массив $allfiles будет содержать индексы и названия всех файлов в указаной дирректории. Причём не одного уровня, а всех.

теперь. обходя локализованый массив $files нужно сапоставлять значение элемента с массивом $allfiles. Допустим тождество найдено. Теперь задача взять ключ элемента массива $allfiles и записать его в чекбокс.

Потом, когда наживаешь кнопочку для вывода только отмеченых файлов, выполнить команду find как показано выше, и во время обхода массива через while вывести только те элементы, ключь которых есть в массиве, образованом чекбоксами. (А можно и точно также через find и ls выводить, просто принтить опятьже только совпадения с содержимым чекбоксов)

----
Есть и другой способ, исключающий использование ls и всецело построеные на find. Но он гораздо сложнее с точки зрения реализации.

   
 
 автор: behrad   (28.07.2005 в 18:58)   письмо автору
 
   для: [CHOL]Scorpion   (28.07.2005 в 17:31)
 

u mniya vot problema shto ne mogu formirovat massiv iz imen filov i katalogov!
pri rekursi chetchik zbivaetsa !
a pro vash variant mojna po padrobne !
P.S. zaranee sposiba

   
 
 автор: [CHOL]Scorpion   (28.07.2005 в 17:31)   письмо автору
 
   для: behrad   (28.07.2005 в 16:34)
 

По поводу рекурсии, я тебе предложил вариант, ты им не воспользовался. Других вариантов у меня нет.

   
 
 автор: behrad   (28.07.2005 в 16:34)   письмо автору
 
   для: [CHOL]Scorpion   (28.07.2005 в 07:03)
 

ideya khorosha
nu est problema !
ya ne mogu zagnat imena filov i katalogov v massiv potomu shto idet rekursiya !!!
kak mne pro indeksivovat checkbox .
i eshe vapros kak mne vivesti viprannie checkbox-i .
vot cod katori ispolzou

if (isset($_POST['checkBox']))
{
  print_r($_POST);
 echo $Files = $_POST[checkBox'];
}
echo '<form method="post" action="">';

  scan_dir(".");
  //$i=0;
  function scan_dir($dirname)
  {
    $dir = opendir($dirname);
    while (($file = readdir($dir)) != false)
    {
      if($file != "." && $file != "..")
      {
        if(is_file($dirname."/".$file))
        {
                $STR=$dirname."/".$file;
                $arr=split('/',$STR);
                while(list($key,$value)= each ($arr))
                {
                echo '&nbsp;&nbsp; ';
                }
                echo '<input type="checkbox" name="checkBox" value="Che|'.$dirname."/".$file.'">'.$STR." - "."<br>";
        }
        if(is_dir($dirname."/".$file))
        {
                $STR=$dirname."/".$file;
                $arr=split('/',$STR);
                while(list($key,$value)= each ($arr))
                {
                echo '&nbsp;&nbsp;   ';

                }
         echo '<input type="checkbox" name="checkBox"  value="Che|'.$dirname."/".$file.'">'.$STR."<br>";

          scan_dir($dirname."/".$file,$fd,$fb);
        }
      }

    }
    closedir($dir);
  }
 echo '<input type="submit" value="Push">';
echo '</form>';

   
 
 автор: [CHOL]Scorpion   (28.07.2005 в 07:03)   письмо автору
 
   для: behrad   (27.07.2005 в 23:15)
 

Дубль два.

Я тут посидел, подумал, и за завтраком родилась такая идея. Прочитать все файлы и папки из каталога в виде одного массива. Для никсовых систем это команда find.

После этого каждый из каталогов формируем командой ls (это на мой взгляд лучше чем парсить результат выполнения find). И когда формируется файловое древо, записывать в checkbox индекс соответствующиего файла/каталока из массива возвращённого find. Таким образом мы избегаем многоуровневой системы идентификаторов.

Я надеюсь сама идея ясна ... При реализации конечно нужно учесть специфику проверок путей.

   
 
 автор: [CHOL]Scorpion   (28.07.2005 в 06:22)   письмо автору
 
   для: behrad   (27.07.2005 в 23:15)
 

Нехилый скриптик получится.

Это во первых нужно прочитать дирректорию, и выдав HTML код прописать в чекбокс как идентификатор объекта его индекс в массиве файлов. Тогда при выводе в цикле можно отфильтровывать мусор. А вот учитывая что тут ещё и подкаталоги ... У меня пока ступор по вопросу применения сего алгоритма для вложеных дирректорий. Еслиб их был один уровень внутри каталога, можно было бы ввести двухмерный массив в качестве имени чекбокса. А когда вложеных уровней больше одного, этот способ непреемлим.

   
 
 автор: behrad   (27.07.2005 в 23:15)   письмо автору
 
   для: cheops   (27.07.2005 в 23:00)
 

u filov i katalogov .
na primer vibran glavni katalog to vse ego pod katalog i fili i toje doljnio bit vibrani

   
 
 автор: cheops   (27.07.2005 в 23:00)   письмо автору
 
   для: behrad   (27.07.2005 в 22:58)
 

Так checkbox-ы должны быть только у файлов или у файлов и директорий?

   
 
 автор: behrad   (27.07.2005 в 22:58)   письмо автору
 
   для: cheops   (27.07.2005 в 22:54)
 

obizatelen checkbox , shtobi polzovatel mog odnavremeno vibrat neskolka filov !!
voi i vsa problema

   
 
 автор: cheops   (27.07.2005 в 22:54)   письмо автору
 
   для: behrad   (27.07.2005 в 22:42)
 

А обязателен ли checkbox - просто код с использованием сплава JavaScript+HTTP+PHP очень сложно отлаживать. Может просто каждая директория будет ссылкой, при нажатии на которую выводится её содержимое (поддиректории и файлы), а при нажатии на ссылку поддиректории будет выводится содержимое поддиректории?

   

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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