0

我正在尝试创建一个具有多个变量的搜索函数。基本上我有一个标准的样式形式,每个元素都有一个名字。POST通过然后进行搜索查询来检索提交上的那些名称。我已经发布了我的代码,我知道我可能已经采取了一种糟糕的方式,但我正在寻找如何使其适合的方向。对 PHP 来说仍然很新,所以关于更好的构建它的方法的建议,我可以去学习/实施。目前它确实通过第一个变量进行搜索$search但我不确定如何实现其余的。用户应该能够输入 1 个或多个变量然后进行搜索。此时它只搜索一个表,我希望它长期搜索多个表,不同表中的所有列都具有相同的名称,只是不同的数据。任何指导在这里表示赞赏。干杯。

//define variables to be used
$table = 'aecm';
$search = @$_POST['search'];
$status = @$_POST['status'];
$repair = @$_POST['repair'];
$upgrade = @$_POST['um'];
$pm = @$_POST['pm'];
$nofault = @$_POST['nf'];

//Connect to database
include '/../connect.php';


//conduct a search
$result = mysql_query("SELECT * FROM $table
WHERE (part LIKE '%$search%')
OR
(serial LIKE '%$search%')
OR
(mac LIKE '%$search%')
OR
(ip LIKE '%$search%')
OR
(status LIKE '%$search%')
ORDER BY part ASC");
if (!$result) {
die("Query to show fields from table failed");
}

添加了显示变量的表单代码。

echo '<form ENCTYPE=multipart/form-data form name=benchsearch 
action=benchsearchresults.php method=post>';

//search selection
echo '<table>';
echo '<tr><td>Standard Search  </td>';
echo "<td><input type=text maxlength=30 name=search /></td>";
echo '<tr><td>Search Status of Equipment  </td>';
echo "<td><select name=status>";
echo "<option>  </option>";
echo "<option> SERVICEABLE </option>";
echo "<option> UNSERVICEABLE </option>";
echo "<option> BEYOND ECONOMICAL REPAIR </option></select></td>";
echo "<tr><td>Search Type of Repair :</td>";
echo "<tr><td>Repair </td>";
echo "<td><input type=checkbox name=repair value=rep /></td>";
echo "<tr><td>Updrade/Modification </td>";
echo "<td><input type=checkbox name=upgrade value=um /></td>";
echo "<tr><td>Preventitive Maintenance Check </td>";
echo "<td><input type=checkbox name=pm value=pm /></td>";
echo "<tr><td>No Fault Found </td>";
echo "<td><input type=checkbox name=nofault value=nf /></td>";
echo "</table>";
echo '<center><input type="submit" class="button" id="submit" value="Search"/>    </center>';
echo "</form>";

我的表格如下

表 aecm、aicm 等列 - 部分、序列、mac、ip、状态

表 aecmhis、aicmhis 等列 - 串行、修复、升级、pm、nofault

我想使用上述表格(或类似表格)进行搜索并显示所有表格的结果。序列号在 aecm-aecmhis 和 aicm-aicmhis 等之间是通用的。状态只是 3 个选项中的 1 个,修复、升级、pm、nofault 列要么为空,要么包含yes在其中。只是在寻找解决这个问题的最佳方法。

4

2 回答 2

0

为什么不将表格作为参数,我的意思是使用 post 让用户指定他们想要搜索的表格,其余代码可以保持不变。我不太确定我是否了解您真正需要的东西,所以如果这不是您想要的,请告诉我

于 2012-08-04T06:29:01.357 回答
0

如果您希望能够在每次搜索时使用多个查询词查询多个表,那么sql并不是最好的解决方案。像Apache Lucene这样的东西可能是一个开始寻找的地方。我知道Zend Framework有一个实现索引 Lucene 搜索引擎的组件,并且可能是一个开始的地方(您可以只使用 ZF 所需的组件)。

PS这不简单!

祝你好运。

于 2012-08-04T06:58:10.703 回答