如何使用MySQL和PHP设置<option selected ="selected">?

Bin*_*min 5 php mysql select option

如何<option selected="selected">通过MySQL和PHP 进行设置?

我的代码:

echo '<select>';
$tempholder = array();
$rs = mysql_query("SELECT * FROM id ORDER BY year");
$nr = mysql_num_rows($rs);
for ($i=0; $i<$nr; $i++){
    $r = mysql_fetch_array($rs);
    //if($year==$r["year"]){ $selected=' selected="selected"'; }//doesn't work so
    if (!in_array($r['year'], $tempholder)){
        $tempholder[$i] = $r['year'];
        echo "<option>".$r["year"]."</option>";//<option$selected>...
    }
}
unset($tempholder);
echo '</select>';
Run Code Online (Sandbox Code Playgroud)

2nd*_*boy 6

试试这个:

    echo '<select>';
$tempholder = array();
$rs = mysql_query("SELECT * FROM id ORDER BY year");
$nr = mysql_num_rows($rs);
for ($i=0; $i<$nr; $i++){
    $r = mysql_fetch_array($rs);
    if (!in_array($r['year'], $tempholder)){
        $tempholder[$i] = $r['year'];
        echo "<option".(($year==$r["year"])? ' selected="selected"' : '').">".$r["year"]."</option>";
    }
}
unset($tempholder);
echo '</select>';
Run Code Online (Sandbox Code Playgroud)

它不会将状态保存在您必须覆盖的变量中.

我认为真正的错误是$ year = $ r ["year"]中的单个等号,而不是其余的代码.


bob*_*nce 5

除了修复=/ ==gotcha之外,您还可以通过要求数据库每年仅在查询中返回一次来保存数组查找并使代码更简单:

<select>
    <?php $result= mysql_query('SELECT DISTINCT year FROM id ORDER BY year'); ?>
    <?php while($row= mysql_fetch_assoc($result)) { ?>
        <option <?php if ($row['year']==$year) { ?>selected="selected"<?php } ?>>
            <?php echo htmlspecialchars($row['year']); ?>
        </option>
    <?php } ?>
</select>
Run Code Online (Sandbox Code Playgroud)

(您可能不需要htmlspecialchars()假设这是一个数字年份,但最好将HTML转义为HTML模板中包含的任何纯文本.您可以定义一个名称较短的函数echo htmlspecialchars来减少键入.)