当我尝试调用此脚本时,它首先显示选择一个脚本。
然后,我可以从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"] . "'selectedselected之前缺少空格(这可能是为什么8417不再显示在浏览器中的原因)

10-06 00:26