1

我想获得一些关于我的搜索脚本的帮助。关于网站的一点点:我已经注册了用户,当他们注册时,他们会选择他们的用户类型(即保姆、家庭护理、日托)。现在我有一个搜索栏,访问者可以输入他们的邮政编码,结果页面会显示数据库中包含该邮政编码的所有内容。当前形式:

<form id="form1" name="form1" method="get" action="results.php">
    <p>
      <label>Search for<input type="text" name="Search" id="Search"  /></label>
      <label>
        <select name="Field" id="Field">
          <option value="Zip">Zip</option>   
        </select>
      </label>
      <input type="submit" name="button" id="button" value="Search" />
   </p>

我想做的是让用户输入他们的邮政编码并从下拉列表中选择 Nanny、Homecare 或 Daycare,结果仅在搜索结果中显示该类型,而不是在该 zip 中的所有内容上。

我希望表单看起来如何:

<form id="form1" name="form1" method="get" action="results.php">
    <p>
      <label>Search for<input type="text" name="Search" id="Search"  value="Zip" /></label>
      <label>
        <select name="Field" id="Field">
          <option value="Nanny">Nanny</option>
          <option value="Homecare">Homecare</option>
          <option value="Childcare">Childcare</option>   
        </select>
      </label>
      <input type="submit" name="button" id="button" value="Search" />
    </p>
</form>

php:

<?php
require_once('scripts/_config.php');
if(isset($_GET['Field'])){
$searchQ1=mysql_query("SELECT `First_Name`,`Last_Name`,`Nanny`,`Homecare`,`Childcare`,`City`,`State`,`Zip`,`userID` FROM `sys_profile` WHERE `".$_GET['Field']."` LIKE '".$_GET['Search']."';");
}else{
$searchQ1=mysql_query("SELECT `First_Name`,`Last_Name`,`Nanny`,`Homecare`,`Childcare`,`City`,`State`,`Zip`,`userID` FROM `sys_profile` WHERE `userID`!=0;");
}
?>

如何更改 php 以使搜索结果仅显示输入的 zip 中的保姆或输入的 zip 中的托儿等?现在 php 显示该 zip 中的所有内容,当我将表单更改为第二个示例时,它仍然无法正常工作,因为我不确定如何调整搜索查询。

4

1 回答 1

0

您必须在查询中包含第二个约束AND。将包含在$_GET['Search']Zip 中的 Zip 与数据库中的 Zip 文件进行比较,并将下拉列表中的选定值与数据库中的用户类型进行比较。

你的数据库是什么样子的?尤其是用户类型信息是如何保存的?从您发布的查询中猜测,这些是布尔值(Nanny、Homecare、Childcare)?

编辑:当 Nanny、Homecare 和 Childcare 是布尔值时,可能的查询是:

$sql = "SELECT First_Name,Last_Name, City, State, userID FROM sys_profile WHERE Zip = " . $_GET['Search'] . " AND $_GET['Field'] = true";

因此,您检查 Zip 是否与搜索字符串匹配,以及所选下拉项是否具有值 true。

于 2012-06-24T17:56:02.767 回答