переменная переопределяется? - PullRequest
0 голосов
/ 08 июня 2009

В настоящее время я использую флажки для установки разрешений в моем PHP-приложении. На странице управления пользователями, если у пользователя есть разрешение, определенное в базе данных 1 или 0, флажок должен быть отмечен или не установлен соответственно. Ниже приведен код, который используется для проверки того, должен ли флажок быть установлен или нет:

<div><input type="checkbox" tabindex="1" name="permission[$app]" value="1" <? if ($currentperms['newapp'] = "1") {echo " checked ";}?> />New Application</label></div>

Интересно, что перед этой строкой echo($currentperms['newapp']) выдает 0 в соответствии с тем, что установлено в базе данных, однако, после этой строки, echo($currentperms['newapp']) выдает 1, указывая, что переменная изменилась.

Какая может быть причина для этого?

Я протестировал код, и именно эти строки переопределяют переменные и мешают мне завершить сценарий, так как я не могу проверить его функциональность.

Я проверял это $currentperms['newapp'] = "0":

Array ([userid] => 1 [ptodo] => 1 [usercp] => 1 [pm] => 1 [bug] => 1 [abug] => 1 [admincp] => 1 [intmgs] => 1 [adduser] => 1 [pass] => 1 [useredit] => 1 [listuser] => 1 [newapp] => 0)

Ответы [ 2 ]

3 голосов
/ 08 июня 2009

Я считаю, = является оператором присваивания в php. Вам нужно использовать ==, оператор равенства.

Попробуйте изменить тест с

<? if ($currentperms['newapp'] = "1") {echo " checked ";}?>

до

<? if ($currentperms['newapp'] == "1") {echo " checked ";}?>
1 голос
/ 08 июня 2009

Одинарный = присваивает значение, а двойной == сравнивает значение. Вам нужно использовать ==.

Кроме того ... Я предполагаю, что вы строго придерживаетесь xhtml 1.0, поскольку у вас есть самозакрывающийся ввод.

Правильная разметка xhtml: <input type="checkbox" checked="checked">. Ваш код будет выводить <input type="checkbox" checked>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...