Problem z kolejnościa wyswietlanych elementów drzewa


(Aglasek) #1

Witam

Powiedzmy ze robię menu na zasadzie drzewa. Znalazłem fajny skrypt : http://media.zyxist.com/artykuly/drzewa_w_php_mysql.pdf i wszystko było by ok tylko nie wiem jak zrobić aby zamienić kolejność. Bo stworzyłem dodatkową kolumnę o nazwie sequence i chciałbym aby po wpisaniu odpowiednich wartości z ta kolumnę zamienił mi strukturę tego drzewa czyli np. jak wstawię przy rekordzie "Dom jednorodzinny" 2 a przy "Dom wielorodzinny 1 to najpierw mi pokaże "Dom wielorodzinny a potem Dom jednorodzinny itd. Po prostu zamiana węzłów. Oto mój kod tylko coś mi nie za bardzo działa. Proszę o pomoc.

function displayTree($root)

{

	dbConnect();

	// pobierz parametry glownego wezla

	$r = mysql_query('SELECT `left`, `right` FROM drzewko WHERE id=\''.$root.'\' ORDER BY `sequence`');

	if($row = mysql_fetch_assoc($r))

	{

		$right = array();

		$r = mysql_query('SELECT * FROM drzewko WHERE `left` BETWEEN \''.$row['left'].'\' AND \''.$row['right'].'\' ORDER BY `left`, `sequence`');

		while($row = mysql_fetch_assoc($r))

		{


			if(count($right) > 0)

			{					

				while($right[count($right)-1] < $row['right'])

				{

					array_pop($right);

				}				

			}

			echo str_repeat('| ',count($right))."\n";

			if(count($right) - 1 > 0)

			{

				echo str_repeat('| ', count($right) - 1) . '+- '. $row['nazwa']."
";

			}

			else

			{

				echo '+- '.$row['nazwa']."
";

			}

			$right[] = $row['right'];

		}

		return 1;		

	}

	return 0;	

}