【问题标题】:How to make HTML dropdown list with values from database如何使用数据库中的值制作 HTML 下拉列表
【发布时间】:2017-09-30 21:24:42
【问题描述】:

我有这样的 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 下拉列表吗?

请给我正确的方法。

【问题讨论】:

  • 试试 .htaccess 或者你也可以使用 ajax
  • 你可以使用.htacces来改变url
  • 我什么都不懂
  • 我在这里很困惑。 .htaccess 与下拉列表有什么关系?为什么这个问题被赞成?
  • 标题不反映问题。也许像“在你的 URL 中包含 '.php' 是不是很糟糕?”或“如何避免在 URL 中包含 '.php'?”?

标签: php html mysql database


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这里有两种情况

    1. 如果你想创建 index.php

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

    2. 如果要创建 index.html

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

    【讨论】:

    • 感谢您的回答,但是我的主页呢?如果我使用过www.mysite.com/index.html,我可以通过www.mysite.com 访问主页,但如果我使用www.mysite.com/index.php.htaccess 那样的PHP 删除PHP 扩展,我将需要像www.mysite.com/index 这样访问主页?如何直接访问主页(www.mysite.com)并使用 PHP 文件?
    • @Infinity 您还可以为 www.mysite.com/index 创建规则以访问 www.mysite.com/index.php
    • 但是进入www.mysite.com的时候需要访问www.mysite.com/index.php。我怎样才能实现它?
    【解决方案3】:

    我对你关于你到底想要什么的问题有点困惑......但是,让我试着解释一下。

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

    所以,我想在这里说的...www.mysite.com/something/ 并不意味着它指向任何 HTML 文件。它也可以是一个 PHP 文件。您可以通过在 .htaccess 文件中进行更改来做到这一点。

    2 - “让用户访问 PHP 文件的好习惯”。

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

    3 - 关于动态或静态创建下拉菜单...这完全取决于您的要求和用例。如果这些下拉列表始终保持不变,那么您可能不需要将这些数据保存在 DB 中并从 DB 中获取来构建它。但是,如果它可以根据您的业务规则在不同情况下发生变化..您可以从数据库中获取此信息将是正确的做法。这样,您可以避免自己在代码中进行任何形式的硬编码。

    【讨论】:

      【解决方案4】:

      如果您正在创建静态网站,则可以不使用数据库。但如果您正在做一个动态网站,您必须使用数据库。在我看来,是否显示 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>
      

      【讨论】:

        猜你喜欢
        • 2011-12-22
        • 2021-04-28
        • 1970-01-01
        • 2020-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-27
        • 1970-01-01
        相关资源
        最近更新 更多