簡體   English   中英

用PHP數組填充HTML表單下拉菜單

[英]Populating a HTML form drop down menu with a PHP array

我正在嘗試使用當前目錄的內容填充HTML表單的下拉列表。 我試圖使用PHP的scandir()函數將這些文件輸出為數組,然后將其輸入HTML表單內的選項的value標記中。

我查看了SO上和外部可用的各種解決方案,但似乎沒有一種對我有用。

這是我的代碼現在的樣子:

<form action="" >
        <input type="submit" class="Links" value="Select Input">
        <select >               
            <?php 
                $dir="./inputfiles/"; 
                $filenames = scandir($dir); 
                foreach($filenames as $file){
                    echo '<option value="' . $filenames . '">' . $filenames . '</option>';
                    }
            ?>                      
        </select> 
</form> 

現在,我在下拉菜單中沒有任何選擇。

我對PHP還是很陌生,非常感謝您對如何進行這項工作提供反饋。


進一步的變化:

我嘗試了下面給出的解決方案,但似乎都沒有用。 我更改了代碼,以檢查PHP腳本是否能夠在html表單列表中輸出任何變量。

<form action="" >
        <input type="submit" class="Links" value="Select Input">
        <select >               
            <?php 
                  $someval = "Video";
                  echo '<option value="value"> ' . $someval .' </option>';
            ?>                      
        </select> 
</form>

它顯示'。 $ someval。 而不是菜單欄中的視頻

您必須在回顯中使用$file而不是$filenames 像這樣:

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

有關更多信息,請參見PHP foreach

遍歷數組時,需要使用$file進行串聯,而不是$filenames

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

如果inputfiles出現在同一目錄下,你應該使用的路徑: inputfiles/

您的腳本有幾個問題。

首先,您需要在選項中輸出正確的變量:

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

其次,您可能需要為添加檢測. ..在您的循環中,因為您可能不想輸出它們。 您可能還希望排除目錄。

第三,您可能應該明確說明您要掃描的目錄。 嘗試使用完整的文件路徑。 如果需要相對於當前正在執行的文件目錄的文件,則可以執行以下操作:

$dir= __DIR__ . DIRECTORY_SEPARATOR . 'inputfiles'; // no need for trailing slash

第四,您可能希望考慮使用DirectoryIterator之類的工具,為您提供一些更方便的方法來完成您想要做的事情(即在列出文件之前先確認它是實際文件)。 所以像這樣:

$dir= __DIR__ . DIRECTORY_SEPARATOR . 'inputfiles';
$iterator = new DirectoryIterator($dir);
foreach ($iterator as $fileinfo) {
    if($fileinfo->isFile()) {
        echo '<option value="' . $fileinfo->getFilename() . '">' . $fileinfo->getFilename() . '</option>';
    }
}

在這個簡單的示例中,使用DirectoryIterator不一定會帶來很多好處(但是節省了額外的代碼),但是我當然想指出它的用法,因為如果您需要開始執行類似顯示文件的操作大小,文件許可權,文件修改時間等。使用DirectoryIterator類(如果需要遞歸,則使用RecursiveDirectoryIterator類)比使用傳統的PHP文件系統功能要容易得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM