希望这个问题有道理! 我有一个
的编辑页面<option><select>
部分
<select>
选项本身来自数据库,因此它们处于循环中,以在显示位中将值作为ID和友好名称。见下文。
// Start loop to display products
$i=0;
while ($i < $num2) {
$catid=mysql_result($result2,$i,"id");
$catname=mysql_result($result2,$i,"category");
//Write each product
echo '<option value="';
echo "$catid";
echo '"';
if ('$catid'=='$f_cat_id')
{
echo ' selected ';
}
echo $f_cat_id;
echo '>';
echo "$catname";
echo '</option>';
// Repeat loop until finished
$i++;
}
你可以看到,因为这是一个EDIT页面,我有一个先前在名为$ f_cat_id的变量中选择的值。现在我想将它默认为选择IF $ f_cat_id匹配循环中的值。
然而,似乎我的变量设置如下......
$f_cat_id=$row['product_category_id'];
在循环中似乎无法在IF语句中使用?
当然这是一个简单的问题!期待您的帮助! 非常感谢提前。
答案 0 :(得分:1)
您正在比较两个字符串:
'$catid'=='$f_cat_id'
Single quotes don't interpolate variables(您应该使用variable interpolation的双引号。
无论如何你根本不需要插值,因为你可以简单地比较两个变量:
if ($catid == $f_cat_id)
{
echo ' selected ';
}
答案 1 :(得分:1)
if ('$catid'=='$f_cat_id')
这就是问题的原因。 PHP变量在单引号中时不会被插值。 if
条件将始终评估为FALSE
,并且if
块内的代码将无法执行。
要证明这一点,请考虑以下表达式:
$catid = 1;
$f_cat_id = 1;
var_dump('$catid' == '$f_cat_id');
output将是:
bool(false)
因此,请将您的代码更改为:
if ($catid == $f_cat_id) {
# code ...
}