2010-08-28 13 views
2

我希望使用我的PHP筆記軟件獲取簡單的索引,每個筆記都有一個用於編寫它的編程語言的「語言」字段。當我在while循環中遍歷每個條目時,我是不知道如何我會列出他們的類別,如:MySQL:我將如何去顯示簡單的「類別」呢?

PHP: 
    Note 1 
    Note 5 
SQL: 
    Note 2 
    Note 3 

我是否需要將所有條目在臨時陣列if S,這樣的嗎?

if($field['language'] == "PHP") 
    $PHPsection[] = $field; 

儘管這看起來不是最好的,因爲我需要硬編碼每個部分..我卡住了。

回答

2

你可以在數據庫中分組。 或按部分分類,然後遍歷並在部分更改時輸出正確的分離代碼。臨時陣列也是一個解決方案。給你的示例代碼莫比這可以爲您指出一個可能的directino(altough臨時數組當然不是一個完美的解決方案,但如果數據沒有太大的它不那麼重要)

<? 
$result = array(); 
$result[] = array('section' => 'php','note' => 'bla'); 
$result[] = array('section' => 'php','note' => 'bla'); 
$result[] = array('section' => 'perl','note' => 'bla'); 
$result[] = array('section' => 'java','note' => 'bla'); 

$grouped = array(); 
for($i=0;$i<count($result);$i++) { 
    $grouped[$result[$i]['section']][] = $result[$i]['note']; 
} 
print_r($grouped); 

?> 
+0

請評論? – 2010-08-29 00:06:34

+0

我沒有-1,我實際上很喜歡這種方法,我不想對SQL做任何過於複雜的事情(比如其他問題),所以我會在瞭解其他方法後尋找這個解決方案。 – John 2010-08-29 00:25:49

+0

是的,我想拿起你離開的地方:) – 2010-08-29 00:29:49

1

聽起來像是你需要在這裏做一個查找表。如下所示。

Note_id | Language_id 
--------+------------ 
1  | 1 
1  | 4 
2  | 3 
3  | 1 

那麼,這鏈接這兩個表

Note_id | Note_Name| ... 
--------+----------+---- 
    1 | Testing | ... 
    2 | Groceries| ... 

Language_ID | Language 
------------+--------- 
    1  | English 
    2  | German 
    3  | Klingon 

從那裏,你可以編寫查詢:

SELECT 
    Note_name, Language 
FROM 
    languages l, notes n, language_note_lookup lnl 
WHERE 
    l.Language_ID = lnl.Language_ID AND 
    n.Note_ID = n.Note_ID AND 
    l.Language = "German" 

您還可以通過獲得所有語言的列表容易簡單地做一個

SELECT Language FROM languages