使用普通数据集对PHP ODBC结果进行分组?
问题描述:
我使用PHP连接并显示来自ODBC MS Access数据库的数据。我可以使用select语句显示必要的数据,但我无法学习如何根据另一个数据集对这些数据进行分组。使用普通数据集对PHP ODBC结果进行分组?
这里是我的代码:
<?
$handle = odbc_connect("Potter","","");
$results = odbc_exec($handle, "SELECT DISTINCT prodModelNo, prodSubType, prodCAD FROM product WHERE prodType NOT LIKE 'Plus' AND prodType = 'Fire' AND prodCAD LIKE '%CAD Drawing%' GROUP BY prodSubType");
// Results List
odbc_fetch_row($results, 0);
while(odbc_fetch_row($results)){
$cadString1 = odbc_result($results, "prodCAD");
$cadString2 = str_replace('<img src=images/i_drawing.gif> <a href=fire/', '', $cadString1);
$cadURL = str_replace(' target=_blank>CAD Drawing (zip format)</a>', '', $cadString2);
echo "<div id='file'><div id='filelink'><ul><li><a href='$cadURL'><img src='../images/download.png'/> Download</a> (zip format)</li></ul></div>";
echo odbc_result($results, "prodModelNo");
echo "<div class='clear'></div></div>";
}
?>
该输出准确的数据的列表。我想要做的是分组结果,这些结果共享一个共同的类别,并在每个组之间显示该类别名称。数据库中类别名称的列称为prodSubType。
我如何得到这个显示正确?
答
而不是GROUP BY prodSubType
使用ORDER BY prodSubType
- 所以你可以抓住所有物品。
然后,在你的代码中,有一个BEFORE和AFTER变量来输出标题差异(我不擅长解释这个)。看例子(未经测试):
<?php
$handle = odbc_connect("Potter","","");
$results = odbc_exec($handle, "SELECT DISTINCT prodModelNo, prodSubType, prodCAD FROM product WHERE prodType NOT LIKE 'Plus' AND prodType = 'Fire' AND prodCAD LIKE '%CAD Drawing%' ORDER BY prodSubType ASC");
// Results List
odbc_fetch_row($results, 0);
$oldHeader = "";
while(odbc_fetch_row($results)){
$header = odbc_result($results, "prodSubType");
if($header != $oldHeader) {
$oldHeader = $header;
echo "<h1>$header</h1>";
}
$cadString1 = odbc_result($results, "prodCAD");
$cadString2 = str_replace('<img src=images/i_drawing.gif> <a href=fire/', '', $cadString1);
$cadURL = str_replace(' target=_blank>CAD Drawing (zip format)</a>', '', $cadString2);
echo "<div id='file'><div id='filelink'><ul><li><a href='$cadURL'><img src='../images/download.png'/> Download</a> (zip format)</li></ul></div>";
echo odbc_result($results, "prodModelNo");
echo "<div class='clear'></div></div>";
}
?>
谢谢,这工作完美! – therealbiglou