当我在页面加载时从数据库中获取值时,如何在中选择正确的值?
我现在有了这段代码,但当它运行时,它会为数据库中给定数字之后的每个数字赋予属性"selected"。
<?php
$i = 8;
while ( $i <=24 ) {
if ($i == $store_info['weekdays_open_time']) {
$selected = " selected";
}
print ("<option value='" . $i ."'" . $selected . ">" . $i . "</option>");
$i++;
}
?>
将代码更改为:
<?php $i = 8; while ( $i <=24 ) {
$selected = ($i == $store_info['weekdays_open_time'])?" selected" : "";
print ("<option value='" . $i ."'" . $selected . ">" . $i . "</option>");
$i++;
} ?>
您需要重置while
循环内的$selected
变量:
<?php
$i = 8;
while ($i <= 24) {
$selected = '';
if ($i == $store_info['weekdays_open_time]) $selected = ' selected="selected"';
print ("<option value='" . $i ."'" . $selected . ">" . $i . "</option>");
$i++;
}
?>
编辑:确保您总是为您使用的每个变量设置一个值;这是个好习惯。在您的代码中,您在print函数中使用了变量selected
,而不总是首先指定变量值。
您永远不会清除您的$selected变量,基本上,一旦它找到正确答案,$selected就会被设置为"selected",不再是一个空变量,所以每次调用它时,它都会打印"select"而非";
<?php
$i = 8;
while ( $i <=24 ) {
$selected = ( $i == $store_info['weekdays_open_time']) ? " selected='selected'" : "";
print ("<option value='" . $i ."'" . ( () ? )$selected . ">" . $i . "</option>");
$i++;
} ?>
您可以替换整个if语句:
<?php
$i = 8;
while ( $i <= 24 ) {
echo "<option value='" . $i ."'" ;
echo ($i == $store_info['weekdays_open_time'] ? ' selected' : '');
echo ">" . $i . "</option>";
++$i;
}
检查:
<?php
$i = 8;
while ($i <= 24) {
?>
<option value="<?PHP echo $i; ?>" <?PHP if ($i == $store_info['weekdays_open_time']) { echo "selected='selected'";} ?> > <?PHP echo $i; ?></option>
<?
$i++;
}
?>
希望它一定会起作用:)
您可以简单地使用
$i = 8;
while ( $i <=24 ) {
$selected = $i == $store_info['weekdays_open_time'] ? 'selected' : '';
echo "<option value='$i' $selected>$i</option>";
$i++;
}
此外,当"double quotes"
中有变量时,没有必要使用.
,最好使用echo
而不是print
,因为echo
是一种语言构造,它比print
函数快。
一个例子