Hej!
Jag har en funktion för att visa en trädstruktur av mina objekt i mitt CMS.
Tabellen i db:n har det här fälten:
parcat
catid
linkname
level
user
catid är objektets unika id, parcat är objektets överordnade id (parent) i strukturen, level är vilken nivå i strukturen objektet befinner sig.
"Startsidan" är level=0 och parcat=0
Funktionen ser ut så här:
_____________________________________________
$user_pro = 1;
function DisplayThread($parcat,$user_pro) {
//SQL required to fetch all the pages
$sql = "SELECT * FROM pro_page WHERE parcat";
if ( $parcat == "" ) {
// set parcat to zero if empty
$sql .= "='0'";
} else
$sql .= "=$parcat";
$sql .= " AND user='$user_pro' ORDER BY ordning ASC";
// execute the sql-query
$re_query = mysql_query($sql);
$re_row = mysql_fetch_array($re_query);
$reply = false; // any pages?
if (mysql_num_rows($re_query)>0) {
do {
$db_parcat = $re_row["parcat"];
$db_catid = $re_row["catid"];
$db_linkname = $re_row["linkname"];
$db_level = $re_row["level"];
if ($db_parcat=='0' and $db_level=='0') {
$db_parcat = "-1";
}
// add page to result string
$result .= "<strong>catid:</strong> $db_catid <strong>parcat:</strong> $db_parcat <span style=\"color:#cc0000;\">$db_linkname</span> <strong>level:</strong> $db_level<br />\n";
// recursively fetch subpages
$result .= DisplayThread($db_catid,$user_pro);
} while ($re_row = mysql_fetch_array($re_query));
}
if (mysql_num_rows($re_query)>0) {
// at least one page was processed
return $result;
} else
return "";
}
echo DisplayThread(0,1);
_____________________________________________
Problemet är att om jag vill flytta runt mina objekt i strukturen så funkar det jätte-bra med parcat eftersom jag bara behöver ändra det på det objektet jag flyttar... däremot så blir ju level fel eftersom jag då måste köra en likadan rekursiv funktion på hela strukturen under det objektet som jag flyttar för att ändra level till den level dit jag flyttar objektet.
Jag kan säkert använda den här funktionen till att ändra level också men jag lyckas inte riktigt!
Är det någon som kan hjälpa mig? :-)