0

私は PHP/MySQl に慣れていないので、これらがどのように機能するかについてのガイドラインが欲しいのですが、これをグーグルで検索するのは難しいです...

それで、私はphp/mysqlを学ぼうとしていて、顧客と一緒に小さなページを書こうとしています。各顧客はいくつかのプロジェクトを持つことができます.

したがって、私のデータベースは次のように設定されています (これには大幅な変更が必要になると思います): - customers (id, name, description) - projects (id, name, description) - users (id, name )

<?php

if(isset($_GET['id'])) {

$query = "SELECT * FROM customers WHERE id = '". $_GET['id']."'";
   $results = mysql_query($query);

   while($row = mysql_fetch_array( $results ))
   {

   echo "<h3>" . $row['name'] . "</h3>";
   echo "<br />";

$query = "SELECT * FROM projects ORDER by name ASC";
   $results = mysql_query($query);


   echo "<table>
            <tbody>";

    while($row = mysql_fetch_array( $results ))
   {
   echo "<tr>
  <td><a href='main.php?id=" . $row['id'] . "'>" . $row['name'] . "</a></td>
  <td>" . $row['description'] . "</td>
        </tr>";
   }
   echo "</tbody>
   </table>";

}

} else {

$query = "SELECT * FROM customers ORDER by name ASC";
   $results = mysql_query($query);

   echo "<table>
         <thead>
          <tr>
            <th width='20%'>Customer</th>
            <th width='80%'>Description</th>   
          </tr>
        </thead>
        <tbody>";

while($row = mysql_fetch_array( $results ))
   {
   echo "<tr>
  <td><a href='main.php?id=" . $row['id'] . "'>" . $row['name'] . "</a></td>
  <td>" . $row['description'] . "</td>
        </tr>";
   }
   echo "</tbody>
   </table>";
}
?>

たとえば、顧客 A または BI が同じプロジェクトを受け取ることを選択した場合、プロジェクトを分離して特定の顧客に「バインド」する方法がわかりません。そして私の意図は、ユーザーをプロジェクトや顧客にも「バインド」することです。

正しい方向へのヒントは大歓迎です!

4

3 に答える 3

0

キー (customers.id,projects.id) を持つ別のテーブルが必要です。このようにして、各顧客をそれぞれのプロジェクトにリンクし、顧客の ID に応じてそのテーブルからデータを選択する必要があります。おそらく、ユーザー ID を顧客 ID にリンクするために、顧客/ユーザー テーブルも必要になるでしょう。

わかりやすくするために編集します。新しいテーブルは次のようになります。

CREATE TABLE customer_projects (
    customer_id INT NOT NULL,
    project_id INT NOT NULL,
    PRIMARY KEY (customer_id, project_id));

次に、各顧客をこのテーブルのプロジェクトに割り当てます。詳細 (顧客名、プロジェクト名) を取得するには、次のように他のテーブルと「結合」する必要があります。

SELECT customers.*, projects.* FROM customer_projects 
LEFT JOIN customers ON customers.id = customer_projects.customer_id 
LEFT JOIN projects ON projects.id = customer_projects.project_id 
WHERE customer_projects.customer_id = '1' // 1 is an example of a customer id.
于 2012-10-10T12:37:14.687 に答える
0

INNER JOIN次のように、選択クエリに を含めることができます。

"SELECT * FROM customers c INNER JOIN projects p ON p.name = c.name WHERE c.id = '". $_GET['id']."'";

ここで、私はあなたがと同じ表に名前列を持っていると考えました。customerproject

于 2012-10-10T12:37:20.937 に答える
0

いくつかのテーブルを追加する必要があります。まず、Customers から Projects への関係を表すテーブル。これは次のようになります

顧客ID | プロジェクト ID
1 | 1
2 | 3
....

顧客とユーザーにも同じことが必要です。

これで、このテーブルを参照して必要な情報を取得し、必要な結合を実行してデータを取得できます。

于 2012-10-10T12:38:38.957 に答える