Почему PHP не позволяет сравнивать? - PullRequest
0 голосов
/ 23 марта 2010

Я использую 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 ]

3 голосов
/ 23 марта 2010

Вы пытались изменить свои операторы if на что-то вроде

<?php if(strtolower(trim($status)) == "yes") echo "checked";?>
1 голос
/ 23 марта 2010

Не очень хорошая практика использовать «да / нет» для вашего $status, лучше использовать значение int или boolean.

0 голосов
/ 23 марта 2010

Если вы посмотрите на источник страницы, вы увидите, что check на самом деле там. Однако у вас есть дубликат идентификатора, и браузер запутывается. Заменить:

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" .....>

и все исправится.

0 голосов
/ 23 марта 2010

Вау, это действительно странно ... проблема не в вашем 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...