Заполнение выпадающего с именами файлов из каталога в PHP

0

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

Вот мой код, основанный на ссылке, которую я предоставил

<select name="templ" class="form-control input-sm">
    <?php 
         foreach(glob(dirname(__FILE__) . '/els-content/*') as $filename){
             $filename = basename($filename);
             echo "<option value='" . $filename . "'>".$filename. </option>";
         }
    ?>  
</select>

это не возвращает никаких значений вообще. В чем может быть проблема?

  • 0
    Проблема может заключаться в том, что "dirname ( FILE ). '/ Els-content / *'" не существует.
  • 0
    хм, это странно, я почти уверен, что каталог есть, но так как вы указали это, я собираюсь перепроверить его
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Привет, хорошо, поэтому я смог ответить на свой вопрос из-за того, что @bobdye указал, okayyy, я режусь на погоню, вот как это было решено

dirname(FILE) . '/els-content/*'

возвращает текущий каталог плюс строка '/els-content/*' которой связана моя проблема с файлами из els-контента, не отображается в моем раскрывающемся списке, поэтому я использовал echo чтобы проверить, что это значит, и я обнаружил, что он возвращает что-то вроде это

Users/WhosPC/Desktop/cms_form/myPadmin/els-content/*

в котором els-content FOUND OUTSIDE myPadmin означает, что els-content находится на том же уровне, что и my myPadmin поэтому я использовал chdir() затем использовал getcwd() внутри переменной

так что это выглядит так:

                   <?php
                        chdir('../');
                      $s =  getcwd();
                        ?>
                    <select name="templ" class="form-control input-sm">
                    <?php 
                           foreach(glob($s . '/els-content/*') as $filename){
                           $filename = basename($filename);
                           echo "<option value='" . $filename . "'>".$filename."</option>";

                        }
                    ?>  
                        </select>

хотя я не уверен, что chdir('../') и getcwd() достаточно надежны для такого рода задач. Когда этот cms-ребенок находится в реальном мире и работает

не стесняйтесь критиковать этот сценарий, чтобы я мог улучшить это

ОБНОВЛЕННЫЙ КОД

             $s =  realpath(getcwd()."/..");
                    foreach(glob($s . '/els-content/*') as $filename){
                   $filename = basename($filename);

                   echo "<option value='" . $filename . "'>". $filename."</option>";

                }

Ок, я не удалял 1-ю версию моего кода, чтобы пользователи, которые спотыкались на этот пост, могли видеть разницу 1-го и 2-го кода, которые @prodigitalson указали на мой 1-й фрагмент кода

  • 0
    Я бы просто использовал $s = realpath(__DIR__ .'/../els-content'); или dirname(__FILE__) вместо __DIR__ постоянной. Хотя вы хотели бы проверить, что realpath успешно вернул значение.
  • 0
    Привет @prodigitalson попробовал ваше предложение, но кажется, что оно не работает, проверьте мой код $s = realpath(__DIR__ .'/../els-content/'); foreach(glob($s . 'single-*.{php,html}', GLOB_BRACE) as $filename){ $filename = basename($filename); $bs = substr($filename, 0, strrpos($filename, '.')); $bs = substr($bs,-5); echo "<option value='" . $filename . "'>".ucfirst($bs)."</option>"; }
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню