За последние 24 часа нас посетили 17690 программистов и 1597 роботов. Сейчас ищут 1507 программистов ...

Files and folders. HELP!!!

Тема в разделе "Прочие вопросы по PHP", создана пользователем Desantnik, 21 июл 2006.

  1. Desantnik

    Desantnik Активный пользователь

    С нами с:
    21 июл 2006
    Сообщения:
    6
    Симпатии:
    0
    Как узнать кол-во папок в директории?
    Я вот что пытаюсь сделать:

    $dir_tek=$dir_main."/".$i;
    opendir($dir_tek);
    $kol_files=0;
    while ($f=readdir($dir_tek))
    { if (($f!=".") && ($f!=".."))
    $kol_files++;
    }
    closedir($dir_tek);
    if ($kol_files<10)
    { $folder=$dir_tek;
    $a=$kol_files;
    break;
    }

    И ещё, как правильно указывать пути к папкам? Если так
    $dir_msg=$_SERVER["DOCUMENT_ROOT"]."/data/msg";
    то
    Warning: readdir(): supplied argument is not a valid Directory
    Помогите пожалуйста.
     
  2. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    is_dir -- Определает, является ли файл директорией
    Описание
    bool is_dir ( string filename )


    Возвращает TRUE, если файл существует и является директорией. Если filename - это относительное имя файла, оно будет проверено относительно текущей рабочей директории.
     
  3. Desantnik

    Desantnik Активный пользователь

    С нами с:
    21 июл 2006
    Сообщения:
    6
    Симпатии:
    0
    А через какие слеши указывать путьк папке
    $a=$_SERVER["DOCUMENT_ROOT"]."/data/msg" или
    $b=$_SERVER["DOCUMENT_ROOT"]."\data\msg" или еще как.
    Я уже все перепробовал, все равно не находит-
    Warning: readdir(): supplied argument is not a valid Directory.
    Дома apache установлен под windows, а на серваке под Linux.
    Как путь прописать корректно?
     
  4. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    PHP понимает любые слеши
     
  5. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Не, юниксовый php не понимает "\", а виндовый понимает оба. Так что лучше использовать "/".
     
  6. X-Cray

    X-Cray Активный пользователь

    С нами с:
    10 июл 2006
    Сообщения:
    255
    Симпатии:
    0
    Адрес:
    Москва
    Desantnik,

    у тебя страшная ошибка в коде:

    Код (Text):
    1.  
    2. //Неправильно
    3. $dir_tek=$dir_main."/".$i;
    4. opendir($dir_tek);
    5. $kol_files=0;
    6. while ($f=readdir($dir_tek))
    7. [...]
    8.  
    9. closedir($dir_tek);
    10.  
    11.  
    12. //Правильно
    13.  
    14. $dir_tek=$dir_main."/".$i;
    15. $dir_handler=opendir($dir_tek);  //как и при открытии файла ты должен запомнить указатель
    16. $kol_files=0;
    17. while ($f=readdir($dir_handler)) //и использовать его при чтении
    18. [...]
    19.  
    20. closedir($dir_handler);
    А слеши использовать только "/".

    Узнаем кол-во папок и файлов:

    Код (Text):
    1.  
    2. $dir_tek=$dir_main."/".$i;
    3. $dir_handler=opendir($dir_tek);
    4. $kol_files=0;
    5. $kol_dirs=0;
    6. while ($f=readdir($dir_handler))
    7.    if ($f!='..' && $f!='.')
    8.       if (is_dir($dir_tek.'/'.$f)) //если папка
    9.          $kol_dirs++; //считаем папки
    10.       else //иначе это файл (кто не верит, проверит :) )
    11.          $kol_files++; //считаем файлы
    12.  
    13. closedir($dir_handler);
     
  7. Desantnik

    Desantnik Активный пользователь

    С нами с:
    21 июл 2006
    Сообщения:
    6
    Симпатии:
    0
    Я совсем загнался или пхп тупит. Пишет что не может открыть поток и записать в файл. Ф-ция такого рода.
    function save()
    { $folder=""; # =1 - номер папки
    $file=""; # =0 - в ней файлов
    # берем их из файла без ошибок
    $fp=fopen($_SERVER["DOCUMENT_ROOT"]."/data/tek.txt","r");
    $folder=fgets($fp,100);
    $file=fgets($fp,100);
    fclose($fp);
    $file=$file+1;
    #создаем файл"1.txt"
    $fp=fopen($_SERVER["DOCUMENT_ROOT"]."/data/msg/".$folder."/".$file.".txt","w");
    fputs($fp,"bla bla bla");
    fclose($fp);
    }
    В итоге
    Warning: fopen(C:/site/www/data/msg/1 /1.txt) [function.fopen]: failed to open stream: Invalid argument in C:\site\www\guest.php on line 91
    Warning: fputs(): supplied argument is not a valid stream resource in C:\site\www\guest.php on line 92
     
  8. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    появился пробел