2014-12-02 4 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 pl에 대해 신경 쓰지 않습니까?

+0

어쩌면 날짜 형식을 'yyyy-mm-dd'로 설정해야 할 수도 있습니다. 당신은'mm-dd-yy'처럼 그것을 얻나요? – vaso123

답변

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

+0

다행스럽게도 문제가 해결되었다고 들었습니다. – fortune