За последние 24 часа нас посетили 22585 программистов и 1020 роботов. Сейчас ищут 678 программистов ...

неправильная дирректория

Тема в разделе "PHP для новичков", создана пользователем Alexus, 1 авг 2018.

  1. Alexus

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

    С нами с:
    1 май 2018
    Сообщения:
    64
    Симпатии:
    2
    Всем доброго времени суток, в особенности тем, кому не спится ) есть проблема хочу в цикле из массива выводить фото из файлов на экран при компиляции из sublime проблем не возникает и все отображается правильно, но вот браузер начинает ругаться что я нахожусь не в той директории, пытался подменить директорию вручную но не помогает вот текст если есть у кого идеи как разрешить ситуацию буду признателен )

    <?php
    $i=0;
    $handle=opendir("../foto/");
    while($files = readdir($handle)){
    if ($files !== '.' && $files !== '..'){
    $mass[$i] = $files;
    $i++;
    }
    }
    ?>
    <div class="row">
    <?php
    for ($i=1;$i<=sizeof($mass);$i++){
    (string)$path="../foto/".$i.".jpg";
    $foto = [
    ['path' => "$path",'name' => "$i"]
    ];
    foreach ($foto as $item){
    echo <<<HEREDOC
    <a href="$item[path]" target="_blank"><img class="portfolio" src="$item[path]" alt="$item[name]"</a>\n
    HEREDOC;
    }
    }
    ?>
    </div>
    <div class="head">Модные стрижки 2018</div><br />
    <video class="video" src="../video/strigki.mp4" frameborder="0" allowfullscreen controls></video> <br>
    --- Добавлено ---
    проблема исчезает если вместо sizeof($mass) указывать число втупую, но мне необходимо через админку делать добавление, поэтому для меня это не вариант..
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    так у вас два скрипта пхп друг за другом просто включаются..... второй ничего не знает о результатах работы первого... и вообще какой то бред.. почему в одном нельзя все сделать - зачем два цикла?
    PHP:
    1. <div class="row">
    2. <?php
    3. $handle=opendir("../foto/");
    4. while($files = readdir($handle)){
    5. if ($files !== '.' && $files !== '..'){
    6. $mass[$i] = $files;
    7. (string)$path="../foto/".$i.".jpg";
    8. $foto = [
    9. ['path' => "$path",'name' => "$i"]
    10. ];
    11. foreach ($foto as $item){
    12. echo <<<HEREDOC
    13. <a href="$item[path]" target="_blank"><img class="portfolio" src="$item[path]" alt="$item[name]"</a>\n
    14. HEREDOC;
    15. $i++;
    16. }
    17. }
    18. ?>
     
  3. Alexus

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

    С нами с:
    1 май 2018
    Сообщения:
    64
    Симпатии:
    2
    Спасибо за корректировку скрипта, я просто не так давно язык осваиваю и не легко дается.. Добавляю по мере освоения новой темы.. и делаю все раздельно по частям чтобы не запутаться. Я скопипастил этот скрип к себе попробовал но в браузере ошибка та же..

    Warning: opendir(../foto/,../foto/): �� ������ ����� �������� ����. (code: 2) in W:\domains\sveta.php\pages\portfolio.php on line 4

    Warning: opendir(../foto/): failed to open dir: No such file or directory in W:\domains\sveta.php\pages\portfolio.php on line 4

    Warning: readdir() expects parameter 1 to be resource, boolean given in W:\domains\sveta.php\pages\portfolio.php on line 5
     
  4. Alexus

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

    С нами с:
    1 май 2018
    Сообщения:
    64
    Симпатии:
    2
    Изменил скрипт по принципу проще некуда, но ошибка та же
    <?php
    $d = "../foto/";
    $handle=opendir($d);
    while($files = readdir($handle)){
    if ($files == '.' or $files == '..'){
    continue;
    }
    echo <<<HEREDOC
    <a href="$d$files" target="_blank"><img class="portfolio" src="$d$files" alt=""</a>\n
    HEREDOC;
    }
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Вам же все написали. Нет такого каталога. Соответственно в $handle фигня.
    --- Добавлено ---
    Вы от чего считаете? chdir используете?
     
  6. Alexus

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

    С нами с:
    1 май 2018
    Сообщения:
    64
    Симпатии:
    2
    Воспользовался chdir, часть ошибок пропала но все равно не получаю нужный результат, возможно причина в том, что PHP неправильно реагирует на обратный / в конце, или проблема в том что файл includ'ится в основной файл из начальной директории, в общем я совсем запутался (
     
  7. Alexus

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

    С нами с:
    1 май 2018
    Сообщения:
    64
    Симпатии:
    2
    chdir меняет директорию выдает true, но при попытке открыть ее через opendir и читать с нее через readdir возникает ошибка
     
  8. Alexus

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

    С нами с:
    1 май 2018
    Сообщения:
    64
    Симпатии:
    2
    Ура я разобрался! оказывается браузер после include файла из другого каталога и из редактора находятся в разных директориях, спасибо добрым людям на форуме http://forum.php.su/topic.php?forum=75&topic=2559!
    chdir(__DIR__); решил проблему! :)