<select selected =“”>循环中的IF语句</select>

时间:2013-10-08 20:09:48

标签: php mysql logic

希望这个问题有道理! 我有一个

的编辑页面
<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语句中使用?

当然这是一个简单的问题!期待您的帮助! 非常感谢提前。

2 个答案:

答案 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 ...
}