MySQL:我将如何为此显示简单的“类别”?

时间:2010-08-28 23:45:48

标签: php mysql categories

我希望使用我的PHP笔记软件或多或少的简单索引,每个笔记都有一个“语言”字段,用于编写其编写的语言。当我在while循环中遍历每个条目时,我'我不确定如何列出它们的类别,如:

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

我是否需要将所有条目放在if s的临时数组中,如下所示?

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

虽然这看起来并不是最好的,因为我需要对每个部分进行硬编码..我被卡住了。

2 个答案:

答案 0 :(得分:2)

您可以在数据库中进行分组。 或按部分排序,然后迭代并在部分更改时输出正确的分隔代码。临时数组也是一种解决方案。鉴于您的示例代码maby,这可以指向一个可能的directino(尽管临时数组当然不是一个优雅的解决方案,但如果数据不是那么多它并不重要)

<?
$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);

?>

答案 1 :(得分: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