ik heb een tree gemaakt en heb daar ook een copy tree functie in gemaakt alleen die werkt nog niet zo goed
voorbeeld staat op krijnkok.nl/menu/

Als je daar rechtermuisknop en copy doet dan is de structuur niet helemaal juist.
Ik hoop dat jullie mij kunnen helpen.

<code>
<?
include_once("db.php");
if(!isset($_GET['id'])){
$bier = 0;
} else {
$getid = substr($_GET['id'],4);
$sql2 = mysql_query("SELECT * FROM node WHERE ID = ".$getid);
$cat2 = mysql_fetch_array( $sql2 );
$bier = $cat2['parentID'];
}
//$bier = 0;
/**
* Functie die recursief door de categorieën heen loopt
*
* @param int $parent_id
*/

//$sql = "INSERT INTO node (parentID, title, position) (SELECT parentID, title, position+1 FROM node WHERE ID = '".$fromID."')";


$iets=1;
$excluded = array();
$excluded2 = array();
function load_categories( $parent_id ,$depth){
global $iets, $bier,$bla,$excluded;
$depth++;
if($iets == 1){
$sql = mysql_query("SELECT * FROM node WHERE parentID = ".$parent_id." AND ID = '".substr($_GET['id'],4)."' ORDER BY position");
} else {
$sql = mysql_query("SELECT * FROM node WHERE parentID = ".$parent_id." ORDER BY position");
}
if(mysql_num_rows($sql) >0 ){
while($cat = mysql_fetch_array( $sql )){
//echo "ID: ".$cat['ID']."----";
$excluded[] = $parent_id."|".mysql_insert_id()."|".$depth;

//$excluded2[] = mysql_insert_id();
//$excluded2[] = $parent_id;
// deze is niet goed hij zal nooit de goede parent id mee geven.

$nr = (count($excluded)-1);
//$nr2 = count($excluded2);
if($iets == 1){
$par_id = $parent_id;
} else {
// hier moet je checken of de parentID het zelfde is als de vorig gekopieerde node
// zo ja dan moet je natuurlijk het zelfde parentID mee geven.
// maar dan van de nieuw aan gemaakten node.
$now = explode("|",$excluded[($nr-1)]);
//echo $now[0]."-|-". $parent_id;
if($now[0] == $parent_id){
$par_id = $now[1];
} else {
$par_id = mysql_insert_id();
}
}

// hier de insert maken met de juiste parentid van de vorig aangemaakte sibling of parent
if($cat['position'] == 1){
$new_id = $cat['position']+1;
} else {
$new_id = $cat['position']+1;
}
$sql1 = "INSERT INTO node (parentID, title, position) VALUES (".$par_id.", '".$cat['title']." - copy','".$new_id."')";
echo $sql1;

if(mysql_query($sql1)){
$bla = true;
} else {
$bla = false;
}
echo str_repeat("--",$depth) . " " . $cat['title']." mijn id = ".mysql_insert_id()."<br />";
$iets++;
// laad alle categorieën in deze categorie
load_categories( $cat['ID'],$depth );
}
}
} // end function load_categories

load_categories($bier,-1);
//print_r($excluded);
//print_r($excluded2);
if($bla == true){
echo "OK";
} else {
echo "NOT OKE";
}
?>
</code>

<?php
            load_categories( $cat['ID'],$depth );  
            return $bla
        }
    }
} // end function load_categories

$bla = load_categories($bier,-1);
//print_r($excluded);
//print_r($excluded2);
if($bla == true){
    echo "OK";
} else {
    echo "NOT OKE";    
}
?>


Hopelijk zie je wat ik heb aangepast :)
Hoi ja ik heb gezien wat je bedoeld.
Maar dan stopt het script na 2 nodes
Omdat het het dan de mysql true mee geeft.
Die true is eigenlijk voor mijn eigen script om te kijken of alle mysql dingen zijn goed gegaan.

Had je nog andere ideeën ?
In iedergeval bedankt

Reageren