Простой алгоритм отсеивания дочерних елементов

Yurik

/dev/null
Простой алгоритм отсеивания дочерних елементов

При редактировании дерева нельзя перемещать узлы в дочерние (любого уровня).
Вот простой алгоритм отсеивания дочерних елементов любого уровня вложения.
[sql]
CREATE TABLE tblnodes(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ref INT UNSIGNED NOT NULL ,
PRIMARY KEY (id),
INDEX (ref)
);
[/sql]
PHP:
 $result=mysql_query("SELECT * FROM tblnodes WHERE id=".(int) @$_GET['id']);
 $row=mysql_fetch_array($result) or die('NO ID Found');
 $result=mysql_query("SELECT * FROM tblnodes WHERE id<>".$row['id']." ORDER BY ref");
 echo "<select>";
	$reference[]=$row['id'];
	while ($r=mysql_fetch_array($result)) {
		if (in_array($r['ref'], $reference))
			$reference[]=$r['id'];
		else
			echo "<option value=".$r['id'].">".$r['id']."</option>";
	}
 echo "</select>";
 
Сверху