我创建了一个表单,管理员可以为系统创建用户。我有一个单独的表,其中包含用户类型例如:管理员、经理...等。
我在表单中使用 while 循环从表中拖动上述用户角色并绘制一组单选按钮。
我的问题是我想从我使用的普通管理器中隐藏管理选项
PHP
但它只隐藏单选按钮本身而不是它旁边的文本我的代码在下面。
代码:
<div id="userRoles">
<label for="userRoles">User Role:</label><br>
<?php while ($row = $getUserRoleQuery -> fetch(PDO::FETCH_ASSOC)) { ?>
<input type="radio" class="userRoles" name="userRoles"
value="<?php echo $row["urId"]; ?>" <?php if ($_SESSION["uRole"] == "1" && $row["userRole"] == "Admin" ){?> hidden <?php } ?>><?php echo $row["userRole"]; }?>
</div>
我正在考虑使用 IF ... ELSE 让 while 循环跳过第一行,但我不知道该怎么做。
我只是想隐藏管理选项。
更新:在 mplungjan 和 Alive to Die 的帮助下,我解决了这个问题,我使用了 continue 方法,从我的角度来看,它更精简,现在我的代码看起来像这样;
代码:
<div id="userRoles">
<label for="userRoles">User Role:</label><br>
<?php while ($row = $getUserRoleQuery -> fetch(PDO::FETCH_ASSOC)) {
if ($_SESSION["uRole"] !== "1" && $row["userRole"] == "Admin" ) continue ?>
<input type="radio" class="userRoles" name="userRoles" value="<?php echo $row["urId"]; ?>"><?php echo $row["userRole"]; }?>
</div>
您可以使用 if 和 continue - continue 之后的语句将被忽略
如果应跳过 uRole==1 或 Admin,请使用 OR (||)
<?php while ($row = $getUserRoleQuery -> fetch(PDO::FETCH_ASSOC)) {
if ($_SESSION["uRole"]=="1" && $row["userRole"] == "Admin") continue; // ignore the rest of the loop
?>
<input type="radio" class="userRoles" name="userRoles" value="<?php echo $row["urId"]; ?>"><?php echo $row["userRole"]; }}?>
}?>
你可以这样做-
<div id="userRoles">
<label for="userRoles">User Role:</label><br>
<?php
while ($row = $getUserRoleQuery -> fetch(PDO::FETCH_ASSOC))
{
if($_SESSION["uRole"] == "1" && $row["userRole"] != "Admin" ))
{
echo '<input type="radio" name="userRoles" value="'.$row["urId"].'">'.$row["userRole"].'';
}
}
?>
</div>
如果(满足条件){
$i++;
做点什么..
}
$i++;
解释:中间插入$i++即可跳过。重要的是,不要与大多数 while 循环结束时已经需要的 $i++ 混淆。