複数の変数を使用して検索関数を作成しようとしています。基本的に私は標準的なスタイルのフォームを持っており、各要素には名前があります。送信時にこれらの名前が取得され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
れています。これについて最善の方法を探しているだけです。