เดี๋ยวมาอธิบายให้นะครับ อันนี้เป็น code แรกทีเ่ขียนขึ้น ซึ่งยังไม่ดีมากนัก อาจใช้ได้กับบางสถานการเท่านั้น!!
$resG = mysql_query('SELECT * FROM mtg_group ORDER BY mg_id',$conn);
while ($rowG=mysql_fetch_assoc($resG)) {
$arrGroup[$rowG[mg_id]] = $rowG[mg_name];
}
//print_r($arrGroup);
$sql = "SELECT * FROM mgt_type ORDER BY mt_group,mt_id";
$result = mysql_query($sql, $conn);
while ( $row = mysql_fetch_array($result) ) {
$arrType[][$row[mt_group]] = '
<li><img src="../images/table_2.png" alt="หมวด" width="16" height="16" align="absbottom" /> | '.$row[mt_id].'-'.$row[mt_group].'-'.$row[mt_name].'</li>';
//$arrType[][$row[mt_group]] = $row[mt_id].'-'.$row[mt_group].'-'.$row[mt_name];
}
//print_r($arrType);
foreach ($arrGroup as $kg => $gname) {
print $gname;
print '<ul>';
foreach ($arrType as $type => $typename) {
print $typename[$kg];
}
print '</ul>';
} และสำหรับด้านล่างนี้ เป็น วิวัฒนาการมาจากอันแรกครับ แต่เอา JOIN เข้ามาช่วย
$resG = mysql_query('SELECT
mgt_type.mt_id,
mgt_type.mt_name,
mgt_type.mt_group,
mtg_group.mg_id,
mtg_group.mg_name
FROM
mgt_type
INNER JOIN mtg_group ON mgt_type.mt_group = mtg_group.mg_id
ORDER BY mtg_group.mg_id, mgt_type.mt_id', $conn);
while ($rowG=mysql_fetch_assoc($resG)) {
if ($rowG[mt_group] != $tg) {
print ($ic > 0) ? '</ul>' : NULL;
print '
<h4>'.$rowG[mg_name].'</h4>
';
$tg = $rowG[mt_group];
print '<ul>
';
print '
<li><img src="../images/table_2.png" alt="หมวด" width="16" height="16" align="absbottom" /> | '.$rowG[mt_name].'</li>
';
} else {
print '
<li><img src="../images/table_2.png" alt="หมวด" width="16" height="16" align="absbottom" /> | '.$rowG[mt_name].'</li>
';
}
$ic++;
}
print '</ul>'; * ทำ source ตัวอย่างให้ดู
* ชี้ประเด็นและข้อแตกต่าง
* การนำไปใช้