MySQL: как мне показать простые «категории» для этого? - PullRequest
2 голосов
/ 29 августа 2010

Я хочу более или менее простой индекс с моим программным обеспечением для создания заметок PHP, каждая заметка имеет поле «язык» для языка программирования, на котором она написана. Когда я выполняю итерацию по каждой записи в цикле while, яя не уверен, как бы я перечислил их категории, такие как:

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

Нужно ли размещать все записи во временном массиве с if s, как это?

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

Хотя это выглядит не лучшим образом, поскольку мне нужно жестко закодировать каждый раздел ... Я застрял.

Ответы [ 2 ]

2 голосов
/ 29 августа 2010

вы можете сгруппировать уже в базе данных. или сортировать по разделам, а затем выполнять итерацию и выводить правильный код разделения при изменении раздела. временный массив также является решением. учитывая ваш пример кода 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 голос
/ 29 августа 2010

Похоже, вам нужно сделать таблицу поиска здесь.Например, следующее.

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
...