2015-11-03 63 views
1

我想分配一個產品到一個類別,我想到的唯一的解決方案是分配主鍵(在類別中的類別ID)與外鍵(類別ID在類產品)。PHP分配主鍵和外鍵

我需要做一些SQL代碼或更改index.php中的代碼嗎?

該代碼是向讀者展示我所做的!

public class Category { 
    public int Id{get;set;} 
    public string Name {get;set;} 
    } 
public class Product{ 
    public int Id{get;set;} 
    public int CategoryId{get;set;} 
    public String Brand {get;set;} 
    public String Name {get;set;} 
    public decimal Price{get;set; 
} 

MyDatabase的SQL

CREATE TABLE IF NOT EXISTS `product` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`category_id` INT NOT NULL , 
`brand` VARCHAR(100) NOT NULL , 
`name` VARCHAR(100) NOT NULL , 
`barcode` INT NOT NULL, 
`price` DECIMAL NOT NULL 
) ENGINE = INNODB; 

INSERT INTO `product` (`id`, `category_id`, `brand`, `name`,`barcode`,`price`) VALUES 
(1,1,'Coca Cola','Coke',123456789,0.99) 

CREATE TABLE IF NOT EXISTS `category` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`category_name` VARCHAR(100) NOT NULL 
) ENGINE = INNODB; 

INSERT INTO `category` (`id`, `category_name`) VALUES 
(1,'Drinks') 

的index.php

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <link href="css/bootstrap.min.css" rel="stylesheet"> 
    <script src="js/bootstrap.min.js"></script> 
</head> 

<body> 
    <div class="container"> 
      <div class="row"> 
       <h3>PHP CRUD Grid</h3> 
      </div> 
      <div class="row"> 
       <p> 
        <a href="create.php" class="btn btn-success">Create</a> 
       </p> 

       <table class="table table-striped table-bordered"> 
         <thead> 
         <tr> 
          <th>Id</th> 
          <th>CategoryId</th> 
          <th>Brand</th> 
          <th>Name</th> 
         <th>Barcode</th> 
         <th>Price</th> 
         </tr> 
         </thead> 
         <tbody> 
         <?php 
         include_once 'database.php'; 
         $pdo = Database::connect(); 
         $sql = 'SELECT * FROM product ORDER BY id DESC'; 
         foreach ($pdo->query($sql) as $row) { 
           echo '<tr>'; 
           echo '<td>'. $row['id'] . '</td>'; 
           echo '<td>'. $row['category_id'] . '</td>'; 
           echo '<td>'. $row['brand'] . '</td>'; 
        echo '<td>'. $row['name'] . '</td>'; 
        echo '<td>'. $row['barcode'] . '</td>'; 
        echo '<td>'. $row['price'] . '</td>'; 
           echo '<td width=250>'; 
           echo '<a class="btn" href="read.php?id='.$row['id'].'">Read</a>'; 
           echo '&nbsp;'; 
           echo '<a class="btn btn-success" href="update.php?id='.$row['id'].'">Update</a>'; 
           echo '&nbsp;'; 
           echo '<a class="btn btn-danger" href="delete.php?id='.$row['id'].'">Delete</a>'; 
           echo '</td>'; 
           echo '</tr>'; 
         } 

         ?> 
         </tbody> 
       </table> 

       <div class="container"> 
       <div class="row"> 
       <h3>PHP CRUD Grid</h3> 
       </div> 
       <div class="row"> 
       <p> 
       <a href="createCategory.php" class="btn btn-success">Create</a> 
       </p> 
       <table class="table table-striped table-bordered"> 
       <thead> 
       <tr> 
       <th>CategoryId</th> 
       <th>Category Name</th> 
       </tr> 
      </thead> 

      include_once 'database.php'; 
      <?php 
      $sql2 = 'SELECT * FROM category ORDER BY id DESC'; 
      foreach ($pdo->query($sql2) as $row) { 
       echo '<tr>'; 
       echo '<td>'. $row['id'] . '</td>'; 
       echo '<td>'. $row['category_name'] . '</td>'; 
       echo '<td width=250>'; 
       echo '<a class="btn" href="readCategory.php?id='.$row['id'].'">Read</a>'; 
       echo '&nbsp;'; 
       echo '<a class="btn btn-success" href="updateCategory.php?id='.$row['id'].'">Update</a>'; 
       echo '&nbsp;'; 
       echo '<a class="btn btn-danger" href="deleteCategory.php?id='.$row['id'].'">Delete</a>'; 
       echo '</td>'; 
       echo '</tr>'; 

      } 
      Database::disconnect(); 
      ?> 
       </tbody> 
      </table> 
     </div> 
    </div> 


    </body> 
</html> 
     <!--    <div class="container"> 
        <div class="row"> 
        <h3>PHP CRUD Grid</h3> 
        </div> 
        <div class="row"> 
        <p> 
        <a href="create.php" class="btn btn-success">Create</a> 
        </p> 
          <table class="table table-striped table-bordered"> 
        <thead> 
        <tr> 
         <th>CategoryId</th> 
         <th>Catengory Name</th> 
        </tr> 
        </thead> 

        $sql2 = 'SELECT * FROM category ORDER BY id DESC'; 
        foreach ($pdo->query($sql2) as $row) { 
         echo '<tr>'; 
         echo '<td>'. $row['id'] . '</td>'; 
         echo '<td>'. $row['category_name'] . '</td>'; 

         echo '<td width=250>'; 
         echo '<a class="btn" href="readCategory.php?id='.$row['id'].'">Read</a>'; 
         echo '&nbsp;'; 
         echo '<a class="btn btn-success" href="updateCategory.php?id='.$row['id'].'">Update</a>'; 
         echo '&nbsp;'; 
         echo '<a class="btn btn-danger" href="deleteCategory.php?id='.$row['id'].'">Delete</a>'; 
         echo '</td>'; 
         echo '</tr>'; 
        </div> 
        } 
        Database::disconnect(); 
        ?> 
        </tbody> 
        </table> --> 
+1

如果您剛開始使用PHP開發並想要創建應用程序,請選擇一個 [開發框架](http://codegeekz.com/best-php-frameworks-for-developers/),例如[Laravel] (http://laravel.com/),適合您的風格和需求。這些附帶的例子說明了如何做到你在這裏要求的。您提供的這些代碼將模型,視圖和控制器的關注融合在一起,難以遵循,而且對其他人來說很難理解。框架支持幫助促進理解和模塊化的約定。 – tadman

+1

感謝您的建議,但我認爲現在對我來說已經太遲了。 – TykiMikk

+0

也許對於這個特別的努力,但對於未來的企業,您可能想要學習其中的一個,因此您不必像在這裏一樣重新發明輪子。大多數框架都有一個自動處理關鍵分配和表間關係的ORM。通常只有一行或兩行代碼來建立一對多關聯。這裏你需要幾十個甚至更多。 – tadman

回答

0

基本上,主鍵和外鍵是數據庫概念。您必須將產品表中的category_id作爲索引,並將類別表id設置爲外鍵。

+1

是否有SQL編碼涉及或我必須這樣做phpmyadmin – TykiMikk

+0

同樣的事情。你可以根據自己的喜好去做。 – TGrif