代码之家  ›  专栏  ›  技术社区  ›  Chris Bier

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

  •  0
  • Chris Bier  · 技术社区  · 16 年前

    我正在考虑对我的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 回复  |  直到 16 年前
        1
  •  1
  •   Josh Curren    16 年前

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

    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
  •   Etienne Perot    16 年前

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

        3
  •  1
  •   Galen    16 年前

    PHP文件

    $users = getUsers();
    
    include('template.tpl');
    

    模板

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

    e是一个函数,它可以释放字符串以防止XSS攻击。

        4
  •  0
  •   KdgDev    16 年前

    我不会将SQL查询与输出放在同一文档中…

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