|
|
|
จะทำ array ต่อไปนี้ให้อยู่ในรูปแบบ ul li แบบเรียงลำดับถูกต้องได้ยังไงครับ (ช่วยผมทีได้โปรด) |
|
|
|
|
|
|
|
ไม่มีใครทำได้เลยเหรอ T_T
|
|
|
|
|
Date :
2011-03-14 21:11:45 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หลังจากได้ array มาแล้ว ทำได้ไม่ยากครับ
ตอนแรกก็ loop รวบรวม parent_id เหมือนกันอยู่ในกลุ่มเดียวกันครับ
Code (PHP)
$rs = array();
$rs[4] = array(1,2,3); สมมุติว่า 1,2,3 คือ category_id ซึ่ง 1,2,3 นั้นมี parent_id เหมือนกันคือ 4
$rs[8] = array(5,6,7); สมมุติว่า 5,6,7 คือ category_id ซึ่ง 5,6,7 นั้นมี parent_id เหมือนกันคือ 8
$rs[10] = array(4,8); สมมุติว่า 4,8 คือ category_id ซึ่ง 4,8 นั้นมี parent_id เหมือนกันคือ 10
จากนั้นจะทำการเรียก recursive function เพื่อ
แสดงผล ul li ซ้อนกันแบบ tree
Code (PHP)
function show_tree($id){
global $rs;
if (!empty($rs[$id])){
echo '<ul>';
foreach($rs[$id] as $ch) {
echo '<li>'; echo $ch; show_tree($ch);
echo '</li>';
}
echo '</ul>';
}
}
show_tree(10);
ข้างบนนี้จะต้องปรับปรุงโครงสร้างเพื่อให้ค้นหาข้อมูลใน array มาแสดงอีกครับ ตอนนี้แสดงแค่ category_id เท่านั้น
|
|
|
|
|
Date :
2011-03-14 21:59:42 |
By :
num |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ ได้แล้วครับ
Code (PHP)
/**
* show category nested
* copy from http://stackoverflow.com/questions/1310649/getting-a-modified-preorder-tree-traversal-model-nested-set-into-a-ul
* @param int $category_id
* @return string
*/
function show_category_nested($category_id = 0) {
$list = $this->getDescendants($category_id, true);
$output = "";
if ( is_array($list) ) {
$current_depth = 1;
$counter = 0;
$output = "\n<ul class=\"category_tree\">\n";
foreach ( $list as $key => $item ) {
$node_depth = $item->nlevel;
if($node_depth == $current_depth){
if($counter > 0) $output .= "</li>\n";
} elseif($node_depth > $current_depth){
$output .= "\n".str_repeat("\t", $node_depth)."<ul>\n";
$current_depth = $current_depth + ($node_depth - $current_depth);
}elseif($node_depth < $current_depth){
$output .= str_repeat("</li>\n</ul>\n",$current_depth - $node_depth);
$output .= "</li>\n";
$current_depth = $current_depth - ($current_depth - $node_depth);
}
$output .= str_repeat("\t", $node_depth) . "<li id=\"c".$key."\"";
$output .= " class=\"lv$node_depth" . ($node_depth < 2 ? ' open' : '') . "\"";
$output .= "><a href=\"".site_url("category/view/".urlencode($item->category_uri))."\">".$item->category_name."</a>";// แก้ไข link category ที่นี่
++$counter;
}
$output .= str_repeat("</li>\n</ul>\n",$node_depth-1)."</li>\n";
$output .= "</ul>\n\n";
}
return $output;
}// show_category_nested
เอามาจาก http://stackoverflow.com/questions/1310649/getting-a-modified-preorder-tree-traversal-model-nested-set-into-a-ul
|
|
|
|
|
Date :
2011-03-14 22:31:47 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|