嗨,
标题说明了一切,我想制作一个带有子菜单的菜单。
所以是这样的:
- 父母1
- 子2
- 子 3
- 子2
- 父母2
我已经让这个工作了,但是代码看起来不太好。
那么我该如何改进我的代码,或者你是否更了解它,然后发布它。
这是代码:
<?php
$le_content .= '<div id="main_menu">';
$sQuery_get_all_parents = " SELECT
menu.id,
menu.`name`,
menu.url,
menu.parent_id
FROM `menu`
WHERE
menu.actif = 1 AND
menu.parent_id = 0
ORDER BY
menu.volgorde ASC";
$rResultaat_get_all_parents = mysql_query($sQuery_get_all_parents) or die(mysqlError($sQuery_get_all_parents));
$menu_parents = array();
$menu_child_1 = array();
$counter = 0;
$counter_child_1 = 0;
$counter_child_2 = 0;
while($row = mysql_fetch_assoc($rResultaat_get_all_parents)){
$menu_parents[$counter]['id'] = $row['id'];
$menu_parents[$counter]['name'] = $row['name'];
$menu_parents[$counter]['url'] = $row['url'];
$menu_parents[$counter]['parent_id'] = $row['parent_id'];
$counter++;
}
$le_content .= '<ul id="main_menu_ul">';
foreach ($menu_parents as $menu_entry => $value) {
$le_content .= '<li><a href="'.ROOT_HREF.$value['url'].'" >'.$value['name'].'</a>';
$sQuery_get_first_children = " SELECT
menu.id,
menu.`name`,
menu.url,
menu.parent_id
FROM `menu`
WHERE
menu.actif = 1 AND
menu.parent_id = ".$value['id']."
ORDER BY
menu.volgorde ASC";
$rResultaat_get_first_children = mysql_query($sQuery_get_first_children) or die(mysqlError($sQuery_get_first_children));
$row_count = mysql_num_rows($rResultaat_get_first_children);
if($row_count != false){
$le_content .= '<ol>';
while($row = mysql_fetch_assoc($rResultaat_get_first_children)){
$menu_child_1[$counter_child_1]['id'] = $row['id'];
$menu_child_1[$counter_child_1]['name'] = $row['name'];
$menu_child_1[$counter_child_1]['url'] = $row['url'];
$menu_child_1[$counter_child_1]['parent_id'] = $row['parent_id'];
$counter_child_1++;
}
foreach ($menu_child_1 as $menu_entry_child_1 => $value_child_1) {
$le_content .= '<li><a href="'.ROOT_HREF.$value_child_1['url'].'" >'.$value_child_1['name'].'</a>';
$sQuery_get_second_children = " SELECT
menu.id,
menu.`name`,
menu.url,
menu.parent_id
FROM `menu`
WHERE
menu.actif = 1 AND
menu.parent_id = ".$value_child_1['id']."
ORDER BY
menu.volgorde ASC";
$rResultaat_get_second_children = mysql_query($sQuery_get_second_children) or die(mysqlError($sQuery_get_second_children));
$row_count = mysql_num_rows($rResultaat_get_second_children);
if($row_count != false){
$le_content .= '<ol>';
while($row = mysql_fetch_assoc($rResultaat_get_second_children)){
$menu_child_2[$counter_child_2]['id'] = $row['id'];
$menu_child_2[$counter_child_2]['name'] = $row['name'];
$menu_child_2[$counter_child_2]['url'] = $row['url'];
$menu_child_2[$counter_child_2]['parent_id'] = $row['parent_id'];
$counter_child_2++;
}
foreach ($menu_child_2 as $menu_entry_child_2 => $value_child_2) {
$le_content .= '<li><a href="'.ROOT_HREF.$value_child_2['url'].'" >'.$value_child_2['name'].'</a></li>';
}
$le_content .= '</ol>';
}
$le_content .= '</li>';
}
$le_content .= '</ol>';
}
$le_content .= '</li>';
}
$le_content .= '</ul></div>';
?>
最后,我回应 $le_content .....