我在MySQL数据库中有这个表(只是一个样本)
+----+--------------+---------+--------+-----------+
| id | name | place | number | type |
+----+--------------+---------+--------+-----------+
| 1 | Banana | farm | 100000 | fruit |
| 2 | Apple | park | 100000 | fruit |
| 3 | Eggplant | street | 500 | vegetable |
| 4 | Bitter Gourd | village | 2000 | vegetable |
+----+--------------+---------+--------+-----------+
...
我使用PHP将数据提取到我的网页,我希望它按类型显示在有序列表中。
水果
蔬菜
任何人都可以帮我解决这个问题,我的数据库中有很多类型。我已经能够将数据从数据库中提取到我的网页了。
使用此代码,但我想以与上述相同的方式输出数据。
<?php
$result = mysql_query("SELECT * FROM table;");
while($row = mysql_fetch_array($result)) {
$id = $row['id'];
$name = $row['name'];
$type = $row['type'];
echo "
<tr>
<td>$id</td>
<td>$name</td>
<td>$type</td>
</tr>
";
?>
答案 0 :(得分:4)
可能会帮助你
<?php
$result = mysql_query("SELECT DISTINCT(type) FROM table");
while($row=mysql_fetch_array($result))
{
echo "<ul>
<li>$row['type']
<ul>";
$result1 = mysql_query("SELECT * FROM table WHERE type=$row['type']");
while($row1=mysql_fetch_array($result1))
{
echo "<li>$row1['name'] | $row1['place'] | $row1['number']</li>";
}
echo "</ul></li></ul>"
?>
虽然不推荐使用MYSQL,但请使用MYSQLI_ *函数
答案 1 :(得分:2)
就个人而言,我更喜欢以我首先显示它的方式重新组织数据,这使得代码循环结果并显示它们更具可读性,例如:
<?php
$result = mysql_query("SELECT * FROM table ORDER BY number;");
$produceByType = array();
while ($row = mysql_fetch_array($result)) {
$produceByType[ $row['type'] ][] = $row;
}
?>
<table>
<?php
foreach ($produceByType as $type => $produce):
?>
<tr>
<th colspan="3"><?= $type ?></th>
</tr>
<?php
foreach ($produce as $row): ?>
<tr>
<td><?= $row['name'] ?></td>
<td><?= $row['place'] ?></td>
<td><?= $row['number'] ?></td>
</tr>
<?php
endforeach;
endforeach; ?>
</table>
答案 2 :(得分:1)
按条款添加订单
select * from table order by type, name;
接下来,将类型转换为变量。根据结果中新行的新类型检查类型。如果它相同,则渲染新行,否则关闭该行并插入新行。
<?php
$result = mysql_query("SELECT * FROM table order by type, name;");
$oldtype = "";
while($row=mysql_fetch_array($result))
{
$id = $row['id'];
$name = $row['name'];
$type = $row['type'];
if ($type != $oldtype)
{
echo "
<tr>
<td>$type</td>
</tr>
";
$oldtype = $type;
}
echo "
<tr>
<td>$name</td>
</tr>
";
} ?>
我没有运行代码,但逻辑是正确的。
请使用css将样式应用于缩进值。
答案 3 :(得分:1)
SQL允许您使用“ORDER BY”子句对数据进行排序
例如,按照您执行的数量/数量订购数据
SELECT * FROM table ORDER BY number;
这将按最小或最大的数量对结果进行排序。此外,
SELECT * FROM table ORDER BY number DESC;
将按数量从最大到最小排序结果。
在你的情况下,似乎你想按他们排序然后数量。在这种情况下,你可以做
SELECT * FROM table ORDER BY type ASC, number DESC;
根据您的选择,相应地修改行中的SQL查询。 E.g:
$result = mysql_query("SELECT * FROM table;");
到
$result = mysql_query("SELECT * FROM table ORDER BY type ASC, number DESC;");