【问题标题】:PHP option tag and arrayPHP 选项标签和数组
【发布时间】:2013-03-06 13:20:25
【问题描述】:

刚刚从事一个小型大学项目以开发电子商务网站。我已经获得了一些代码,我正在根据自己的需要进行更改。

我目前在让一些数组在选项和选择标记中工作时遇到问题。不同之处在于这些数组中的每一个都有一个与之相关的动作,例如,移动到另一个页面。

问题似乎是选项标签中没有使用此操作。如此处所示http://mkiddr.com/phptests/shopping/

这是我编辑前的原始代码:

<body>
<div id="wrapper">
<div id="header">
    <p><a href="index.php">Home</a> | Browse:
    <?php
        $q="SELECT c_id, c_name FROM sc_cat";
        $result = mysqli_query($_SESSION['conn'],$q);
        while ($row = mysqli_fetch_row($result)){
            echo "<a href='category.php?id=$row[0]'>$row[1]</a> ";
        }
        unset($q); //unset query variable
        mysqli_free_result($result); //free result
        ?>
</div>
<div id="content"><!-- note this is an opening tag -->

这是我编辑的代码(不起作用)

<body>
<div id="wrapper">
<div id="header">
    <p><a href="index.php">Home</a> | Browse:

    <select>
    <?php
        $q="SELECT CategoryID, CategoryName FROM ProductCategories";
        $result = mysqli_query($_SESSION['conn'],$q);
        while ($row = mysqli_fetch_row($result)){

            echo "<option value='category.php?id=".$row[0]."'>".$row[1]."</a></option>";
            //display categories

            }
        unset($q); //unset query variable
        mysqli_free_result($result); //free result
    ?>
    </select>

</div>
<div id="content"><!-- note this is an opening tag -->

如果有人能帮我们解决这个问题,我们将不胜感激!

【问题讨论】:

  • 你在&lt;/option&gt;之前有一个无关的&lt;/a&gt;
  • 即使这只是一个大学项目,也要警惕 sql 注入。使用参数化程序。我刚刚运行了这个并得到了你所有产品的列表http://mkiddr.com/phptests/shopping/category.php?id=1 or 1=1。我本可以轻松地运行类似http://mkiddr.com/phptests/shopping/category.php?id=1;DROP TABLE ProductCategories;-- 的东西并毁掉你所有的辛勤工作。见bobby-tables.com
  • @Matt Kidd Uhm,为什么选择 Simon 的答案是正确的 - 据我所知,您正在使用我的解决方案
  • 非常感谢凯文。这实际上是我的标准的一部分,我只是专注于把所有东西放在一起。但是,您确实节省了我寻找弱点的时间!

标签: php html arrays select option


【解决方案1】:

问题是选项标签没有“动作”可以执行。您必须使用 javascript 将用户重定向到所选选项。将 SELECT 标记更改为

<select onchange="window.location = this.value;">

【讨论】:

  • excellent 似乎在某种程度上做到了这一点...正如您在选择 Mens_Accessories 时看到的 mkiddr.com/phptests/shopping 它会将您带到正确的类别但是选择不会显示正确的标题。第一类似乎也反应迟钝。知道为什么会这样吗?
  • 当然,只需更改 echo " ";
  • 太棒了!太好了,非常感谢。编码不是我的事!虽然我开始掌握窍门......
【解决方案2】:

尝试将您的 while 循环换成以下内容:

   while ($row = $result->fetch_row()) {

        echo "<option value='category.php?id=".$row[0]."'>".$row[1]."</a></option>";
        //display categories

        }

看看这是否可行

正如@Stormherz 提到的,要在选择时自动加载,您需要将 onclick 方法放置在选择标签上的选项中;

【讨论】:

  • 有什么区别?您刚刚从功能界面切换到 OO 界面,但它们是等价的。
  • excellent 似乎在某种程度上做到了这一点...正如您将看到 mkiddr.com/phptests/shopping 在选择 Mens_Accessories 时它会将您带到正确的类别但是选择不会显示正确的标题.第一类似乎也反应迟钝。知道为什么会这样吗?
  • 第一个没有响应,因为它已经在值上,因此没有更改事件,您需要在前面添加另一个选项,例如 但是将此留在循环之外
  • 你的意思是选择不会显示正确的标题,你的意思是下拉菜单中的选项?这是在你按下选择之前还是在下一页之后
  • 太棒了,再次非常感谢。我觉得我没有看到这个很愚蠢!所有排序:)
猜你喜欢
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多