Dropdown Box会减少价值吗?

时间:2014-05-14 13:59:26

标签: javascript php html drop-down-menu mysqli

当我试图调用这个脚本时,它首先让我选择一个。
然后我可以从8417 - 8422中选择,就像在where子句中一样 但是,如果我选择8417,它会向我显示该ID的数据,但会将8418显示为已选中。
之后,8417已不再存在于Dropbox中!然后它只从84188422

我找不到错误。有没有人有任何提示?

$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);

Dropdown on Change调用的函数

function ddChange(f) {
    f.method="post";
    f.action="index.php";
    f.submit();
}

1 个答案:

答案 0 :(得分:1)

不要在顶部$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不再出现在浏览器中)