【问题标题】:How to jump a row in a while loop if condition met如果条件满足,如何在while循环中跳转一行
【发布时间】:2017-05-11 17:14:27
【问题描述】:

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

我在我的表单中使用了一个 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 ($row["userRole"] == "Admin") continue;
  • 表示您不希望管理员登录时包含管理员的单选按钮??
  • @mplungjan 在发布我的问题之前我确实看过 PHP Continue,但我无法理解如何使用它。所以如果我使用你的建议,循环会从第二行继续吗?
  • @JagdishChaudhary 单选按钮及其后面的文本我上面的尝试只隐藏单选按钮而不是文本。
  • continue 语句基本上说:立即跳转到循环的结束 } - 它将“继续”下一次迭代,或者在迭代结束时停止(在while 它将返回检查条件)。

标签: php while-loop


【解决方案1】:

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

【讨论】:

  • 感谢您提供代码并向我展示了一些我不知道的新东西。看了两遍手册,我就明白了如何使用 continue 功能了。我使用 && 所以条件必须同时匹配。
【解决方案2】:

你可以这样做-

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

【讨论】:

  • @Alive to Die 想知道为什么您的帖子被删除了,因为我取消选择答案作为最佳答案让您感到不安。但我可以看到两个答案都是一样的。
  • 对@AliveToDie 非常友好,因为他实际上早了 5 分钟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-06
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
相关资源
最近更新 更多