0

我对 PHP/MySQl 有点陌生,所以我想要一些关于这些东西如何工作的指南,很难用谷歌搜索这个......

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

所以,我的数据库设置如下(猜想这需要大量修改): - 客户(id,名称,描述) - 项目(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 或 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

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

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

客户和用户也需要相同的内容。

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

于 2012-10-10T12:38:38.957 回答