分析
PHP を使用して Web サイトを作成する場合、分類は非常に重要です。この 2 番目の分類は、現在、ほとんどの Web サイトが 3 番目のカテゴリにのみ分類されています。
第一分類(親分類)→第二分類(子分類)→第三分類(孫分類)
このような関連する分類が増えれば増えるほど、プログラムやデータベースの制御が複雑で困難になる 分類処理システム、ニュース、その他の分類など、このレベルでの分類を記録するのに必要なデータベースは 1 つだけであるため、同じレベルでの制御は非常に簡単です。ただし、Web サイトの場合は 1 つのレベルです。分類だけでは十分ではありません。次のように再度分類する必要があります:
システム -> Linux、Windows
ニュース -> Linux ニュース、Windows ニュース
このようにすれば、少なくとも人々に分類が明確になります。システムには Linux と Windows が含まれ、ニュースには Linux ニュースと Windows ニュースが含まれることを理解してください。情報をより明確にするために、
linux-->システム ツール、カーネル、プログラミング言語、開発ツール
を分類し続けます。 ...
分類が第3レベルになると、情報資料の処理がより明確になります。つまり、情報を明確に処理するには、分類が詳細であるほど便利になります。情報を処理し、明確な目的を持ってネチズンが見つけやすくする必要がありますが、分類が洗練され続けるにつれて、プログラムとデータベースを制御することがますます困難になります
問題 1: 対処方法
難しさ 2: PHP を使用してこの明確な関係を完成させるにはどうすればよいでしょうか?
この種のマルチレベルで詳細な分類は、すべての PHP プログラマーが解決しなければならない問題です。良質で優れたウェブサイトは必然であり、この問題を解決するのは非常に複雑であり、最大の問題はデータベースの分類処理です。データベースを適切に処理しないと、膨大な作業負荷が発生し、再計画する必要さえあります。データベース...
これは誇張ではなく、多くの人がそうであるため... データベース処理では、第 1 レベルの分類方法を使用してデータベースを構築します。私も当時、分類を処理するためにこの方法を採用しました。ほとんどの Web サイトは第 3 レベルに分類されるため、データベース内に処理用の分類データベースは 3 つだけあります。しかし、下位の分類を続ける必要がある場合、このアプローチの欠点が明らかになります。
私が紹介したい方法は、分類データベースを使用する方法です。Windows を使用したことのある読者は、Windows フォルダーを使用して無限に階層化されたディレクトリを作成できることを知っています。 Linux のディレクトリ作成にもこのような機能があり、今回紹介した方法はこの形式と同じです。
2. データベース計画
------------------------ ---------------------------- -------------
分類の複雑さについては以前お話しましたが、無制限の分類を実現するにはデータベースをどのように計画するかが非常に重要になります
のデータベース計画について紹介したことがあります。はい、フォーラムは無制限のフォローアップを実現できます。分類にはこの種の親子関係も含まれるため、この親子関係を確立するにはいくつかの困難があります。関係
1) 各カテゴリの情報ストレージを処理する方法
2) カテゴリの親関係を処理する方法
データベース処理は次のようになります。ここでは、カテゴリを処理するために型データベースが構築されます:
フィールドの作成:
id(int): 各カテゴリの自然なシリアル番号を記録するために使用されます
uid(int): を記録するために使用されます。カテゴリの親カテゴリの ID 番号
type(char): カテゴリの名前
roue_id(varchar): 0:2:10:20: の ID と接続するアフィニティ ツリー: 親子関係を示す
roue_char(varchar): アフィニティ ツリー、次のようなもの: system: linux: 開発ツール: gcc: (このフィールドが存在するかどうかは関係ありません。関係をよりわかりやすく理解するために、もちろん文字表現はより直接的です数値表現よりも^o^ですが、このフィールドを追加するのが最善です)
このような無制限のカテゴリテーブルを確立します。次に、テーブルを処理してクエリするのに最も便利なデータベースを構築する必要があります。これは情報を保存するテーブルです type_message:
id(int): メッセージのシリアル番号;
title(varchar): メッセージのタイトル;メッセージの内容;
time: メッセージが作成された時刻;
これら 2 つのデータ テーブルは無制限の分類タスクを完了できます (2 つのテーブルの補助フィールドは追加されていません。
残りのすべてのタスク)。
3. プログラム制御
---------------------------------- ---------- --
これは、無制限の分類を実現する機能の中で最も複雑で困難なステップです。まず、ステップを見てみましょう。プログラム内で完了する必要があります:
1) カテゴリのアップロードを作成します。
3) 各カテゴリとそれらの関係を明確に表示します。
4) クエリ関数を処理します。5) 編集と削除の関数を処理する方法
カテゴリの編集と削除には 1 次元の問題が含まれるため、5 番目のステップが最も困難です
以下で PHP プログラムを 1 つずつ説明します。 :
1) カテゴリのアップロードを作成します
この関数を紹介する前に、explode() 関数を紹介します。これは、文字列を分解するために使用される、具体的な使用法です。例:
explode" 0 の数字: 1:2:3:4"
$val='0:1:2:3:4';
$rid=explode(":",$val);
explode( ) 関数の処理後、 $val の数値は $rid 配列に分解されます。引用したい場合は、単に echo '$rid[0],$rid[1],$rid[2]..."; と出力するだけです。 explode() 関数は、分類プロセス全体において非常に重要な役割を果たします。次に、非現行分類のプログラム制御を導入しましょう
分類の合計は 0 であり、すべての分類はその子孫であると仮定します。最初の分類「システム」を確立し、データベース内のその格納形式を確認します。 Linux':
id | type | rout_char
2 | Linux
これで、データベース ストレージの形式を完成させましょう。フォーラムに関連する コードは非常に似ています。uid にカテゴリの ID を入力するだけで、親カテゴリの uid は 0 です。コードを見てみましょう:
....
....
//デフォルトのページを設定します
if (empty($func)) $func=='showtype';
//親カテゴリの uid を設定します
if (empty( $uid)) $uid=0;
/ /データベースストレージ********************************** ***************** *
if ($func=='save'):
$fields = "";
if ($id!="") {
$fields .= ",id"
$values.=",$id"
}
if ($uid!="") {
$fields .= "; ,uid";
$values.=",$uid";
}
if ($type!="") {
$fields .= ",type";
$values.=",'$type' ";
}
if ($route_id=="") {
/ /親カテゴリのroute_idを取得します
if ($uid!=0) {
$result = mysqlquery("select * from type where id =$uid");
$route_id=mysql_result($result,0,"route_id") ;
} else {
$routr_id='0';
}
$fields .= ",route_id";
//フォーム独自のroute_id
$route_id="$route_id:$id";
$values.=" ,'$route_id'"
}
//独自のroute_charを作成します
if ($route_char!="") {
$fields .= ",route_char";
$route_char="$route_char:$type";
$values.=",'$route_char'"; Route_char=$type;
$values.=",'$route_char'"
}
$fields = substr($fields,1,strlen($fields)-1);値,1,strlen($values)-1);
$result = mysqlquery("タイプ ($fields) 値に挿入"); /* 保存を終了 * /
//カテゴリーアップロード****************************************** *********
if ($func=='createtype'):
//独自の ID を取得します
$result = mysqlquery("select * from type order by
id desc"); num=mysql_numrows($result);
if (!empty($num)) {
$cat = mysql_result($result, 0,"id");
$cat=0; /分類のステータスを決定する
if ($uid != 0) {
$result=mysql_query("select * from type where id =$uid");
$type=mysql_result($result,0,"type") );
$route_char=mysql_result($result,0,"route_char");
} else {
$type='親カテゴリ' ;
echo "
创建分类 |
$type |
"; echo "$type"; echo " |
"; for ($i=0;;$i++) { $a=$i+1; echo "href=$php_self?func=showtype&uid=",$path[$a],">",$path_gb[$i],":"; if (empty($path_gb[$i])) { break; } } echo " |
创建分类 |
$type |
"; echo "$type"; echo " |