0

我在从下拉列表中捕获值时遇到问题。这是我的下拉列表代码,即产品 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 值。

任何帮助将不胜感激。

4

3 回答 3

3

您正在混合 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 . '"';

更新部分 Deaux

和改变

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

ONCHANGE="location = 'new_purchase.php?id=' + this.options[this.selectedIndex].value;"
于 2013-05-03T19:24:05.460 回答
0

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

$id = $mysqli->real_escape_string($_GET['id']);
于 2013-05-03T19:27:16.797 回答
0

尝试这个 :

<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 列的整数,对吗?所以这是数据类型的不匹配。

于 2013-05-03T19:44:46.657 回答