【问题标题】:MySQL: how would I go about displaying simple "categories" for this?MySQL:我将如何为此显示简单的“类别”?
【发布时间】:2010-08-28 23:45:48
【问题描述】:

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

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

我是否需要像这样将所有条目放在带有ifs 的临时数组中?

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

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

【问题讨论】:

    标签: php mysql categories


    【解决方案1】:

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

    <?
    $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,我其实很喜欢这种方法,我不想用SQL做任何太复杂的事情(就像另一个问题一样)所以我会在学习后寻找这个解决方案关于另一种方式。
    • 是的,我想从你离开的地方继续 :)
    【解决方案2】:

    听起来你需要在这里做一个查找表。比如下面的。

    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
    

    【讨论】:

      猜你喜欢
      • 2016-04-30
      • 1970-01-01
      • 2016-02-28
      • 2016-05-01
      • 2022-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多