当IF满足要求时,停止Do While LOOP


Stop Do While LOOP when IF meet the requirement

我试图在stackoverflow中找到解决方案来解决我的问题,但没有一个与我的问题相匹配。

我的问题是;

我的javascript中有if statementif statement中有一个弹出窗口。我希望我的javascript只在if statement满足条件的情况下显示弹出窗口1次。我尝试在if statement中使用break,但它仍然显示了好几次弹出窗口。

代码:

<?php
if(isset($_POST['submit'])){ 
$reserve_stime = htmlentities($_POST['starttime']);
$reserve_etime = htmlentities($_POST['endtime']);
$reservedstime = "SELECT startmeetingtime, endmeetingtime 
                  FROM meeting_room_reservation 
                  WHERE room_reserve_session = '$varsession' 
                  AND room_reserve_date = '$convardate'
                  AND room_id = $idroom";
$result7=mysql_query($reservedstime) or die("invalid query:".mysql_error()); 
while($row7=mysql_fetch_assoc(@$result7)){
     $reservedstime2 = "SELECT timereserve_start_id
                        FROM timereserve_start 
                        WHERE timereserve_start_id BETWEEN " . $row7['startmeetingtime'] . " AND " . $row7['endmeetingtime'] . "";
     $result8=mysql_query($reservedstime2) or die("invalid query:".mysql_error()); 
     while ($row8=mysql_fetch_assoc(@$result8)) {
           $timealreadyreserved = $row8['timereserve_start_id'];
           echo "<script type='text/javascript'>
                    for (i=$reserve_stime; i <= $reserve_etime ; i++){
                      if (i == $timealreadyreserved){
                        alert('Time is not Available');
                        break;
                      }
                      else{
                        //do nothing
                      }
                    }
                 </script>";
     }
  }
}
?>

我的朋友说,问题是for循环之前有do while循环,所以这就是为什么弹出窗口仍然显示了好几次,甚至已经把break放在if statement 里面了

知道吗?非常感谢。faizal

您可以使用布尔变量(如$flag)来检查条件是否已满足,并随后脱离循环,如下所示:

// your code
while($row7=mysql_fetch_assoc(@$result7)){
    $reservedstime2 = "SELECT timereserve_start_id
                        FROM timereserve_start 
                        WHERE timereserve_start_id BETWEEN " . $row7['startmeetingtime'] . " AND " . $row7['endmeetingtime'] . "";
    $result8=mysql_query($reservedstime2) or die("invalid query:".mysql_error()); 
    $flag = false;
    while($row8=mysql_fetch_assoc(@$result8)) {
        $timealreadyreserved = $row8['timereserve_start_id'];
        for ($i=$reserve_stime; $i <= $reserve_etime ; $i++){
            if($i == $timealreadyreserved){
                $flag = true;
                ?>
                <script>alert("Time is not Available");</script>
                <?php
                break;
            }
        }
        if($flag){
            break;
        }
    }
    if($flag){
        break;
    }
}
// your code 

注意:不要像在内部for循环中那样在代码中混合使用javascript和php。

旁注:不要使用mysql_数据库扩展,它们在PHP 5.5.0中被弃用,在PHP 7.0.0中被删除。请改用mysqliPDO扩展名。这就是为什么不应该使用mysql_函数的原因。