<?php //5
// require the class
require 'PHP4_Mysql3MPTTA.class.php';
$db = mysql_connect( 'localhost', 'root', 'password' );
if( !@mysql_select_db( 'tree', $db ) ) {
mysql_unbuffered_query( 'CREATE DATABASE tree', $db );
mysql_select_db( 'tree', $db );
}
if( isSet( $_GET['deldb'] ) ) {
$q = "DROP TABLE tree;
DROP TABLE branch;
CREATE TABLE tree (
id INT(10) NOT NULL AUTO_INCREMENT,
sx INT(10) UNSIGNED NOT NULL,
dx INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE branch (
id INT(10) NOT NULL AUTO_INCREMENT,
tree_id INT(10) UNSIGNED NOT NULL,
name VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO tree VALUES( NULL, 1, 16 );
INSERT INTO tree VALUES( NULL, 2, 15 );
INSERT INTO tree VALUES( NULL, 3, 6 );
INSERT INTO tree VALUES( NULL, 4, 5 );
INSERT INTO tree VALUES( NULL, 7, 8 );
INSERT INTO tree VALUES( NULL, 9, 14 );
INSERT INTO tree VALUES( NULL, 10, 11 );
INSERT INTO tree VALUES( NULL, 12, 13 );
INSERT INTO branch VALUES( NULL, 1, 'Massimiliano' );
INSERT INTO branch VALUES( NULL, 2, 'Francesco' );
INSERT INTO branch VALUES( NULL, 3, 'Mario' );
INSERT INTO branch VALUES( NULL, 4, 'Luigi' );
INSERT INTO branch VALUES( NULL, 5, 'Fabio' );
INSERT INTO branch VALUES( NULL, 6, 'Piero' );
INSERT INTO branch VALUES( NULL, 7, 'Gianni' );
INSERT INTO branch VALUES( NULL, 8, 'Luca' );
";
$rows = explode( ';', $q );
for( $a = 0, $b = count($rows) - 1; $a < $b; $a++ ) {
@mysql_unbuffered_query( trim( $rows[$a] ), $db );
}
}
// CLASS DECLARATION
$MPTTA = &new PHP4_Mysql3MPTTA( $db );
// DB MANAGEMENT => ADD A NODE
if( isSet( $_GET['add'], $_GET['name'] ) ) {
$MPTTA->addNode( $_GET['add'], $_GET['name'] );
}
// DB MANAGEMENT => REMOVE A NODE
elseif( isSet( $_GET['remove'] ) ) {
$MPTTA->delNode( $_GET['remove'] );
}
// DB MANAGEMENT => MOVE A NODE
elseif( isSet( $_GET['move'], $_GET['where'] ) ) {
$MPTTA->moveNode( $_GET['move'], $_GET['where'] );
}
// GET ALL NODES
$q1 = @mysql_query(
"SELECT
branch.id, branch.name, tree.sx, tree.dx
FROM
branch, tree
WHERE
branch.tree_id = tree.id
ORDER BY
tree.sx
ASC",
$db
);
// THEN SHOW THOOSE
if( $q1 && mysql_num_rows( $q1 ) > 0 ) {
$redirect = false;
$output = "
<script type=\"text/JavaScript\">
function add( where ) {
var w = window.prompt( 'Insert the name of the new branch' );
var str = '{$_SERVER['PHP_SELF']}?add=' + where + '&name=' + w.split(\"'\").join(\"\\'\");
window.open( str, '_self' );
}
function move( from ) {
var w = window.prompt( 'Insert the name of the new branch id where to move' );
var str = '{$_SERVER['PHP_SELF']}?move=' + from + '&where=' + w;
window.open( str, '_self' );
}
</script>
<pre>";
$last_sx = 1;
$tab = 0;
while( $r = mysql_fetch_row( $q1 ) ) {
$compare = (int)$r[2];
if( $compare === ( $last_sx + 1 ) ) {
$tab++;
}
else if( $compare > ( $last_sx + 2 ) && $tab >= ( $compare - ( $last_sx + 2 ) ) ) {
$tab -= $compare - ( $last_sx + 2 );
}
$output .= str_repeat( "\t", $tab );
if( $tab > 0 ) {
$output .= "[<a title=\"add a branch\" href=\"#\" onclick=\"add( {$r[0]} ); return false;\">+</a>] {$r[0]} - <b><a title=\"remove this branch\" href=\"{$_SERVER['PHP_SELF']}?remove={$r[0]}\">{$r[1]}</a></b> ({$r[2]}, {$r[3]}) [<a title=\"move this branch\" href=\"#\" onclick=\"move( {$r[0]} ); return false;\">--></a>]<br />";
}
else {
$output .= "[<a title=\"add a branch\" href=\"#\" onclick=\"add( {$r[0]} ); return false;\">+</a>] {$r[0]} - <b>{$r[1]}</b> ({$r[2]}, {$r[3]})<br />";
}
$last_sx = $compare;
}
echo "<a href=\"{$_SERVER['PHP_SELF']}?deldb=true\">re-create the database</a>".$output."</pre>";
}
else {
echo "<a href=\"{$_SERVER['PHP_SELF']}?deldb=true\">create the database</a>";
}
// CLOSE DB CONNECTION
mysql_close( $db );
?>
|