2016-09-16 67 views
0

我想检查一下,预订ID是否不在数据库中,以及它是否大于今天。数据库检查部分工作。但如果条件成立,这部分不会经历。我认为ifelse陈述有问题。如何正确使用if语句?

else if($checkindate > $today) 
{ 
    $bidErr="This booking is not comming today. Please check again"; 
} 

我在这里包括完整的代码。预订ID bid来自一个表单。

<?php 
    $today=date("Y-n-j"); 
    echo "<h4>Today is <font color='red'>".$today."</font></h4><br><br>"; 
    // define variables and set to empty values 
    $bidErr = ""; 
    $bid = ""; 

    if ($_SERVER["REQUEST_METHOD"] == "POST") { 
     $flag = 1; 
     if (empty($_POST["bid"])) { 
      $bidErr = "Booking ID is required."; 
      $flag=0; 
     } else { 
      $bid = test_input($_POST["bid"]); 
      // check if name only contains letters and whitespace 
      if (!preg_match("/^[0-9]*$/",$bid)) { 
       $bidErr = "Only Numbers are allowed"; 
       $flag=0; 
      } 
     } 
     include("connect.php"); 
     if($flag=="1"){ 
      $SQL="SELECT guestid,checkindate FROM bookings WHERE bookingid='$bid'"; 
      $run=mysql_query($SQL,$con) or die ("SQL error"); 
      $rec=mysql_fetch_array($run); 
      $row=mysql_num_rows($run); 

      $checkindate = $rec['checkindate']; 

      echo $checkindate; 

      if ($row < 1) { 
       $bidErr="Invalid BookingID. Please check again"; 
      } 
      else if($checkindate > $today) { 
       $bidErr="This booking is not comming today. Please check again"; 
      } else { 
       $_SESSION["chinbid"] = $bid ; 
       header("Location: checkinhandler.php"); 
       exit; 
      } 
     } 
    } 

    function test_input($data) { 
     $data = trim($data); 
     $data = stripslashes($data); 
     $data = htmlspecialchars($data); 
     return $data; 
    } 
?> 
+0

你在哪里把'$ _POST [“bid”]'作为'$ bid'? –

+1

你不应该使用任何mysql _ * - 函数。他们已被弃用,因为PHP 5.5和完全删除在PHP 7.0 – Manish

+0

尝试'elseif'而不是'else if' – RST

回答

0

检查您的$checkindate是否与$today日期相同。

尝试检查$checkindate格式与date("Y-m-d")(2016-09-16)类似。如果是的话$today会像

$today=date("Y-m-d"); 

检查php manual

此外,我建议去mysqli_ *而不是使用mysql_ *。因为它从PHP 5.5开始已被弃用,并在PHP 7.0中完全删除。

+0

谢谢。我会检查 – din

+0

IT的作品..这是$ today = date(“Y-n-j”); \t \t and checkindate format is(“Y-m-d”);谢谢 – din

0

试试这个:

else if(date("Y-n-j", strtotime($checkindate)) > $today) 

我猜你的$checkindate是不相同的格式(Y-N-J)作为$today变量。

+0

好的我会检查..谢谢 – din

+0

谢谢。日期格式错误,如你所说。我修好了它。 – din

0
<?php 
$row='0'; 
date_default_timezone_set('UTC'); 
$date=date_create("2016-09-15"); 
$today = date("Ymd"); 
$date= date_format($date, 'Ymd'); 
echo "Checkin date is " . $date. "<br>"; 
echo "Today is " . $today."<br>"; 
if ($row < '1'){ 
    echo "no records"; 
} elseif ($date == $today) { 
    echo "dates are the same"; 
} else { 
    echo "check in handler"; 
} 
?>