opendir()

3 отговора 102 прегледа
#1

opendir()

Имам директория images и в нея както се сещате има картинки. Искам списък на тези картинки и той да бъде във формата на pull-down menu.

За да взема списъка с файловете в тази директория, използвам следния код:

$handle=opendir(".");
while ($file = readdir($handle))
{
if(is_file($file)) $filelist[] = $file;
}
closedir($handle);

после си правя един цикъл за менюто и всичко е ОК, но само когато файла със този скрипт е в същата тази директория images.

На мен обаче това меню със списъка на изображенията ми трябва като include във един друг файл от друга директория. При положение, че този скрипт се намира във
catalog/images/ftp.php а на мен ми трябва това меню във файла catalog/admin/add.php
пробвам разни възможности от вида:

opendir("$DOCUMENT_ROOT/catalog/images");

// в този случай създава празно меню

или

opendir("../catalog/images");

// в този случай изкарва тази грешка по отношение на реда на който се намира горния код:

Warning: OpenDir: Invalid argument (errno 22)

Къде ми е грешката?

Отговор
в отговор на burov #2

Documentation rullz

readdir
(PHP 3, PHP 4 )
readdir -- read entry from directory handle

.
.
.


Example 1. List all files in a directory

// Note that !== did not exist until 4.0.0-RC2
<?php
if ($handle = opendir('/path/to/files')) {
echo "Directory handle: $handle\n";
echo "Files:\n";

/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}

/* This is the WRONG way to loop over the directory. */
while ($file = readdir($handle)) {
echo "$file\n";
}


closedir($handle);
}
?>

Отговор
в отговор на burov #3

Oshte

opendir s argument $DOCUMENT_PATH ne raboti na windows mashini, varhu unix bazirani niama nikakvi problemi.

Отговор
в отговор на xc #4

документацията

Да, първо трябва да се чете документацията а после да се задават въпроси. Ако останат въпроси без отговори. А в документацията всичко си пише. За всички които може би някога ще имат нужда от подобно решение, ето и окончателния код, който използвам:

<?php
if ($handle = opendir('images')) {

echo "
<select name=picture>
<option value=no.jpg>no image</option>";

while (false !== ($file = readdir($handle))) {
if($file=="." or $file=="..") continue;

echo "<option value=$file>$file </option>\n";

}
echo "</select>";
closedir($handle);
}
?>

Много хитро е измислено: пишеш в addressbar-a:
[линк] (напр. [линк] ) и информацията изкача.

Отговор