如何使用数据库中的值创建HTML下拉列表

时间:2017-05-03 07:08:19

标签: php html mysql database

我有这样的MySQL数据库表:

Id   Value
1    Etc1
2    Etc2
3    Etc3
4    Etc4

我需要实现HTML列表,就像从上面的表中动态填充数据一样:

<select>
   <option value="1">Etc1</option>
   <option value="2">Etc2</option>
   <option value="3">Etc3</option>
   <option value="4">Etc4</option>
</select>

使用PHP我可以做类似的事情:

$sql = "SELECT Id, Value FROM Tbl";
$result = mysql_query($sql);

echo "<select>";
while ($row = mysql_fetch_array($result)) {
    echo "<option value='" . $row['Id'] ."'>" . $row['Value'] ."</option>";
}
echo "</select>";

但是在这种情况下,我无法使用HTML扩展,这意味着我的网站地址将是:

www.mysite.com/something/index.php

而不是:

www.mysite.com/something/

也许这听起来很傻,但让用户访问PHP文件是一种好习惯吗?我认为更好的方法是当用户重定向到HTML文件时。 (我不知道如果重定向到PHP文件有任何真正的缺点,但在重定向到.../something/而不是.../something/index.php等HTML文件时效果会更好

或者我应该手动编写HTML下拉列表而无需访问数据库?

请提供正确的方法。

4 个答案:

答案 0 :(得分:2)

从安全角度来看,允许用户访问PHP文件是不错的做法。

删除扩展程序可能更漂亮,但它与安全性无关。即使您通过.htaccess重写URL,或者如果您通过Ajax获取值,因为两者都已建议,您仍然可以访问PHP文件。
唯一的区别是上诉 - 如果这对你很重要,隐藏扩展,但你仍然会访问PHP文件 - 如果你想通过PHP获取选项值(没有什么不好的),没有办法解决它

答案 1 :(得分:1)

这里有两种情况

  1. 如果你想创建index.php

    然后你可以使用htaccess来允许用户使用.html或domain for index.php

  2. 如果您要创建index.html

    然后你可以使用ajax下拉。 (在这种情况下,如果你想允许用户输入index.php那么你必须遵循第一种方法)

答案 2 :(得分:1)

我对你究竟想要什么感到疑惑......但是,让我试着解释一下。

1 - 根据您的说法,如果网址为.html,则表示它指向某个www.mysite.com/something/index.php文件&amp;如果URL类似于www.mysite.com/something/,则它指向PHP文件。

所以,我想在这里说... .htaccess并不意味着它指向任何HTML文件。它也可以是PHP文件。您可以通过在button.title(for: .normal) 文件中进行更改来实现此目的。

2 - “允许用户访问PHP文件的良好做法”。

对于您正在访问的文件类型没有任何安全问题,无论是PHP还是HTML,它都不会产生任何安全问题。

3 - 关于动态或静态创建下拉菜单...这一切都取决于您的要求&amp;用例。如果这些下拉列表总是保持不变,那么也许你不需要将这些数据保存在DB&amp;从DB中获取以构建它。但是,如果它可以根据您的业务规则在不同的情况下更改..您可以从DB获取此信息将是正确的事情。通过这种方式,您可以避免自己在代码中进行任何类型的硬编码。

答案 3 :(得分:0)

如果要创建静态网站,则不使用数据库。但如果您正在进行动态网站,则必须使用数据库。在我看来,如果你是否显示php文件,这无关紧要。

<select name="..." >
<?php 
$select = $db->query("SELECT * FROM table");
while($row=$select->fetch_assoc()):
?>
<option value="<?php echo $row['id']; ?>><?php echo $row['value']; ?></option>
<?php endwhile; ?>
</select>