我有一个奇怪的问题。如果用户被禁止,这是我的表格,复选框已选中,如果没有,复选框为空。
<tr>
<td>{$user4.username}</td>
<td>{$user4.email}</td>
<td>{$user4.name} {$user4.surname}</td>
{if !$user4.banned}
<td><center><input type="checkbox" name="banCheckBan" value="{$user4.id}" /></center></td>
{else}
<td><center><input type="checkbox" name="banCheckBan2" value="{$user4.id}" checked /></center></td>
{/if}
{if $user4.status}
<td><center><input type="checkbox" name="removeCheck" value="{$user4.id}"></center></td>
{else}
<td><center><input type="checkbox" name="removeCheckNoRemove" value="{$user4.id}" checked></center></td>
{/if}
</tr>
在控制器方面,我使用下面的代码.BancheckBan正常工作。但是,banCheckBan2无法正常工作。可能是什么原因?
if (isset($_POST['updateBanRemove'])) {
if (isset($_POST['banCheckBan2']))
NCore::db('USER')->updateAsArray(array('BANNED' => 0))->eq('ID', $_POST['banCheckBan2'])->execute();
elseif (isset($_POST['banCheckBan'])){
NCore::db('USER')->updateAsArray(array('BANNED' => 1))->eq('ID', $_POST['banCheckBan'])->execute();
}
}
答案 0 :(得分:2)
只有checked
个复选框将发送到服务器。因此,在取消选中复选框时,您的条件将无法取消用户的解除。
解决这个问题的一种可能性可能是:
(查看方)
<input type="hidden" name="userID" value="{$user4.id}" />
{if !$user4.banned}
<td>
<center>
<input type="checkbox" name="banCheckBan" value="1" />
</center>
</td>
{else}
<td>
<center>
<input type="checkbox" name="banCheckBan" value="1" checked />
</center>
</td>
{/if}
(控制器端)
if (isset($_POST['updateBanRemove'])) {
if (!isset($_POST['banCheckBan'])) {
NCore::db('USER')
->updateAsArray(array('BANNED' => 0))
->eq('ID', $_POST['userID'])
->execute();
} elseif ($_POST['banCheckBan']) {
NCore::db('USER')
->updateAsArray(array('BANNED' => 1))
->eq('ID', $_POST['userID'])
->execute();
}
}
答案 1 :(得分:0)
如果要检查其值,那么您要比较的复选框是否需要与if相同?