2014-12-05 2 views
1

HTML 양식이 있습니다. 데이터베이스 테이블에 연결된 네 가지 종류의 필드가 있으며 HTML 양식 필드에서 선택할 항목에 따라 결과를 사용자에게 제공해야합니다.모든 HTML 양식 쿼리를 모든 양식 요소에서 함께 사용하려면 어떻게해야합니까?

시작일과 종료일 필드가 있습니다.

<div class='ddate'><p>Start Date:<input type="date" id="datepicker" name="d1" ></p></div> 
         <div class='ddate'><p>End Date:<input type="date" id="datepicker1" name="d2"></p></div> 

날짜 필드는 사용자가 HTML 필드에 지정한 시작 날짜와 종료 날짜 사이에있는 테이블의 모든 행을 가져옵니다.

필드가 있습니다.

<select name='md' multiple="yes" size="10"> 
       <optgroup label="Оpel"> 
        <option value="Astra" name='Ast'>Astra</option> 
           </optgroup> 
           <optgroup label="Nissan">   
        <option value="Pulsar" name='Puls'>Pulsar</option> 
        <option value="Almera" name='Alm'>Almera</option> 
       </optgroup> 
       <optgroup label="Honda"> 
        <option value="Civic" name='Civ'>Civic</option> 
           </optgroup>  
           <optgroup label="Audi"> 
        <option value="Q7" name='Q'>Q7</option>     
       </optgroup> 

       <optgroup label="BMW"> 
        <option value="M3" name='M'>M3</option> 
        </optgroup> 
           <optgroup label="Renault"> 
             <option value="Megane" name='Meg'>Megane</option> 
        </optgroup> 
           <optgroup label="Mercedes"> 
             <option value="G-Class" name='G'>G-Class</option> 
             </optgroup> 
         </select></br></br> 

여기에서 사용자는 모델을 선택하고 쿼리를 통해 선택된 모델 유형의 모든 행을 가져옵니다.

색상에 대한 또 다른 선택 필드.

<select name='col' size='5'> 
          <option value='white' name='wh'>Бял</option> 
          <option value='black' name='bl'>Черен</option> 
          <option value='yellow' name='ye'>Жълт</option> 
          <option value='brown' name='br'>Кафяв</option> 
          <option value='grey' name='gr'>Сив</option> 
         </select></br></br> 

그리고 마력을위한 두 개의 입력란.

이것은 내 양식이며 여기 PHP입니다.

여기서 중요한 것은 내 검색어입니다.

$sql = "SELECT cars.brand,cars.model,cars.reg_num,cars.horse_powers,cars.color,clients.first_name, clients.last_name FROM cars INNER JOIN clients_cars ON cars.id=clients_cars.cars_id INNER JOIN clients ON clients_cars.clients_id=clients.id WHERE cars.id" 
      . " IN (SELECT DISTINCT clients_cars.cars_id FROM clients_cars WHERE (rent_date between '$d1' AND '$d2') OR (return_date between '$d1' AND '$d2') OR ((return_date>'$d2')AND(rent_date<'$d1')) OR ((horse_powers > '$hp1') AND (horse_powers < '$hp2')) OR cars.model LIKE '$md' OR cars.color LIKE '$col') "; 

여기가 내 검색어입니다. 그것의 작품은 잘. 시작 날짜와 종료 날짜를 추가하면 필드 중 하나만 사용하면 html 양식의 다른 필드와 동일한 추가 날짜 사이에있는 모든 행이 삭제됩니다.

두 개 이상을 사용하는 경우 (예 : 색상 : 검정색과 마력을 120-150 사이로 선택). 이 작업을 수행하면 검정색 인 모든 차량과 120-150 HP 사이의 모든 차량 및 검색어를 통해 120-150 마력 사이의 차량 색상과 검정색 차량의 HP에 대해 신경 쓰지 않아도됩니다.

요점은 모든 필드가 서로 보살펴 주길 바랍니다. HP 120-150이있는 검은 차가 하나 밖에없는 경우이 차를 꺼내려면 검정색 차량과 120-150 HP가있는 모든 차량을 꺼내십시오.

+1

을, 귀하의 경우는 아칸소와 연결된 OR, 유로 변경하면 도움이 될 수 있습니다 그리고 그것은 너무 그것을 확인 했습니까? – UnskilledFreak

+0

AND/OR이 문제입니다. 너는 그들을 섞어. – Matheno

+0

내가 거기로 변경되면 쿼리는 시작 날짜와 종료 날짜 필드를 제외한 필드를 신경 쓰지 않습니다. – Gardjo

답변

0

SQL에서 "AND"및 "OR"문을 혼합했습니다. 이 마법해야 : 당신의 부속 선택에

SELECT cars.brand,cars.model,cars.reg_num,cars.horse_powers,cars.color,clients.first_name, clients.last_name 
FROM cars 
INNER JOIN clients_cars 
ON cars.id=clients_cars.cars_id 
INNER JOIN clients 
ON clients_cars.clients_id=clients.id 
    WHERE cars.id 
    IN 
    (SELECT DISTINCT clients_cars.cars_id 
    FROM clients_cars 
    WHERE (rent_date between '$d1' AND '$d2') 
    AND ((return_date>'$d2')AND(rent_date<'$d1')) 
    AND ((horse_powers > '$hp1') AND (horse_powers < '$hp2')) 
    AND cars.model LIKE '$md' 
    AND cars.color LIKE '$col' 
) 
+0

어디에서나 AND 쿼리를 사용하면 쿼리가 작동하지 않습니다. 그게 빈 페이지를 열어. – Gardjo

관련 문제