Php 插入列作为类型的标题
我有一个MySql表,我想按类型列出内容并插入标题。我将使用什么类型的查询 由此:Php 插入列作为类型的标题,php,mysql,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 | | Fa
| 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>
Cat
- 毛茸茸的
- 爪子
狗
巴菲
芳
鲍瑟
等等。您的第一个问题是:
SELECT DISTINCT type FROM table ORDER BY type ASC
有了PHP,我相信您可以从这个查询中得到一个结果并循环使用它。下一步是在循环中放置另一个查询,该查询提供属于当前类型的动物列表:
SELECT name FROM table WHERE type='$type' ORDER BY name ASC
$type
只是保存当前类型的变量。我假定了列和表的名称,因此请根据您的代码进行更改。不要尝试使用SQL来完成所有这些操作(只需执行标准的select查询),使用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>";
}
?>
可能需要按类型进行排序,然后需要使用php.hmmm构建列表。。。它们可能是犬科动物,所以它们实际上可能是土狼、狼或其他类似的动物?在PHP中使用两个循环。第一:获取不同的动物类型,第二:在每个类型中显示所有具有这种类型的动物这是表示逻辑——我不会尝试通过SQL来实现这一点。只需按类型列排序即可。@Edga您能举例说明您的意思吗?如果您有1000种动物,您将运行1001个数据库查询。这会解决问题,但这不是一个好的解决方案,至少在99%的情况下是这样。也许最好是把它作为一个评论而不是一个答案来添加——我不知道,我是新来的,所以我真的不知道什么是最佳实践。鉴于这是现在公认的答案,OP(和其他阅读材料)可能会按照你所说的做——并可能将同样的解决方案应用到他/她遇到的其他问题上,这是IMO不正确的!)我没有具体说明任何方法。我只给出了SQL代码。我总是喜欢人们先玩一些东西,而不是直接给他们一个解决方案。特别是如果有什么帮助的话。此外,这样的循环也没什么问题:$r=mysqli\u查询($q);而($row=mysqli_fetch_assoc($r)){}
,如果您必须知道的话,这就是我稍后打算提出的建议