ホームページ > php教程 > php手册 > 入退室管理システムについての私の考え

入退室管理システムについての私の考え

WBOY
リリース: 2016-06-21 09:12:12
オリジナル
880 人が閲覧しました

コントロール

いくつかアイデアをください! ---- Diao Yan

# 権限制御システムを一度作成したことがありますが、変更する必要があるため、効果的な解決策が見つかりませんでした。
# いくつかのアイデアと一般的なアイデアを教えてください。ありがとうございます。要件は次のとおりです。
# 1. 各父親ノードの下に複数の子が存在します
# 2. 各子は 1 つの父親を持つことも、複数の父親を持つこともできます (複数の父親のレベルが異なる場合があります。これは、クロスオーバー現象があることを意味します)
# 3. 各父親は、同じ子または異なる子を管理できます
# 4. 各父親がログインすると、自分の子供のみを見ることができます (別の子供を管理している場合、ログインした
# 父親は自分の下の子供のみを見ることができます) 、それらが同じであれば、彼らが見る子供も同じです)
# 5. 各父親は自分の父親(子供?)を追加できます

質問から、次のツリー構造が得られます。このツリーをどのように保存し、どのように取得するかが鍵となります。

--0--absion - +
- 1-- 001 002003
- + - +004 006 007 007008
+ - + - +
- 3-- 007 003 008+ ----+----+
--4-- 007 006

004 でログインすると、(1,001)-[2,004]-(3,007) と (1,002)-[2,004]-(代わりに、3,003)-(4,007) など
(1,003)-(2,007) が表示されるはずです。
つまり、すべてのユーザーはログイン後、場合によっては複数のブランチで子を下方向に検索します。

テーブルは2つあります
テーブル1は全メンバーの情報(以下Uとします)、主キーid_uを保存します
テーブル2はメンバー間の関係(以下Kとします)、主キーid_u
を保存しますid_u | 名前 ...
-------+------
006 |
K
レベル |右
-----+------+----------+------+---------- ---+----------
1 | 001 | 2 |  2 |  003 |     2 |      |        1 |    3
3 |  004 |     2 |    4 |        1 |
4 |  007 |     3 |      |        3 |
5 |  002 |     1 |    6 |          |   14
6 |  004 |     2 |    7 |        5 |   12
7 |  003 |     3 |    9 |        6 |    8
8 |  008 |     3 |      |        6 |
9 |  005 |     4 |      |        7 |   10
10 |  006 |     4 |      |        7 |   11
11 |  007 |     4 |      |        7 |
12 |  006 |     2 |      |        5 |   13
13 |  007 |     2 |      |        5 |
14 |  003 |     1 |   15 |          |
15 |  007 |     2 |   16 |       14 |   18
16 |  001 |     3 |      |       15 |   17
17 |  002 |     3 |      |       15 |
18 |  008 |     2 |      |       14 |

その内: level 保存階層、next 保存下階層の id、previons 上階層保存の id、right 保存右階層の id
特定のデータ集団監視法に関して決定されます。 !
建议用数組計算、つまり一次性入数組、効率可能性高点

测试例、前未使用
$ar = array(
0,
array(id=> 1, id_u=>"001"、level=>1、next=>2、previons=>0、right=>5)、
array(id=>2、id_u=>003)レベル=>2、次=>0、前=>1、右=>3)、
配列(id=>3、id_u=>2、次= > 4、previons=> 1、right=> 0)、
array(id=> 4、id_u=>"007"、next=> 0、previons=> 3、right=> 0)、
array(id=> 5、id_u=>"002"、level=>1、next=> 6、previons=> 0、right=>14) ,
array(id=> 6,id_u=>"004", level=>2, next=> 7, previons=> 5, right=>12),
array(id=>; 7,id_u=>"003"、レベル=>3、次=> 前=> 6、右=> 8)、
配列(id=> 8,id_u=>) ", level=>3, next=>0, previons=>6, right=>0),
array(id=>9,id_u=>"005", level=>4, next=> 0、previons=> 7、right=>10)、
array(id=>10、id_u=>"006"、level=>4、next=> 0、前=> 7, right=>11),
array(id=>11,id_u=>"007", level=>4, next=>0, previons=>7, right=>0) ,
array(id=>12,id_u=>"006", level=>2, next=>0, previons=>5, right=>13),
array(id=>; 13,id_u=>「007」、レベル=>2、次=>0、前=>5、右=>0)array(id=>14,id_u=>"003", level=>1, next=>15, previons=>0, right=>0),
array(id=>15, id_u=>"007", level=>2, next=>16, previons=>14, right=>18),
array(id=>16,id_u=>"001", level=>3, next=>0, previons=>15, right=>17),
array(id=>17,id_u=>"002", level=>3, next= > 0、previons=>15、right=> 0)、
array(id=>18、id_u=>"008"、level=>2、next=>0、previons=> 14、right=> 0)
);
//print_r($ar);

関数ツリー($ar,$i,$key,$level) {
if($ar[$i][id_u] == $key || $ar[$i][レベル] > $level) {
for($j=0;$j<$ar[$i][level]-1;$j++)
エコー " ";
echo "+--";
echo $ar[$i][id_u]."
";
if($ar[$i][next] > 0)
tree($ar ,$ar[$i][next],$key,$level);
}
if($ar[$i][right] > 0)
tree($ar,$ar[$i][right] ],$key,$level);
}

$keys = array("001","002","003","004","005","006","007","008") ;

while(list($key,$value) = each($keys)) {
echo "===> $value
";
for($i=1;$i<=count( $ar);$i++) {
if($ar[$i][id_u] == $value) {
echo " [$value]
";
tree($ar,$i,$value) ,$ar[$i][レベル]);
}
}
}
?>



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート