我试图在stackoverflow
中找到解决方案来解决我的问题,但没有一个与我的问题相匹配。
我的问题是;
我的javascript
中有if statement
,if 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中被删除。请改用mysqli
或PDO
扩展名。这就是为什么不应该使用mysql_函数的原因。