dongxiaoguang9108 2015-12-03 02:34
浏览 50
已采纳

如果IF满足要求,则在LOOP时停止

I have try to find the solution in stackoverflow to fix my problem but no one of them match with my problem.

my problem is;

I have if statement inside my javascript which inside if statement have a popup. I want my javascript display the popup for 1 time only if if statement meet the condition. I try to use break inside if statement, but it still show a popup for a several time.

code:

<?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>";

     }

  }
}
?>

my friends said, the problem is before for loop have do while loop, so that is why the popup still display for a several time even already put the break inside if statement

any idea? thank you, faizal

  • 写回答

1条回答 默认 最新

  • douli8428 2015-12-03 03:27
    关注

    You can use a boolean variable(like $flag) to check whether the condition has been met or not, and subsequently break out of the loop, like this:

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

    Caution: Do not mix javascript and php in your code, like you did in inner for loop.

    Sidenote: Don't use mysql_ database extensions, they were deprecated in PHP 5.5.0 and were removed in PHP 7.0.0. Use mysqli or PDO extensions instead. And this is why you shouldn't use mysql_ functions.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)