PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

導入 | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

導入

導入 – DB_NestedSet について

概要

このパッケージを使用すると、 リレーショナルデータベース内に 任意の深さのツリーを作成することができます。 このパッケージには、次のような機能があります。

  • ノードの作成/更新/削除

  • ノードやツリー、サブツリーに対する問い合わせ

  • ノードやツリー、サブツリーのコピー (クローン)

  • ノードやツリー、サブツリーの移動

  • その他

ルートおよびサブノードの作成

この例では、ひとつのルートノードとふたつのサブノードを作成し、 それをデータベースに格納して表示します。

<?php
require_once 'DB/NestedSet.php';
require_once 
'DB/NestedSet/Output.php';
require_once 
'HTML/Menu.php';
$DatabasePointer mysql_connect("localhost""user""pwd");
mysql_select_db("database"$DatabasePointer);
$dsn 'mysql://user:pwd@localhost/database';
// テーブルに必要なカラム
$params = array(
    
'id'        => 'id',
    
'parent_id' => 'rootid',
    
'left_id'   => 'l',
    
'right_id'  => 'r',
    
'order_num' => 'norder',
    
'level'     => 'level',
    
'name'      => 'name',
);
$nestedSet =& DB_NestedSet::factory('DB'$dsn$params);
$nestedSet->setAttr(array(
        
'node_table' => 'nested_set',
        
'lock_table' => 'nested_set_locks',
        
'secondarySort' => 'name',
    )
);
$parent $nestedSet->createRootNode(array('name' =>'root 1'), falsetrue);
$nestedSet->createSubNode($parent, array('name' => 'node 1.1'));
$nestedSet->createSubNode($parent, array('name' =>'node 1.2'));
$data $nestedSet->getAllNodes(true);

foreach (
$data as $id => $node) {
     
$data[$id]['url'] = 'index.php?nodeID=' $node['id'];
}

$params = array(
    
'structure' => $data,
    
'titleField' => 'name',
    
'urlField' => 'url');
$output =& DB_NestedSet_Output::factory($params'Menu');
$structure $output->returnStructure();
$menu = & new HTML_Menu($structure'sitemap');
$menu->forceCurrentUrl($currentUrl);
$menu->show();
?>
忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「導入」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | 導入」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: