当我尝试调用此脚本时,它首先显示选择一个脚本。
然后,我可以从8417 - 8422
中进行选择,就像在where子句中一样。
但是,如果我选择8417
,它将显示该ID的数据,但显示为8418
。
之后,8417
不再在保管箱中!然后它仅从8418
变为8422
。
我找不到错误。有人有小费吗?
$strSql= "SELECT id FROM tbl_person where id between 8417 and 8422";
$result = mysqli_query($conn,$strSql) or die('Error generating Dropdown: '. mysqli_connect_error());
echo '<form><select size="1" name="ddKfz" class="dropID" onchange="ddChange(this.form)">';
$rs = mysqli_fetch_array($result);
if (empty($rs)) {
echo "<option selected value='0' style='color:#cc0000'>Empty!</option>";
} else {
if ($_REQUEST["ddKfz"]=="" or $_REQUEST["ddKfz"]==0 ) {
echo "<option selected value='0' style='color:#cc0000'>Please pick one:</option>";
mysqli_data_seek($result, 0);
}
while ($rs = mysqli_fetch_array($result)) {
$strOption= "Kfz: " . $rs["id"];
if ($_REQUEST["ddKfz"]==$rs["id"])
echo "<option value='" . $rs["id"] . "'selected style='color:red'>" . $strOption . "</option>";
else
echo "<option value='" . $rs["id"] . "' >" . $strOption . "</option>";
}
}
echo "</select></form>";
mysqli_free_result($result);
更改下拉菜单调用的函数
function ddChange(f) {
f.method="post";
f.action="index.php";
f.submit();
}
最佳答案
不要在最前面执行$rs = mysqli_fetch_array($result);
。这已经读出了第一行(8417)。而是使用$result->num_rows
:
echo '<form><select size="1" name="ddKfz" class="dropID" onchange="ddChange(this.form)">';
if($result->num_rows < 1) {
echo "<option selected value='0' style='color:#cc0000'>Empty!</option>";
…
还有几点需要考虑的地方:
不要使用
$_REQUEST
,而是使用$_POST
并清理数据!您不需要
mysqli_data_seek($result, 0);
-
value='" . $rs["id"] . "'selected
在selected
之前缺少空格(这可能是为什么8417不再显示在浏览器中的原因)