如何将客户和项目相互链接?

时间:2012-10-10 12:33:59

标签: php

我是PHP / MySQl的新手,所以我想要一些关于这些东西是如何工作的指南,很难谷歌这个......

所以,我试着学习php / mysql,我即将与客户一起写一个小页面,每个客户都可以有一些项目。

所以,我的数据库设置如下(猜测这需要大量修改): - 客户(身份证,姓名,描述) - 项目(id,名称,描述) - 用户(id,名称)

<?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或B我收到相同的项目,我不知道如何分离项目并将它们“绑定”给某个客户。我的目的是将用户“绑定”给项目和客户。

赞赏任何正确方向的提示!

3 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

您可以在选择查询中添加INNER JOIN,如下所示:

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

在这里,我认为你在<{1}}表格中的已经一个名称列与customer中的名称列相同。

答案 2 :(得分:0)

您需要添加一些表格。 首先是一个表,表示从客户到项目的关系。这就像

客户ID |项目编号
    1 | 1
    2 | 3
....

客户和用户也需要相同。

现在您可以参考此表来获取所需信息并执行必要的连接以获取数据。