Как создать ссылки в выпадающем списке, используя переменные PHP? - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу отобразить содержимое каталога и вставить его гиперссылки в раскрывающийся список. Вот мой код

<select>
    <?php
$dir = "/";

// Open a directory, and read its contents
if (is_dir($dir)){
  if ($dh = opendir($dir)){
    while (($file = readdir($dh)) !== false){
        $target = dirname($_SERVER['PHP_SELF']);
            $target=$target.$file;
            ?>
            <option value="<?php $target ?>"><?php $file ?></option>   
          <?php
         }    
    closedir($dh);
  }
}
?>
</select> 

Все, что я получаю, это пустой список.

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Я предлагаю вам использовать классы, чтобы обернуть логи c. : -)

<?php declare(strict_types=1);
final class Finder
{
    /** @var string */
    private $path;
    public function __construct(string $path)
    {
        $this->path = $path;
    }
    public function folderNames(): array
    {
        if (!is_dir($this->path)) {
            throw new \Exception('Path is not a directory');
        }
        if (!$directory = opendir($this->path)) {
            throw new \Exception('The directory can not be open');
        }
        $directories = [];
        while (($file = readdir($directory))) {
            if (is_dir($file)) {
                $directories[] = $file;
            }
        }
        return $directories;
    }
}
// Usage example:
$dropdown = new Finder($_SERVER['PHP_SELF']);
$directories = $dropdown->folderNames();
echo '<select>';
foreach ($directories as $directory):
    echo "<option value=\"{$directory}\">{$directory}</option>";
endforeach;
echo '</select>';

В идеале вы должны иметь часть «примера использования» в другом файле. Этот файл представляет собой шаблон, который получает список $directories, и шаблон просто должен его отобразить.

0 голосов
/ 29 апреля 2020

Не выводится значение:

<?php $target ?>

Вам нужно либо echo, либо использовать стенографию =. Например:

<option value="<?php echo $target; ?>"><?php echo $file; ?></option>

или:

<option value="<?= $target ?>"><?= $file ?></option> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...