1

我正在构建我的第一个 PHP/MySQL 站点,我想从数据库中的一个表中的两个字段返回搜索结果 - 类别和位置(表中总共有 15 个字段,但只需要两个搜索)。

每个选项都有一个下拉菜单,其中将在每个字段中列出固定数量的选项 - 例如,可能会有 15 个左右的位置和 7 或 8 个类别。

我希望用户能够从一个或两个下拉菜单中选择一个项目,单击“搜索”或 @Go 按钮,然后显示结果。

如前所述,我是 PHP/MySQL 的新手,如果我的问题有点“简单”,我深表歉意,我希望有人能指出我正确的方向。

谢谢丹

编辑:

布拉德,康纳,到目前为止,我没有任何关于搜索查询细节的信息,我刚刚开始研究如何做到这一点,因此我的问题中完全没有代码!

但更具体地说,我想返回结果的唯一字段是位置和工作类别——我的表中这两个字段大约 15 个,已经填充了固定术语——例如,位置可能有伦敦、曼彻斯特、利兹和类别可能有行政、管理、文书等 - 访问者没有输入新术语的选项,只能从预先安排的项目下拉菜单中选择。

我表中的其他字段与搜索无关(薪水、公司、联系电子邮件等),所以......我想我只需要两个查询,如果你只发送一个也可以显示结果(例如,您不关心工作地点,只关心专业,您仍然可以找到所有结果并决定您是否想搬迁)。这会更好或更有用吗?

感谢您到目前为止的帮助。担

4

3 回答 3

1

用户输入搜索查询,您想从表中选择包含或完全匹配该查询的行?如果是这样,类似

如果category包含$search_query

SELECT category, location 
FROM table 
WHERE concat(' ', category, ' ') LIKE '%$search_query%'

或者,如果它是exact匹配项,您可以将其用于您的条件:

WHERE category = '$search_query'

不过,我可能偏离了轨道,您需要像布拉德所说的那样指定

于 2011-06-16T21:09:02.030 回答
1

Dan 你需要动态地构建你的 sql 语句。下面是一段简单的代码来说明我的意思。始终确保将用户数据转义到 provent sql 注入。

if ( isset($_POST['go']) ){
      $location = $_POST['location'];
      $category = $_POST['category'];
      $sql = "SELECT * FROM table ID IS NOT NULL ";

      if ( $location !="" ){
           $sql .= " AND location = " . $location;
      }

      if ( $category !="" ){
           $sql .= " AND category = " . $category;
      }

}
于 2011-06-16T21:17:27.347 回答
0

如果没有有关您的表结构和相关数据的任何详细信息,基本知识将类似于:

SELECT ...
FROM ...
WHERE (field1 = $location_option) or (field2 = $category_option)
于 2011-06-16T21:10:31.273 回答