Всем доброго времени суток, в особенности тем, кому не спится ) есть проблема хочу в цикле из массива выводить фото из файлов на экран при компиляции из 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) указывать число втупую, но мне необходимо через админку делать добавление, поэтому для меня это не вариант..
так у вас два скрипта пхп друг за другом просто включаются..... второй ничего не знает о результатах работы первого... и вообще какой то бред.. почему в одном нельзя все сделать - зачем два цикла? PHP: <div class="row"> <?php $handle=opendir("../foto/"); while($files = readdir($handle)){ if ($files !== '.' && $files !== '..'){ $mass[$i] = $files; (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; $i++; } } ?>
Спасибо за корректировку скрипта, я просто не так давно язык осваиваю и не легко дается.. Добавляю по мере освоения новой темы.. и делаю все раздельно по частям чтобы не запутаться. Я скопипастил этот скрип к себе попробовал но в браузере ошибка та же.. 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
Изменил скрипт по принципу проще некуда, но ошибка та же <?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; }
Вам же все написали. Нет такого каталога. Соответственно в $handle фигня. --- Добавлено --- Вы от чего считаете? chdir используете?
Воспользовался chdir, часть ошибок пропала но все равно не получаю нужный результат, возможно причина в том, что PHP неправильно реагирует на обратный / в конце, или проблема в том что файл includ'ится в основной файл из начальной директории, в общем я совсем запутался (
chdir меняет директорию выдает true, но при попытке открыть ее через opendir и читать с нее через readdir возникает ошибка
Ура я разобрался! оказывается браузер после include файла из другого каталога и из редактора находятся в разных директориях, спасибо добрым людям на форуме http://forum.php.su/topic.php?forum=75&topic=2559! chdir(__DIR__); решил проблему!