我遇到从下拉列表中捕获值的问题。这是我的下拉列表代码,它是产品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值。
任何帮助都将不胜感激。
答案 0 :(得分: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 . '"';
UPDATE Part Deaux
并更改
ONCHANGE="location =this.options[this.selectedIndex].value;"
到
ONCHANGE="location = 'new_purchase.php?id=' + this.options[this.selectedIndex].value;"
答案 1 :(得分:0)
由于您没有提交表单而只是更改window.location
您的POST阵列将为空。相反,你应该阅读GET参数,而不是POST:
$id = $mysqli->real_escape_string($_GET['id']);
答案 2 :(得分: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列的整数,对吧?所以它是数据类型的不匹配。