从文本文件中填充HTML下拉菜单

3

我有一个下拉菜单,其中包含硬编码的值:

<select name="value" id="value">
  <option value="A">A</option>
  <option value="B">B</option>
  <option value="C">C</option>
  <option value="D">D</option>
</select>

我想要加载一个文本文件来填充值。文本文件中每个值都在新的一行上。

values.txt

A
B
C
D

我尝试过这个:

<select>
    <?php
    if ($file = @fopen('values.txt', 'r')) {
        while(($line = fgets($file)) !== false) {
            echo "<option>{$line}</option>";
        }
        fclose($file);
    }
?>
</select>

但是当我这样做时,下拉菜单中没有选项。如有帮助将不胜感激。谢谢!

您可能没有读取文件的权限。我复制并粘贴了您的代码,它可以正常工作。如果您使用的是Unix系统,您可以执行“sudo chmod 744 values.txt”。 - ksealey
摆脱 @ fopen,这样你就可以看到任何错误。只使用 fopen() - Rohit
@ksealey 我正在使用Windows 7操作系统。程序后面有JavaScript代码,可以很好地读取csv文件,因此我认为这不可能是权限问题。谢谢您的建议。 - CdSdw
@Rohit 我去掉了 @,但没有注意到任何错误。 - CdSdw
1个回答

2
您可以创建一个列表的数组元素。
$filename = 'values.txt';
$eachlines = file($filename, FILE_IGNORE_NEW_LINES);//create an array
echo '<select name="value" id="value">';
foreach($eachlines as $lines){
    echo "<option>{$lines}</option>";
}
echo '</select>';

我刚刚尝试了你的代码,但是下拉菜单仍然没有任何内容... :( - CdSdw
@CdSdw 给出文件名的完整路径。 - Amit Ray
花括号语法不能与单引号一起使用。 - Midas
@Midas 非常感谢,同时向 CdSdw 表示抱歉,因为单引号的问题。 - Amit Ray
1
嗯,我觉得这可能是我对HTML的新手不熟悉,但是当我使用<!DOCTYPE html><html lang="en"><body>(your code)</body></html>创建一个新的HTML文件时,当我打开HTML文件时屏幕上唯一显示的是字面文本"; foreach($eachlines as $lines){ echo "{$lines}"; } echo ""; ?>...我不确定为什么回声被字面地显示出来。我把所有的单引号都改成了双引号以确保安全。 - CdSdw
@CdSdw 因为你的文件扩展名不是 PHP!在 HTML 中,你不能使用 PHP 标签。 - Ivan Barayev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接