将列插入为类型的标题

时间:2013-02-04 15:22:40

标签: php mysql

我有一个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>

2 个答案:

答案 0 :(得分:0)

您的第一个查询是:

SELECT DISTINCT type FROM table ORDER BY type ASC 

使用您的PHP,我相信您可以从此查询中获取结果并循环遍历它。接下来是在循环中放入另一个查询,该循环为您提供属于当前类型的动物列表:

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

$type只是保持当前类型的变量。我假设了列名和表名,所以请更改它以适合您的代码。

答案 1 :(得分: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>";
}
?>
相关问题