使用foreach迭代PHP的下拉列表

使用foreach迭代PHP的下拉列表,php,html,Php,Html,全部 我有一个小问题:我想制作一个动态下拉列表,我写了以下内容: <select name='categoryID' > <?php foreach( $categories as $category)?> <option value="<?php echo $category['id']?>"> <?php echo $category['name'] ?></option> </select>

全部

我有一个小问题:我想制作一个动态下拉列表,我写了以下内容:

<select name='categoryID' >
    <?php foreach( $categories as $category)?>
    <option value="<?php echo $category['id']?>"> <?php echo $category['name'] ?></option>
</select>
问题是foreach不能正常工作:只输入1次。我需要标记,当我转储类别列表时,它会显示所有项目。有什么建议可以解释为什么会发生这种情况?这是制作下拉列表的正确方法吗

全部代码:

您忘记为


你忘了给它加括号了


你只有一排,因为你还没有关闭你的布雷基特

注意:我发现它非常容易使用,foreach/../:endforeach

附言

我不太确定我是否有权在这里写这篇文章,但我查看了您的代码,发现了一些问题:

1您在使用结果的确切文件中与DB有连接。这可能适合你的情况。不太清楚。 通常的做法是将逻辑和表示已获取数据的层分开

2您使用的是自PHP 5.5.0以来就不推荐使用的mysql

从PHP5.5.0开始,此扩展已被弃用,并将在中删除 未来


您可以使用PDO或MySQLi来代替mysql。

您只得到一行,因为您还没有关闭您的breckets

注意:我发现它非常容易使用,foreach/../:endforeach

附言

我不太确定我是否有权在这里写这篇文章,但我查看了您的代码,发现了一些问题:

1您在使用结果的确切文件中与DB有连接。这可能适合你的情况。不太清楚。 通常的做法是将逻辑和表示已获取数据的层分开

2您使用的是自PHP 5.5.0以来就不推荐使用的mysql

从PHP5.5.0开始,此扩展已被弃用,并将在中删除 未来


您可以使用PDO或MySQLi来代替mysql。

如果省略大括号,则循环中将只执行foreach语句后的第一条语句。添加大括号以确保所有echo语句都已执行。另外,请使用mysqli而不是mysql函数,因为它们会贬值。你也可以在互联网上读一点关于DAB的内容,这很有帮助。如果省略大括号,循环中将只执行foreach语句后的第一条语句。添加大括号以确保所有echo语句都已执行。另外,请使用mysqli而不是mysql函数,因为它们会贬值。你也可以在互联网上读一点关于DAB的内容,这很有帮助。
<?php foreach( $categories as $category): ?>
    <option value="<?php echo $category['id']; ?>"> <?php echo $category['name']; ?></option>
<?php endforeach; ?>
<select name='categoryID' >
    <?php foreach( $categories as $category){?>
    <option value="<?= $category['id']?>"> <?= $category['name'] ?></option>
    <?php } ?>
</select>