使用MySQL数据库和PHP填充表单

时间:2009-05-31 14:41:47

标签: php mysql

我正在考虑使用我的PHP应用程序进行下一步并使选项字段动态化。这将为更多自动化打开大门。

我在整个项目中都有下拉菜单,它们用于选择特定用户,并在添加新用户时手动更新它们(这也是一个手动过程)。但是,如果我采取第一步并使这些下拉菜单由MySQL数据库填充,那么我可以继续进行动态用户创建。

我知道如何实现这一目标,但我对其他一些替代方案感到好奇(如果有的话)。

这是我要做的......

$query = ** MySQL Select * From Database Query **

echo '<select name="usernames">';

while($row == mysql_fetch_array($query))
{
     echo '<option>' . $row['username'] . '</option>';
}

echo '</select>';

所以我的问题是,你会这样做吗?为什么?谢谢!

4 个答案:

答案 0 :(得分:1)

你的方式很好,但有两件事需要改变:
- 在所有回显的HTML上运行htmlentities()或htmlspecialchars()以避免XSS。除非您已经在数据库输入时对其进行了清理,但我发现这种做法很愚蠢。 /> - 为每个value标记添加<option>属性,否则您将无法检索所选的用户名。我建议使用用户名的相应ID或该用户独有的其他内容。如果它是一个字符串,也可以使用htmlentities / htmlspecialchars。

答案 1 :(得分:1)

你正在做的事情会很好。我喜欢把它变成一个函数,这样如果我需要在另一个页面上下拉,我就不必再写很多代码了。

function userDD()
{
   $query = ** MySQL Select * From Database Query **
   $html = '<select name="usernames">';

   while($row == mysql_fetch_array($query))
   {
        $html .= '<option>' . $row['username'] . '</option>';
   }

   $html .= '</select>';

   return $html;
}

此代码完全符合您的代码所做的操作,但它确实使用了echo。相反,您使用变量($ html)来存储所有数据,然后在完成后返回它。

答案 2 :(得分:1)

php文件

$users = getUsers();

include('template.tpl');

模板

<select name="username">
<?php foreach( $users as $user ): ?>
    <li><?= e( $user['username'] ) ?></li>
<?php endforeach; ?>
</select>

e是一个逃避字符串以阻止xss攻击的函数

答案 3 :(得分:0)

我不会在与输出相同的文档中放置SQL查询...

我将在函数中创建一个包含所有SQL查询的文档,并包含该文件。只是为了让事情分开。