2012-10-10 64 views
0

我有點新的PHP/MySQL的,所以我想這些東西的工作,辛苦如何google一下一些指引...如何將客戶和項目鏈接到另一個?

所以,我嘗試去學習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或BI收到同樣的項目,我不知道該如何向項目和「綁定」將它們分開一定顧客。我的意圖是將用戶「綁定」到項目和客戶。

任何提示到正確的方向表示讚賞!

回答

0

您需要另一個表格,其中包含關鍵字(customers.id,projects.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. 
0

您可以在選擇查詢的INNER JOIN,像這樣:

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

在這裏,我也認爲你確實有customer表中的列名是相同的project

+1

我讀了OP,其含義是projects.name是指項目的名稱,而customers.name是指客戶的名稱,因此您無法在該值上加入兩個表。 – GarethL

0

您需要添加一些表格。 首先是一個表格,表示客戶與項目之間的關係。這將會像

客戶ID |項目ID
1 | 1
2 | 3
....

客戶和用戶也需要這些。

現在您可以參考此表來獲取您所需的信息並執行必要的連接來獲取您的數據。

相關問題