0

私の問題はタイトルよりも少し広範囲ですが、私が何をしているのかを説明しようとします.

では、2 つのテーブルに移動したとしましょう。

テーブル名: ホスト

+------------+---------+
| host       | hostid  |
+------------+---------+
| EXAMPLE 1  |  10010  |
| EXAMPLE 2  |  10011  |
| EXAMPLE 3  |  10012  |
| EXAMPLE 4  |  10013  | 
+------------+---------+

テーブル名: アイテム

+---------+--------------+---------+---------+
| itemid  | itemname     | value   | hostid  |
+---------+--------------+---------+---------+
|  27037  | examplename1 | DATA 1  | 10010   |
|  27038  | examplename2 | DATA 2  | 10011   |
|  27039  | examplename3 | DATA 3  | 10012   | 
|  27040  | examplename4 | DATA 4  | 10013   |
|  27041  | examplename5 | DATA 5  | 10013   |
|  27042  | examplename6 | DATA 6  | 10013   |
|  27043  | examplename7 | DATA 7  | 10013   |
+---------+--------------+---------+---------+

次のコードを使用して、これらを Web ページに配置します。

<?php
$host = 'This is entered by user previously'

$sql = "SELECT hosts.host, items.itemname, items.value
    FROM items
    LEFT JOIN hosts ON hosts.hostid = items.hostid
    WHERE hosts.host LIKE '$host'";

$Connect = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)
    or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());

$Db = @mysql_select_db(DB_DATABASE, $Connect)
    or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno());

$result = @mysql_query($sql,$Connect)
    or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());

mysql_select_db(DB_DATABASE);


$num_rows = mysql_num_rows($result);
print "<table width=1000px border=1>\n";

$cols = 0;
while ($get_info = mysql_fetch_assoc($result)){ 
if($cols == 0)
{
  $cols = 1;
  print "<tr>";
  print "<th>Host</th>";
  print "<th>Item Name</th>";
  print "<th>Item Value</th>";
  print "<tr>\n";
}
print "<tr>\n";
foreach ($get_info as $field)
print "\t<td><font face=arial size=3/>$field</font></td>\n";
print "</tr>\n";
}
print "</table>\n";
?>

ユーザーが「EXAMPLE 4」と入力した場合、結果のテーブルは次のようになります。

+------------+--------------+------------+
| Host       | Item Name    | Item Value |
+------------+--------------+------------+
| EXAMPLE 4  | examplename4 | DATA 4     | 
| EXAMPLE 4  | examplename5 | DATA 5     | 
| EXAMPLE 4  | examplename6 | DATA 6     | 
| EXAMPLE 4  | examplename7 | DATA 7     | 
+------------+--------------+------------+

結果のテーブルが各行の横にチェックボックス付きで表示されるように、これを調整する必要があります。次のページに移動したときに変数を設定できるように、これらのチェックボックスを各行の「itemid」(表には表示されていません) に対応させる必要があります。たとえば、次のページで 'DATA 4' と 'DATA 7' にチェックを入れると、それらは値 '27040' と '27043' を持つ配列の一部になります。

言葉遣いが悪い場合は申し訳ありませんが、プロセスに頭を悩ませています。

4

1 に答える 1

0

これには多くの方法があります。

簡単な方法の 1 つは、チェックボックスに名前を付けるときに項目 ID を使用することです。これにより、対応するイベントをトリガーして情報を送信するときに、チェックボックス自体の必要な値を取得できます。

もう 1 つは、対応するチェックボックスと同様の方法で名前が付けられた非表示の入力です (つまり、チェックボックス ID= 'c_1' 、非表示の入力 id= 'h_1'、非表示の入力は value='item_id' です)。

于 2012-11-19T15:09:24.837 に答える