如何使用PHP将MySQL数据行放在适当的标题下?
我有以下MySQL表结构:如何使用PHP将MySQL数据行放在适当的标题下?,php,mysql,group-by,sql-order-by,Php,Mysql,Group By,Sql Order By,我有以下MySQL表结构: num field company phone website 1 Gas abcd 123456789 abcd.com 2 Water efgh 987654321 efgh.com 3 Water ijkl 321654987 ijkl.com 4 Heat mnop 987654321 mnop.com 5 Gas qrst 123789654 qrst.com ... 是否可以使用PHP
num field company phone website
1 Gas abcd 123456789 abcd.com
2 Water efgh 987654321 efgh.com
3 Water ijkl 321654987 ijkl.com
4 Heat mnop 987654321 mnop.com
5 Gas qrst 123789654 qrst.com
...
是否可以使用PHP(可能混合使用GROUP\u BY
和ORDER\u BY
)以以下格式将数据回送到屏幕上:
Gas:
abcd qrst
123456789 123789654
abcd.com qrst.com
Water:
efgh ijkl
987654321 321654987
efgh.com ijkl.com
Heat:
mnop
321654987
mnop.com
它的确切格式并不重要。我只需要在适当的字段下列出不同的数据行,并且不重复任何字段。我已经试着弄清楚这一点有一段时间了,但我对PHP还不熟悉,我似乎不知道如何做,如果可能的话,或者是否有更好的方法来组织我的数据以使其更简单。为了避免执行“气体”查询、“水”查询和“热量”查询,可以按“字段”排序结果然后用PHP处理显示
SELECT
Field,
Company,
Phone,
Website
FROM
tblYourTable
ORDER BY
Field
在PHP循环中,您需要在当前“字段”上保留选项卡,并在其更改时启动一个新列表。例如:
$CurrentField = '';
... loop
if ($MyData->Field != $CurrentField) {
$CurrentField = $MyData->Field;
....
}
... end loop
我假设您知道如何将MySQL数据检索到数组中。。。因此,我们有:
[0] {
num => 1,
field => "Gas",
company => "abcd",
phone => "123456789",
website => "abcd.com"
}
[1] ... (so on)
然后创建一个循环,如:
foreach($data as $row) {
$service = $row["field"]; //Water, Gas, etc...
unset($row["field"]); //do not add this
foreach($row as $key => $value) {
$field[$service][$key][] = $value;
}
}
生成的数组类似于:
$field["Gas"]["company"][0] = "abcd";
$field["Gas"]["company"][1] = "qrst";
$field["Water"]["company"][0] = "efgh";
...
$field["Gas"]["phone"][0] = "123456789";
$field["Gas"]["phone"][1] = "123789654";
$field["Water"]["phone"][0] = "987654321";
...
这样,您就可以生成输出:
foreach($field as $service => $infoarr) {
echo $service."\n";
foreach($infoarr as $info => $datarr) {
foreach($datarr as $datum) {
echo $datum."\t";
}
echo "\n";
}
echo "\n";
}
理论上(未经测试)将输出:
Gas
abcd qrst
123456789 123789654
Water
efgh ...
我希望你觉得它有用。。。应该有更好的办法,但我没想到
太多了…Ahhh是的,这是有道理的。谢谢!没问题-很高兴我能帮忙。我也喜欢这种方法!另一个看起来会更快更简单,但是如果我遇到任何严重的问题,我会尝试一下。