为什么PHP不允许比较?

时间:2010-03-23 15:02:53

标签: php forms if-statement

我正在使用PHP来读取数据库中我的表中的条目是否设置为“是”或“否”并自动检查对应的单选按钮:

<?php include 'file.php';
$query = "SELECT * FROM TABLE";
$runquery = odbc_exec($connect,$query);
$status= odbc_result($runquery,"status");
odbc_close($file);
?>
<form>
<div class="formContainer">
    <fieldset>
    <legend>Campus Alert<span class="tooltip">Turn campus alert on and off.</span></legend>
        <?php echo $status; ?>
        Yes <input type="radio" name="alertStatus" id="alertStatus" value="yes" <?php if($status== "yes") echo "checked";?>>
        No <input type="radio" name="alertStatus" id="alertStatus" value="no" <?php if($status== "no") echo "checked";?>>
    </fieldset>
</div>

<?php echo $status; ?>用于调试,因此我可以确定数据库所说的内容以及表单的反应是否正确。它打印“是”(没有引号)。但是,if语句不会响应。知道为什么会这样做吗?

4 个答案:

答案 0 :(得分:3)

您是否尝试过将if语句更改为

<?php if(strtolower(trim($status)) == "yes") echo "checked";?>

答案 1 :(得分:1)

$status使用“是/否”不是很好的做法,最好使用intboolean值。

答案 2 :(得分:0)

哇,这真的很奇怪......问题不在于你的PHP。首先,您应该从这些字段中删除id属性。但真正的问题是Firefox似乎不想在名称为alertStatus的情况下检查第二个字段。如果你将名称更改为其他名称,它似乎正在起作用。我不确定为什么会这样。

这是我的测试代码:

<?php //include 'file.php';
//$query = "SELECT * FROM TABLE";
//$runquery = odbc_exec($connect,$query);
//$status= odbc_result($runquery,"status");
//odbc_close($file);
$status='no';
?>
<form>
<div class="formContainer">
    <fieldset>
    <legend>Campus Alert<span class="tooltip">Turn campus alert on and off.</span></legend>
        <?php echo $status; ?>
        Yes <input type="radio" name="alertStatu" value="yes" <?php if($status== "yes") echo "checked";?>>
        No <input type="radio" name="alertStatu" value="no" <?php if($status== "no") echo "checked";?>>
    </fieldset>
</div>

答案 3 :(得分:0)

如果您查看页面来源,您会看到check实际存在。但是,您有一个重复的ID,浏览器会变得混乱。替换:

Yes <input type="radio" name="alertStatus" id="alertStatus" ....>
No <input type="radio" name="alertStatus" id="alertStatus" .....>

Yes <input type="radio" name="alertStatus" id="alertStatus:yes" ....>
No <input type="radio" name="alertStatus" id="alertStatus:no" .....>

它会解决。