Помогите с формированием ходилок, вверх/вниз, в Nested Sets

alexrzl

Новичок
Помогите с формированием поднятие/опускание веток в Nested Sets

Я пишу собственную CMS и для каталога в меню выбрал Nested Sets. У меня появилась проблема в том что я не могу написать код чтобы поднятие/опускание веток с новым уровнем начинались с начала.
сайт: http://stushkin.net/cms/index.php?alias=settings_menu
пример кода:
PHP:
$sql = "SELECT a.id_menu, a.left_key, a.right_key, a.level, a.name_menu, b.name_module, a.active_menu FROM menu a 
JOIN modules b ON a.id_module = b.id_module 
WHERE a.level > 0 ORDER BY a.left_key"; 
$db->query($sql);
$num_rows = $db->num_rows(); 
if($num_rows > 0) { 
      $i = 1; 
      $list_menu = ""; 
      $array_level = array(); 
      foreach($db->fetch_array("MYSQL_ASSOC") as $value) {
		if($value["active_menu"] == 0) {
			$active = $IMG."kalarm_disabled.jpg";
			$doing = "active";
		} else {
			$active = $IMG."button_ok.jpg";
			$doing = "hide";
		}
		if($i == 1) $img_arrow = "<a href=\"index.php?alias=settings_menu&doing=down&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1downarrow.jpg\" border=\"0\" /></a>";
		elseif($i == $num_rows) $img_arrow = "<a href=\"index.php?alias=settings_menu&doing=up&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1uparrow.jpg\" border=\"0\" /></a>";
		else $img_arrow = "<a href=\"index.php?alias=settings_menu&doing=up&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1uparrow.jpg\" border=\"0\" /></a>&nbsp;<a href=\"index.php?alias=settings_menu&doing=down&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1downarrow.jpg\" border=\"0\" /></a>";
		if($value["level"] > 1) $name_menu = str_repeat("&nbsp;&nbsp;", $value['level']).$value["name_menu"];
		else $name_menu = $value["name_menu"];
		$list_menu .= "<div>
		<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\" class=\"footer_settings_menu\">
			<tr>
				<td width=\"20px\" align=\"center\">" . $i . "</td>
				<td width=\"200px\">".$name_menu."</td>
				<td width=\"100px\" align=\"center\">".$img_arrow."</td>
				<td width=\"100px\" align=\"center\">".$value["name_module"]."</td>
				<td width=\"150px\" align=\"center\">
				<a href=\"index.php?alias=settings_menu&doing=".$doing."&id_menu=".$value["id_menu"]."\"><img src=\"".$active."\" border=\"0\" /></a>
				<a href=\"index.php?alias=settings_menu&doing=edit&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."kedit.jpg\" border=\"0\" /></a>
				<a href=\"index.php?alias=settings_menu&doing=delete&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."editdelete.jpg\" border=\"0\" onclick=\"if(confirm('Вы уверены?')) return true; else return false;\" /></a>
				</td>
			</tr>
		</table>
		</div>";
		$i++;
	} 	
} 	
include_once $TPL . "settings_menu/settings_menu_all.php";
 

Фанат

oncle terrible
Команда форума
в чем проблема - в составлении запросов или в интерфейсе?
 

Фанат

oncle terrible
Команда форума
он мешает не мне.
он мешает тебе.
можешь не убирать. лично мне твои "ходилки" не нужны.
особенно если убирание сведется к тупому стиранию нескольких строк кода.
 

alexrzl

Новичок
Я решил этот вопрос заменив
PHP:
if($i == 1) $img_arrow = "<a href=\"index.php?alias=settings_menu&doing=down&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1downarrow.jpg\" border=\"0\" /></a>";
elseif($i == $num_rows) $img_arrow = "<a href=\"index.php?alias=settings_menu&doing=up&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1uparrow.jpg\" border=\"0\" /></a>";
else $img_arrow = "<a href=\"index.php?alias=settings_menu&doing=up&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1uparrow.jpg\" border=\"0\" /></a>&nbsp;<a href=\"index.php?alias=settings_menu&doing=down&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1downarrow.jpg\" border=\"0\" /></a>";
на
PHP:
if($level != $value["level"]) {
				if($level < $value["level"]) {
					$sql = "SELECT id_menu FROM menu WHERE left_key = ".($value["right_key"] + 1);
					$db->query($sql);
					if($db->num_rows() == 0)
						$img_arrow = "";
					else
						$img_arrow = "<a href=\"index.php?alias=settings_menu&doing=down&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1downarrow.jpg\" border=\"0\" /></a>";
				}
				elseif($level > $value["level"])
					$img_arrow = "<a href=\"index.php?alias=settings_menu&doing=up&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1uparrow.jpg\" border=\"0\" /></a>";
			} else {
				$sql = "SELECT id_menu FROM menu WHERE left_key = ".($value["right_key"] + 1);
				$db->query($sql);
				if($db->num_rows() == 0)
					$img_arrow = "<a href=\"index.php?alias=settings_menu&doing=up&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1uparrow.jpg\" border=\"0\" /></a>";
				else
					$img_arrow = "<a href=\"index.php?alias=settings_menu&doing=up&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1uparrow.jpg\" border=\"0\" /></a>&nbsp;<a href=\"index.php?alias=settings_menu&doing=down&id_menu=".$value["id_menu"]."\"><img src=\"".$IMG."1downarrow.jpg\" border=\"0\" /></a>";
			}
 
Сверху