2011-06-07 50 views
0

我是新來的PHP,我認爲這很容易,因爲我已經設法使用php做了很多更難的東西,但不知何故,我被困住了。不勝感激,如果任何人都可以幫我..Php,Mysql。基於多維數組生成表格

例如,我有三個表:

  • 1臺我裝食品的名稱(這是 子類別表)
  • 第二表我食物的保持型(它 是類別表)
  • 3臺我抱什麼每個人通過 ID喜歡吃(主表,相關 另外兩個)

TblFood:

  1. Food_ID;
  2. Food_name

TblTypes:

  1. TYPE_ID;
  2. TYPE_NAME

TblLikes:

  1. PERSON_ID;
  2. Food_ID;
  3. TYPE_ID

這些表只是一個例子是我抱,但我認爲這將是更容易理解我要問什麼。 所以我需要我能夠根據TblLikes輸出食物類型以及與這些類型相關的食物的確切名稱。 例如,如果我選擇的人ID爲PERSON_ID = '1' 我需要輸出」

人1喜歡:

水果

  • 蘋果
  • 香蕉
  • 桃子
  • 西瓜

種蔬菜

  • 土豆
  • 洋蔥

肉類

  • 火雞
  • 豬肉

  • 相關 型以上

食品的另一個名字所以基本上我需要的那種類型的食品和食品的名稱會互相基於TblLikes關聯。

這是怎麼了我一直在做的一切至今:

mysql_select_db($database_localhost, $localhost); 

$query_likes = " SELECT TblLikes.Person_id, TblLikes.Type_ID, TblTypes.Type_name, TblLikes.Food_ID, TblFood.Food_name 
FROM (TblFood RIGHT JOIN TblLikes ON TblFood.Food_ID = TblLikes.Food_ID) LEFT JOIN TblTypes ON TblLikes.Type_ID = TblTypes.Type_ID 
WHERE TblLikes.Person_id = '1' "; 
$likes = mysql_query($query_likes, $localhost) or die(mysql_error()); 
$row_likes = mysql_fetch_assoc($likes); 
$totalRows_likes = mysql_num_rows($likes); 
?> 
<table border="1" cellpadding="5" cellspacing="5"> 
    <tr> 
    <td>Types of food</td> 
    </tr> 
    <tr> 
    <?php for ($i = 1; $i <= sizeof($row_likes['Type_name']); $i++)?> 
    <td><?php echo $row_likes['Type_name'];?></td> 
    </tr> 
<?php for ($i = 1; $i <= sizeof($row_likes['Food_name']); $i++) { 
    echo $row_likes[$i]['Food_name']; 

}?> 

</table> 

預先感謝您..

回答

0

有很多方法可以做到這一點,但我建議你應該加入你的3個表和爲類型添加一個group by子句,然後將其另存爲一個數組。然後你應該在數組中運行一個foreach,並從沒有group by子句的第一個查詢中進行選擇,但是用食物類型的where子句,然後通過另一個foreach運行單個項目。例如:

$query_type_likes = " 
    SELECT 
     TblLikes.Person_id, 
     TblLikes.Type_ID, 
     TblTypes.Type_name, 
     TblLikes.Food_ID, 
     TblFood.Food_name 
    FROM 
     (TblFood RIGHT JOIN TblLikes ON TblFood.Food_ID = TblLikes.Food_ID) 
     LEFT JOIN TblTypes ON TblLikes.Type_ID = TblTypes.Type_ID 
    WHERE 
     TblLikes.Person_id = '1' 
    GROUP BY 
     TblLikes.Type_ID 
"; 
$foodType = mysql_query($query_type_likes, $localhost) or die(mysql_error()); 

foreach ($foodType as $food_Type_Id => $food_Type_Data) 
{ 
    $query_food_likes = " 
     SELECT 
      TblLikes.Person_id, 
      TblLikes.Type_ID, 
      TblTypes.Type_name, 
      TblLikes.Food_ID, 
      TblFood.Food_name 
     FROM 
      (TblFood RIGHT JOIN TblLikes ON TblFood.Food_ID = TblLikes.Food_ID) 
      LEFT JOIN TblTypes ON TblLikes.Type_ID = TblTypes.Type_ID 
     WHERE 
      TblLikes.Person_id = '1' AND 
      TblLikes.Type_ID = '".mysql_real_escape_string($food_Type_Id)."' 
    "; 
    $query_food_likes = mysql_query($query_likes, $localhost) or die(mysql_error()); 

    $html = "<ul> 
       <li>$food_Type_Data['Type_name'] 
        <ul>"; 
    foreach ($query_food_likes as $food_likes_Id => $food_likes_Data) 
    { 
     $html .= " 
         <li>$food_likes_Data['Food_name']</li> 
    } 
    $html .= " 
        </ul> 
       </li> 
      </ul>"; 
} 

echo ($html); 
+0

改變了一些線在代碼這一點,因爲回聲的錯誤: '$ HTML = 「

  • 」 $ food_Type_Data [ 'TYPE_NAME'] 「
      」;。。 的foreach($ query_food_likes爲$ food_likes_Id => $ food_likes_Data) { $ HTML = 「
    • 」 $ food_likes_Data [ 'Food_name'] 「
    • 」。; } $ html。=「
」;「 } ; (注意:未定義的變量:html – Christine 2011-06-08 07:41:54

+0

)對於錯誤感到抱歉,您收到的foreach錯誤是因爲我犯了一個錯誤第二個查詢。它應該是:'$ food_likes = mysql_query($ query_food_likes,$ localhost)或die(mysql_error());' – Nightwolf 2011-06-08 12:07:44