【问题标题】:Stop Do While LOOP when IF meet the requirementIF 满足要求时停止 Do While LOOP
【发布时间】:2016-03-07 12:41:05
【问题描述】:

我已尝试在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 内,弹出窗口仍然显示几次的原因

有什么想法吗? 谢谢, 费萨尔

【问题讨论】:

  • 嗯,你的朋友有事。您的 JavaScript 块正在您的 php while 循环中重复。现在问题已经很清楚了,您是如何尝试解决它的,您到底在坚持什么?
  • 我现在卡住的是,弹窗保持显示几次,我只想弹窗显示1次。一旦满足 if 条件显示弹出窗口然后终止所有循环.. @Chris

标签: javascript php for-loop popup do-while


【解决方案1】:

您可以使用布尔变量(如$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 

警告:不要在代码中混合使用 javascript 和 php,就像在内部 for 循环中所做的那样。

旁注:不要使用mysql_ 数据库扩展,它们在 PHP 5.5.0 中已被弃用,并在 PHP 7.0.0 中被删除。请改用 mysqliPDO 扩展名。这是why you shouldn't use mysql_ functions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-29
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多