2014-12-02 47 views
1

好的,这是我的问题。我想做一个查询,它将我的表的所有行都放在我的表单中根据用户给定的日期根本不堆叠的地方。这有可能是我的错误,因为日期格式?

我有两个日期字段的表单:

<!DOCTYPE html> 
<head> 
    <title>Ha</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <link rel="stylesheet" href="jquery-ui.css"> 
    <script src="jquery.min.js" type="text/javascript" ></script> 
    <script src="jquery-ui.js"></script> 
<script> 
$(function() { 
$("#datepicker").datepicker(); 
}); 
$(function() { 
$("#datepicker1").datepicker(); 
}); 
</script> 
</head> 
<body> 
    <form method="POST" action="cars.php"> 
     <fieldset> 
        <legend>Rent A Car</legend> 
      <div class='ddate'><p>Дата на наемане:<input type="date" id="datepicker" name="d1"></p></div> 
         <div class='ddate'><p>Дата на връщане:<input type="date" id="datepicker1" name="d2"></p></div> 
         <input type="submit" value="Провери" name="submit"/> 
       </fieldset> 
    </form> 
</body> 
</html> 

,我有一个查询在那里我认为这个问题是日期格式。

<?php 
//Connection 
include "connect.php"; 
    $d1 = $_POST['d1']; 
    $d2 = $_POST['d2']; 
//Query 
    $sql = "SELECT cars.brand,cars.model,cars.reg_num,cars.horse_powers,cars.color FROM cars INNER JOIN clients_cars ON cars.id=clients_cars.cars_id WHERE cars.id IN 
     (SELECT DISTINCT clients_cars.cars_id FROM clients_cars WHERE (rent_date not between '$d1' AND '$d2') AND (return_date not between '$d1' AND '$d2') AND ((return_date < '$d1') OR (rent_date > '$d2')))"; 

    $result = mysqli_query($con, $sql); 
    echo mysqli_error($con); 
    while ($row= mysqli_fetch_array($result)){ 
     $brand = $row['brand']; 
     $model = $row['model']; 
     $reg_num = $row['reg_num']; 
     $horse_powers = $row['horse_powers']; 
     $color = $row['color']; 

     echo $brand; 

    } 
?>     

当我提交此查询需要我出列“品牌”不,我选用到日期输入字段的参数问题的所有行。

我该怎么办?也许我需要更改日期类型?或者我不知道...它看起来像查询是正确的,它的工作,但它并不关心$ d1和$ d2有人可以帮助我吗?

+0

也许你需要设置日期格式为'yyyy-mm-dd'。你喜欢'mm-dd-yy'吗? – vaso123 2014-12-02 10:47:28

回答

0

假设您的输入格式为mm/dd/yyyy. 您需要将其转换为date()和strtotime的mysql格式。

$d1 = date("Y-m-d", strtotime($_POST['d1'])); 
$d2 = date("Y-m-d", strtotime($_POST['d2'])); 
+0

完成!非常感谢你的伴侣:)我试图使sql表格的格式与输入格式相同,这是我的错误。它应该是你的方式。输入格式与表格相同,我不需要将格式更改为我的表格。 – lfc123 2014-12-02 11:19:39

+0

很高兴听到您解决问题。 – fortune 2014-12-02 17:05:45