2013-11-15 50 views
0

我試圖創建一個手風琴菜單,其中每個手風琴菜單都拉出了鍛鍊的蘆丁,它在下面的數據庫示例中的類別列不同; Accordian menu that the db informations manually put從數據庫拉數據,其中每個數組包含列名稱類別及其子信息

我得到了我這樣的PDO :: db設計;

ID 標題 describtion 類別 主題標籤 視頻 看到 date_published

我怎麼能拉從數據庫中的信息被分類在我看來,文件中使用它的foreach。我希望我能夠讓我的問題清楚。

在此先感謝。

回答

1

您可以通過類別,然後名稱順序(確保您有類別索引,名稱) 您的查詢將是:

SELECT * FROM `workouts` ORDER BY category, name 

然後當你重複你檢查類別變化和如果關閉子列表並打開一個顯示類別的新列表。

另外,稍微清潔的解決方案將重複兩次,利用第一環路按類別關聯數組排序:

$sth = $dbh->prepare("SELECT * FROM workouts"); 
$sth->execute(); 

$workouts = array(); 
/* First Loop */ 
while(($result = $sth->fetch(PDO::FETCH_ASSOC)) !== FALSE) { 
    $workouts[$result['category']][] = $result; 
} 

現在,您可以遍歷$鍛鍊,使用鑰匙的範疇。

foreach($workouts as $category => $workoutsByCategory) { 
    //display category and start subset 
    foreach($workoutsByCategory as $workout) { 
    //display workout 
    } 
} 

這將是一個很多清潔你使用第二個表,其中包含類別名稱和使用該表的ID在你的鍛鍊表連接。然後您可以使用連接來獲得結果。你可能想尋找到關係數據庫設計和Normalization

例(未測試)表格佈局:

SELECT workouts.*, categories.title as category_title FROM workouts LEFT JOIN categories ON (category.id = workouts.category_id) 

這將使它更容易:

table "workouts" 
id | category_id | title | description | hashtags | video | seen | date_published 
table "categories" 
id | title 

然後你就可以用得到的結果改變其他進展類別的名稱......但你會閱讀我猜。

+1

我很驚訝,現在表達我的感受。你的回答給了我準確的結構來馬上完成它! – Oguzhan

+0

謝謝你的讚賞!請仔細閱讀關係數據庫設計。 它會改善你的工作和你自己的工作經驗。它會讓你更驚訝我猜:D –

相關問題