开发者

Why is PHP not allowing comparison?

开发者 https://www.devze.com 2022-12-24 14:43 出处:网络
I\'m using PHP to read if an entry in my table on the database is set to \"yes\" or \"no\" and auto check the radio button that corresponds:

I'm using PHP to read if an entry in my table on the database is set to "yes" or "no" and auto check the radio button that corresponds:

<?php include 'file.php';
$query = "SELECT * FROM TABLE";
$runquery = odbc_exec($connect,$query);
$status= odbc_result($runquery,"status");
odbc_close($file);
?>
&开发者_如何学JAVAlt;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>

the <?php echo $status; ?> is for debugging so I can make sure what the database says and the form's reaction is correct. It prints "yes" (no quotes). However, the if statement will not respond. Any idea why it's doing this?


Have you tried changing your if statements to something like

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


It's not very good practise to use "yes/no" for your $status, you're better off using an int or boolean value.


Wow, that's really weird... the problem isn't with your PHP. First of all, You should remove the id attributes from those fields. But the real issue is that Firefox doesn't seem to want to check the second field when it has the name alertStatus. if you change the name to something else, it seems to be working. I'm not really sure why this is though.

Here's my test code:

<?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>


If you look at the page source you'll see that the check is actually there. However, you have a duplicate ID and the browser is getting confused. Replace:

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

with

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

and it'll fix.

0

精彩评论

暂无评论...
验证码 换一张
取 消