问题描述
如何通过MySQL和PHP设置<option selected="selected">
?
How to make <option selected="selected">
set by MySQL and 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>';
推荐答案
除了修复=
/==
陷阱外,您还可以通过请求数据库返回每个数组来保存数组查找并简化代码一年在查询中仅一次:
In addition to fixing the =
/==
gotcha, you can save yourself the array lookup and make the code simpler by asking the database to return each year only once in the query:
<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>
(您可能不需要htmlspecialchars()
,假设这是一个数字年份,但是始终将HTML模板中包含的任何纯文本都用HTML转义是一种很好的做法.您可以定义一个较短的名称来执行减少打字.)
(You may not need htmlspecialchars()
assuming that's a numeric year, but it's good practice always to HTML-escape any plain text you include in an HTML template. You can define a function with a shorter name to do the echo htmlspecialchars
to cut down on typing.)
这篇关于如何使< option selected =“选定""由MySQL和PHP设置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!