[英]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.