2012-02-21 159 views
0

我對php很新,但是我的學習速度非常快,我有一個問題,我希望你的專業版可以幫助我。我做了一些Google搜索,找不到答案。做while循環,如果外鍵等於主鍵,則執行while循環

我想做一個動態的下拉菜單,有兩個級別 - 我建立了一個數據庫並安裝了數據,第一級有一個主鍵和類別名,下一級有一個主鍵,foriegn鍵和子類別名稱。

我已經創建了一個do while循環的超類作品!現在我試圖插入子類別。我會試着總結一下我想要達到的目標。

while每個catergory之間的類別循環運行另一個循環時,顯示該類別的主鍵匹配子類別的foriegn鍵的所有子類別。然後繼續。

例如

Category 
    Sub category 
    Sub category 
    Sub category 
Category 
    Sub category 
Category 
    Sub category 
    Sub category 

等等....

關於如何做到這一點的編碼有什麼建議?

我希望這是有道理的。

預先感謝您!

親切的問候。

<?php 

// Query member data from the database and ready it for display 

$category_sql = "SELECT * FROM tm_product_category"; 
$category_query = mysql_query($category_sql) or die(mysql_error()); 
$categorylist = mysql_fetch_assoc($category_query); 
?> 
<?php 

//Connect to the database through our include 
include_once "connect_to_mysql.php"; 
// Query member data from the database and ready it for display 

$subcategory_sql = "SELECT * FROM tlk_sub_cat"; 
$subcategory_query = mysql_query($subcategory_sql) or die(mysql_error()); 
$subcategorylist = mysql_fetch_assoc($subcategory_query); 
?> 








<?php do { ?> 

    <ul><li><a href="category.php?pk_cat_id=<?php echo $categorylist['pk_cat_id'];?>"><?php echo $categorylist['category']; ?></a></ul> 

     <?php 

if ($categorylist['pk_cat_id'] == $subcategorylist['fk_cat_id']) 
    { 
    do { ?> 

      <li><a href="subcategory.php?pk_cat_id=<?php echo $subcategorylist['pk_sub_cat_id'];?>"><?php echo $subcategorylist['txt_sub_cat']; ?></a></li> 

      <?php } while ($subcategorylist = mysql_fetch_assoc($subcategory_query)); 
     ; } 
    ?> 

    <?php } while ($categorylist = mysql_fetch_assoc($category_query)); 

    ?> 

所有我越來越ATM是;

類別 所有子類別 類別 空間 類別 空間 類別 空間 的列表中,直到類別用完。

+2

顯示您的代碼,請 – Alfabravo 2012-02-21 18:21:53

+0

,如果可能的話還可以使用您的db架構。 – Vamsi 2012-02-21 18:24:24

+0

上面加上 - 謝謝。 – user1224032 2012-02-21 18:40:06

回答

0

您可以使用JOIN執行單個查詢,如INNER JOIN,然後遍歷返回的一組記錄。如果以前的外鍵與當前的外鍵不同,那麼您處於一個新的主記錄中,{do magic}與主記錄相關,然後{do magic}用於當前子記錄,否則,僅爲{do magic}當前子記錄。

編輯:

SELECT tm_product_category.*, tlk_sub_cat.* 
FROM tm_product_category INNER JOIN tlk_sub_cat ON 
tm_product_category.pk_cat_id = tlk_sub_ca.fk_cat_id 

你在前面加上表名和一段相互引用表字段。 AFAIK與MySQL,你可以離開表名稱,如果該字段是唯一的,但通常留在完整性。 MySQL網站有文檔討論其他連接類型。

+0

我似乎無法掌握內部加入 – user1224032 2012-02-21 20:11:18

+0

請參閱編輯... – horatio 2012-02-21 20:37:40

+0

然後你是否在這個循環上運行? – user1224032 2012-02-22 07:51:36