使用多个变量PHP MySQL创建表搜索功能

时间:2012-08-04 06:18:13

标签: php mysql search

我正在尝试使用多个变量创建搜索功能。基本上我有一个标准样式表单,每个元素都有一个名称。通过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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

P.S。这不简单!

祝你好运。