0
<?php

 $hostname = "localhost";
 $db_user = "root";  
 $db_password = "";  
 $database = "rentcar";  
 $db_table = "reservation"; 

 $db = mysql_connect($hostname, $db_user, $db_password); 

 mysql_select_db($database,$db);

 $date1 = $_POST['datepicker1'];

 $date2 = $_POST['datepicker2'];


 $start_date = strtotime($date1);

 $end_date = strtotime($date2);

 $query  =  mysql_query("SELECT * FROM reservation WHERE  ('pudate'>".$start_date." AND         
 'dodate'<".$end_date.") OR ('pudate'<".$start_date." AND 'dodate'>".$end_date." ) OR 
  ('pudate'<".$end_date." AND 'dodate'>".$end_date.") OR ('pudate'<".$start_date." AND 
  'dodate'>".$start_date." )");

 $result = mysql_query($query); 

  if ($result) 

 {
   echo "vehicle is available";
 }

 else
 {
 echo "vehicle is not available";    

  }

 ?>

pdate と dodate はデータベース内の日付です。実行しようとすると、車両が利用できないため、常に出力が表示されます。車がすでに予約されている場合、車が利用できないと表示されますが、クエリをどのように実行しようとしても、常に同じ結果が得られます。

4

2 に答える 2

0

問題は、クエリの結果を正しく処理していないことです。これを修正するには、次のような方法を試すことができます。

$result =  mysql_query("SELECT * FROM reservation WHERE  ('pudate'>".$start_date." AND         
  'dodate'<".$end_date.") OR ('pudate'<".$start_date." AND 'dodate'>".$end_date." ) OR 
  ('pudate'<".$end_date." AND 'dodate'>".$end_date.") OR ('pudate'<".$start_date." AND 
  'dodate'>".$start_date." )");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    //$row contains the results of your query  
}
于 2013-07-18T00:09:20.087 に答える
0

クエリの実際の結果を取得できませんでした。実際には、あなたは 2 回呼び出されます (ハンドルmysql_query()を返します)。あなたの場合、行の量を取得するために使用します。これにより、車両が利用可能かどうかがわかります。mysql_num_rows()

于 2013-07-18T00:04:46.980 に答える