За последние 24 часа нас посетили 17643 программиста и 1655 роботов. Сейчас ищут 950 программистов ...

проблема с функцией is_dir()

Тема в разделе "Прочие вопросы по PHP", создана пользователем silverIv, 27 мар 2009.

  1. silverIv

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

    С нами с:
    22 мар 2009
    Сообщения:
    4
    Симпатии:
    0
    Люди очень прошу помочь, 1,5 дня уже провозился и так и не смог понять в чем проблема!
    я вывожу массив (foreach ($showdir as $k => $shownfile)) файлов и папок - содержимого нужной директории, но мне нужно писать файлы отдельно, каталоги отдельно, чтоб их потом можно было отдельно обработать,
    так вот при применении (is_dir()) мне пишет, что каталог - это файл, кроме этого он пишет что каталоги это только директории выше и ниже, то есть такие ("..", "." )
    Проблема с функцией is_dir()

    ОС - Линукс Дебиан PHP 5.2
    помогите с кодом пожалуйста!)
     
  2. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    ну так выложи код
     
  3. silverIv

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

    С нами с:
    22 мар 2009
    Сообщения:
    4
    Симпатии:
    0
    ок, вот только думаю что у меня какая то проблема с самим пхп, потому что функции filesize и stat работаю тоже некорректно - только на директории(

    $adir='/var/www/all/music';
    $showdir=scandir($adir);
    echo "<form method=post action=choose.php><table>";

    $htmlcodecatst='<tr><td bgcolor="#CCCCCC">Это каталог</td><td bgcolor="#CCCCCC">';
    $htmlcodecatfsh='</td><td></td><td><input name=chk'.$k.' type="checkbox"></td></tr>';
    $htmlcodefilest='<tr><td></td><td>';
    $htmlcodefilefsh=' type="checkbox" CHECKED></td></tr>';

    foreach ($showdir as $k => $shownfile)
    {
    clearstatcache();
    if (!is_file($shownfile)) // здесь я пробовал и if (is_dir($shownfile))
    echo $htmlcodecatst.$shownfile.$htmlcodecatfsh;
    else
    {
    if ($shownfile[$k]=".."||$shownfile[$k]=".")
    {continue;}

    echo $htmlcodefilest.$shownfile.'</td><td>'.filesize($shownfile).'</td><td><input name=chk'.$k.$htmlcodefilefsh;


    }
    }
    echo "</table>";
    echo "<input type=submit></form>";

    то что выводит можете посмотреть на silveriv.selfip.com
     
  4. alBoo

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

    С нами с:
    27 мар 2008
    Сообщения:
    63
    Симпатии:
    0
    1. в is_file() и filesize нужно указывать абсолютный путь до файла
    2. проверка на .. и . идет не в том месте - это директории
    3. сама проверка - ошибка в синтаксисе = вместо ==
     
  5. EugeneTM

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

    С нами с:
    19 апр 2008
    Сообщения:
    85
    Симпатии:
    0
    а is_file в природе на кой существует?
     
  6. silverIv

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

    С нами с:
    22 мар 2009
    Сообщения:
    4
    Симпатии:
    0
    To alBoo,
    1. то есть, если я заявлю название переменной переменной (filesize($shownfile)||is_file($shownfile)), ни то ни другое не будет работать?
    2. Не могли бы вы дать пример кода, где она должна идти ? в самом начале. Просто мне нужно чтобы не высвечивало точки (директории выше и ниже), а только имена нужных каталогов и объявляло что это ДЕЙСТВИТЕЛЬНО КАТАЛОГИ, что скрипт не делает, а показывает, что все, кроме точек - это файлы(
    3. Это когда проверка на условие равны ли они точкам? Ну да - не прав)
    опять же , пример того, что выводит можно увидеть здесь (настоящую ссылку не знаю: можно ли здесь оставлять, так что оставляю ее без полного определения) silveriv.selfip.com - сервер работает почти всегда)
     
  7. silverIv

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

    С нами с:
    22 мар 2009
    Сообщения:
    4
    Симпатии:
    0
    Все работает, спасибо большое)) за подсказки))

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