0

複数の変数を使用して検索関数を作成しようとしています。基本的に私は標準的なスタイルのフォームを持っており、各要素には名前があります。送信時にこれらの名前が取得されPOST、検索クエリが実行されます。私は自分のコードを投稿しましたが、おそらくこれをひどい方法で行ったことはわかっていますが、それを適切にする方法についての方向性を探しています。PHPはまだ非常に新しいので、これを構造化するためのより良い方法についてのアドバイスがあり、それを行って学習/実装できます. 現在、最初の変数を介して検索します$searchしかし、残りを実装する方法がわかりません。ユーザーは、1 つまたは複数の変数を入力できる必要があります。その後、検索が実行されます。この時点では、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 などの列 - part、serial、mac、ip、status

テーブル aecmhis、aicmhis など 列 - シリアル、修理、アップグレード、午後、ノーフォールト

上記のフォーム (または同様のもの) を使用して検索を実行し、すべてのテーブルの結果を表示したいと考えています。シリアル番号は aecm-aecmhis と aicm-aicmhis などで共通です。ステータスは 3 つのオプションのうちの 1 つにすぎず、repair、upgrade、pm、nofault の列は空であるか、含まyesれています。これについて最善の方法を探しているだけです。

4

2 に答える 2

0

why not take table as an argument too i mean use post to let the user specify the table they want to search the rest of the code can remain the same. I am not very sure i understood what you really needed so let me know if this is not what u wanted

于 2012-08-04T06:29:01.357 に答える
0

検索ごとに複数のクエリ用語を使用して複数のテーブルをクエリできるようにする場合、sqlは最適なソリューションではありません。Apache Luceneのようなものが探し始める場所かもしれません。Zend Frameworkには、インデックス付きの Lucene 検索エンジンを実装するコンポーネントがあり、開始点になる可能性があることは知っています (必要なコンポーネントだけを ZF で使用できます)。

PS これは単純ではありません。

幸運を。

于 2012-08-04T06:58:10.703 に答える