php搜索,参数少

qybjjes1  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(425)

我有一个查询,我正在尝试使用多个参数进行搜索,以便从sql中对数据响应进行排序。
查询代码:

  1. $sql = "SELECT * FROM `apartments` WHERE `building_num`='{$i}' ORDER by `apartment_num` ASC";

搜索表单:

  1. <form method="GET">
  2. <input type="hidden" name="page" value="price">
  3. <select class="styled-select2" name="type">
  4. <option value="0">Apartment type</option>
  5. <option value="דופלקס">Duplex</option>
  6. <option value="דירה">Apartments</option>
  7. <option value="דירת גן">דירת גן</option>
  8. </select>
  9. <select class="styled-select2" name="rooms">
  10. <option value="0">rooms</option>
  11. <option value="4">4</option>
  12. <option value="3">3</option>
  13. <option value="5">5</option>
  14. </select>
  15. <select class="styled-select2" name="price">
  16. <option value="0">Price</option>
  17. <option value="700000-800000">700,000-800,000 ₪ </option>
  18. <option value="800000-900000">800,000-900,000 ₪</option>
  19. <option value="900000-1000000">900,000-1,000,000 ₪</option>
  20. <option value="1000000-1100000">1,000,000-1,100,000 ₪</option>
  21. <option value="1100000-1200000">1,100,000-1,200,000 ₪</option>
  22. <option value="1200000-1300000">1,200,000-1,300,000 ₪</option>
  23. <option value="1300000-1400000">1,300,000-1,400,000 ₪</option>
  24. <option value="1400000">1,400,000 up</option>
  25. </select>
  26. <input type="hidden" name="action" value="search">
  27. <button type="submit">Search</button>
  28. </form>

有三个参数,但不是必须的,客户可以只使用'公寓类型'和'价格'或只有一个参数,我试了几个小时写查询没有成功,任何一个可以帮助?

  1. // Vars on table apartments
  2. // Rooms - > Rooms
  3. // Price -> price
  4. // Apartment type -> type
pvcm50d1

pvcm50d11#

在这种情况下,您必须按如下方式构建动态查询:-

  1. $sql = "SELECT * FROM `apartments` WHERE ";
  2. $condition = "";
  3. $condition .= ($rooms=='')?"":" or 'rooms'= $rooms ";
  4. $condition .= ($type=='')?"":" or 'type'= $type ";
  5. $condition .= ($price=='')?"":" or prince bewteen 'range_min' AND 'range_max'";
  6. $sql .= $condition;
  7. $sql .= " ORDER by `apartment_num` ASC";

通过这种方式,您可以让所有三个过滤器自由选择或不选择。

7eumitmz

7eumitmz2#

首先,和查询(或多个查询)和您给客户的tge选项之间没有直接联系。。。
如果你想,那么你可以让客户填写一些领域,如果你不那么没有。。。这是一个决定的问题,从中衍生出发展
缺少示例代码,因此我可以直接回答有关查询的问题并添加一些注解
既然您已经给出了特定的select选项,那么您应该将其用于特定的搜索我还将对返回的$\u post信息使用一些验证
关于查询,我需要假设所有选项都保存在公寓表中,在该表下,查询应该如下所示:

  1. $sql = "SELECT * FROM `apartments` WHERE
  2. rooms = $rooms
  3. OR `type` = $type
  4. OR (price BETWEEN *$range_min* AND *$range_max*)
  5. ORDER by `apartment_num` ASC";

如果您希望合并所有参数,您应该使用and而不是or and,同样,您可以决定同时使用and和or,并对用户给定的每个场景使用不同的查询

相关问题