我正在构建我的第一个PHP / MySQL站点,我想从数据库中的一个表中的两个字段返回搜索结果 - Catagory和Location(表中总共有15个字段,但只有搜索所需的两个。)
每个选项都有一个下拉菜单,它会在每个字段中列出固定数量的选项 - 例如,可能会有15个左右的位置,以及7个或8个Catagories。
我希望用户能够从一个或两个下拉菜单中选择一个项目,点击“搜索”或“@Go”按钮,然后显示结果。
如上所述,我是PHP / MySQL的新手,所以如果我的问题有点“简单”,我很抱歉,我希望有人可以指出我正确的方向。
由于 丹
编辑:
Brad,Conner,到目前为止我还没有任何关于搜索查询细节的信息,我只是开始研究如何做到这一点,因此在我的问题中完全缺乏代码!但是为了尝试更具体,我想要返回结果的唯一字段是Location和Job Catagory - 这是我的表中大约15个已经填充了固定术语的两个字段 - 例如,Location可能有伦敦,曼彻斯特,利兹和Catagory可能有行政,管理,文职等 - 访客没有选择输入新术语,只能从预先安排的项目的下拉菜单中选择。
我表格中的其他字段与搜索无关(工资,公司,联系电子邮件等),所以......我想我只需要两个查询,如果你只发一个查询,也可以显示结果(例如,你不会对工作地点感到困扰,只是专业,你仍然可以找到所有的结果,并决定你是否想要重新安置)。那更好还是更有帮助?
到目前为止,感谢您的帮助。 丹
答案 0 :(得分:1)
用户输入搜索查询,您是否要从表中选择包含该查询或与该查询完全匹配的行?如果是这样的话,比如
如果category
包含$search_query
SELECT category, location
FROM table
WHERE concat(' ', category, ' ') LIKE '%$search_query%'
如果是exact
匹配,您可以将其用于条件:
WHERE category = '$search_query'
我可能不合适,你需要像布拉德那样说明
答案 1 :(得分:1)
Dan你需要动态构建你的sql语句。下面是一段简单的代码来展示我的意思。总是小心逃避用户数据以防止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;
}
}
答案 2 :(得分:0)
如果没有关于您的表格结构和相关数据的任何详细信息,基本知识可能会像:
SELECT ...
FROM ...
WHERE (field1 = $location_option) or (field2 = $category_option)