我刚刚想出如何从mysql填充datalist元素。我需要获取与所选值相对应的关联ID以提交到另一个页面。我可以提交值,但我需要ID。我希望这是一个简单的语法错误,但我无法弄明白。 谢谢你。
<?php
require 'connect_mysqli.php';
$sql = "SELECT street FROM streets";
$result = mysqli_query($con, $sql) or die ("Error " . mysqli_error($con));
?>
<form action="new.php" name="test" method = "post">
<datalist id="street" name="streets">
<?php while($row = mysqli_fetch_array($result)) { ?>
<option value="<?php echo $row['street']; ?>"><?php echo $row['street_id']; ?></option>
<?php
}
?>
</datalist>
<input type="text" name="street" id="test" autocomplete="off" list="street">
<input type="submit" value="Submit">
<?php
mysqli_close($con);
?>
答案 0 :(得分:2)
查看您的查询:
$sql = "SELECT street FROM streets";
&#34;我希望这是一个简单的语法错误&#34;
您没有制作语法&#34;错误&#34;,您只是没有在查询中选择street_id
列,这就是为什么它&#39;关于$row['street_id']
,
您需要在查询中添加它:
$sql = "SELECT street, street_id FROM streets";
N.B。:列选择以逗号分隔。如果您愿意,可以进一步添加到查询中,但请确保在选择的最后一列之后没有尾随逗号。
即:这将失败:
$sql = "SELECT street, street_id, col3, FROM streets";
然而,$row['street_id']
和$row['street_ID']
在这里完全是两种不同的动物。因此,请确保使用的是字母大小写。它们在循环遍历列名时是区分大小写的,并且在检查它们时会触发错误,这是一个不存在的列的效果。
旁注:
我在您发布的代码中没有看到结束</form>
标记。确保它是您真实代码的一部分。
参考:
答案 1 :(得分:1)
另外我认为提交街道的价值你做错了。将其更改为此
<option value="<?php echo $row['street_id']; ?>"><?php echo $row['street']; ?></option>
它会显示街道名称并提交街道ID并获得这样的价值
$_post["streets"];// I haven't used datalist but if works it would be this
答案 2 :(得分:1)
您只是忘记在街道表中选择的列中添加street_id
列。
更改此行:
$sql = "SELECT street FROM streets";
到这一行:
$sql = "SELECT street, street_id FROM streets";