如果满足条件,如何在 while 循环中跳转一行

问题描述 投票:0回答:3

我创建了一个表单,管理员可以为系统创建用户。我有一个单独的表,其中包含用户类型例如:管理员、经理...等。

我在表单中使用 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>
php while-loop
3个回答
2
投票

您可以使用 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"]; }}?>
}?>

1
投票

你可以这样做-

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

0
投票

如果(满足条件){

$i++;

做点什么..

}

$i++;

解释:中间插入$i++即可跳过。重要的是,不要与大多数 while 循环结束时已经需要的 $i++ 混淆。

© www.soinside.com 2019 - 2024. All rights reserved.