【问题标题】:PHP Get value from drop down option (int) typePHP从下拉选项(int)类型中获取值
【发布时间】:2013-05-03 19:23:11
【问题描述】:

我在从下拉列表中捕获值时遇到问题。这是我的下拉列表代码,即产品 ID。

<select name="id" id="id" ONCHANGE="location =this.options[this.selectedIndex].value;" >
<option value="---">---</option>
<?php
    foreach( $products as $ID => $info ){
    echo '<option value="new_purchase.php?id=' . $ID . '"';
    echo isset( $id ) && $id == $ID ? ' selected="selected"' : '';
    echo '>' . $info['id'] . '</option>'; }                                                         
                        ?>
</select>

这是我获取价值的代码。

 $id = $mysqli->real_escape_string ($_POST['$("#id:selected").val()'] );

查询运行,但无论我选择什么,它都将 0 存储为产品 ID 值。

任何帮助将不胜感激。

【问题讨论】:

    标签: php javascript jquery mysql sql


    【解决方案1】:

    您正在混合 PHP 和 JavaScript。您只需要 $_POST 数组中的表单字段名称:

    $id = $mysqli->real_escape_string($_POST['$("#id:selected").val()']);
    

    应该是:

    $id = $mysqli->real_escape_string($_POST['id']);
    

    更新

    改变

    echo '<option value="new_purchase.php?id=' . $ID . '"';
    

    echo '<option value="' . $ID . '"';
    

    更新 Part Deaux

    改变

    ONCHANGE="location =this.options[this.selectedIndex].value;"
    

    ONCHANGE="location = 'new_purchase.php?id=' + this.options[this.selectedIndex].value;"
    

    【讨论】:

    • 当你做var_dump($_POST);时你看到了什么?
    • 它显示 ["id"]=> string(21) "new_purchase.php?id=6"。我认为这是它如何获取整个地址而不是数字的问题
    • 还有什么意思:onchange => location.href = 5?
    • 它不会,但它似乎不会影响基于提供的 var_dump 发送或接收表单数据..
    • 我尝试了更新版本。它给了我 404 页面错误,因为当您选择产品 ID 时。它会自动使用与该 ID 关联的产品信息填写页面。
    【解决方案2】:

    由于您没有提交表单而只是更改了window.location,因此您的 POST 数组将为空。相反,您应该阅读 GET 参数,而不是 POST:

    $id = $mysqli->real_escape_string($_GET['id']);
    

    【讨论】:

      【解决方案3】:

      试试这个:

      <select name="id" id="id" ONCHANGE="location ='http://site.com/new_purchase.php?id='+this.options[this.selectedIndex].value;" >
      <option value="---">---</option>
      <?php
         foreach( $products as $ID => $info ){
           echo '<option value="'.$ID .'"';
           echo isset( $id ) && $id == $ID ? ' selected="selected"' : '';
           echo '>' . $info['id'] . '</option>'; }                                                         
                          ?>
      </select>
      

      我猜你的数据库期望产品 id 列的整数,对吧?所以这是数据类型的不匹配。

      【讨论】:

      • 正如我上面评论的那样。当您选择产品 id 时,地址将更改为 abc.com/new_purchase.php?id=6 并刷新页面以填写与 id 相关的信息。如果我使用你的代码,它会给我地址 abc.com/6 这是 404 错误。
      • 改变这个东西:location =this.options[this.selectedIndex].value;location ='abc.com/new_purchase.php?id='+this.options[this.selectedIndex].value;
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 2021-03-04
      相关资源
      最近更新 更多