php - 如何使我的 HTML 表单查询同时适用于所有表单元素?

标签 php html mysql select

我有一个 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>

还有两个用于马力的输入字段。

<input type='text' name='hp1'/></br>
                        ДО:<input type='text' name='hp2'/></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 马力之间的汽车,并且查询不关心 120-150 马力之间汽车的颜色和黑色汽车的马力。

我的观点是,我希望所有领域都能相互照顾。如果有一辆 HP 120-150 的黑色汽车只带我出去这辆车而不是所有黑色汽车和所有 120-150 HP 的汽车。

最佳答案

您混淆了 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'
 )

关于php - 如何使我的 HTML 表单查询同时适用于所有表单元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27320627/

相关文章:

javascript - 将查询字符串添加到 data-href

php表单不将表单数据写入mysql数据库

javascript - 在php for循环中回显带有图像的文本

javascript - 多次快速单击时,复选框按钮无法正常工作

python - Django:从模型中获取表引擎

php - 更高效的等级制度

php - 我应该使用 Postgres 的角色系统来管理 Web 应用程序的用户吗?

javascript - 合并图像函数导致 iOS 上的混合应用程序结果不正确 - 适用于 Safari

mysql - 失去 phpmyadmin 的管理员权限

php - 将 $_SESSION[] 数据制作成 php 变量,但它仍然无法在 mysql 查询中工作