0

MySqlテーブルがあり、タイプ別にリストし、ヘッダーを挿入したいと思います。どのタイプのクエリを使用しますか?

これから:

| Fluffy   | Harold | cat        | f    | 1993-02-04 | NULL       |
| Claws    | Gwen   | cat        | m    | 1994-03-17 | NULL       |
| Buffy    | Harold | dog        | f    | 1989-05-13 | NULL       |
| Fang     | Benny  | dog        | m    | 1990-08-27 | NULL       |
| Bowser   | Diane  | dog        | m    | 1979-08-31 | 1995-07-29 |
| Chirpy   | Gwen   | bird       | f    | 1998-09-11 | NULL       |
| Whistler | Gwen   | bird       | f    | 1997-12-09 | NULL       |
| Slim     | Benny  | snake      | m    | 1996-04-29 | NULL       |
| Dalli    | Alli   | canine     | m    | 2001-12-20 | NULL       |
| Tara     | David  | canine     | f    | 2002-05-17 | NULL       |
| Mimi     | Alli   | guinea pig | m    | 2004-05-17 | NULL       |

これに:

<h2>Cat</h2>

<ul>
<li>Fluffy</li>
<li>Claws</li>
</ul>

<h2>Dog</h2>

<li>Buffy</li>
<li>Fang</li>
<li>Bowser</li>
</ul>

4

2 に答える 2

0

最初のクエリは次のようになります。

SELECT DISTINCT type FROM table ORDER BY type ASC 

PHPを使用すると、このクエリから結果を取得してループできると確信しています。次の1つは、現在のタイプに属する動物のリストを提供する別のクエリをループ内に配置することです。

SELECT name FROM table WHERE type='$type' ORDER BY name ASC

$type現在のタイプを保持する単なる変数です。列名とテーブル名を想定しているので、コードに合わせて変更してください。

于 2013-02-04T15:40:30.783 に答える
0

SQLでこれらすべてを実行しようとしないでください(標準の選択クエリを実行するだけです)。PHPを使用して結果をグループ化し、表示します。これを行うための最良の方法は、グループ化を行うオブジェクトを用意することです。これは、おそらく複数回必要になるためです。たとえば、クラスは次のようになります。

<?php
class Arrays
{
    public static function group($array,$key)
    {
        if(NULL == $array)
            return NULL;

        $grouped = NULL;

        foreach($array as $item)
        {
            $grouped[$item[$key]][] = $item;
        }

        return $grouped;
    }
}
?>

そして、ユースケースは次のようになります。

<?php
$result = ...; // The result of your database query.

$grouped_by_type = Arrays::group($result,"type");

foreach($grouped_by_type as $type => $group)
{
    echo "<h2>".ucwords($type)."</h2>";
    echo "<ul>";

    foreach($group as $animal)
    {
        echo "<li>".$animal['first_name']."</li>"; // Assumes the query brought back first_name...
    }

    echo "</ul>";
}
?>
于 2013-02-04T15:43:04.573 に答える