PHP アドバンスト: 無制限の分類を実現
分析
";
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 "
終わり; /* end createtype */
//显示分类************************************** **********
if ($func=='showtype'):
echo "";
";
// 分別状況判断
if ($uid!=0) {
$result=mysql_query("select * from type where id=$uid");
$type=mysql_result($result,0,"type");
} else {
$type='父分类';
}
echo " " ;创建分类
echo " ";$type
$result=mysql_query("select * from type where uid=$uid");
$num=mysql_numrows($result);
if (!empty($num)) {
for ($i=0;$i
$id=mysql_result($result,$i,"id");
$type=mysql_result($result,$i,"type");
echo " ";";
echo "$type";
echo "
}
}
echo "
終わり; /* ショータイプの終了 */
....
....
?>
以上の手順便は、無制限の分別クラスの基本的な構築、保存、および表示を完了し、次に完了です善分クラス構築機能の各部分を完了します。
4. 経路追跡
-------------- ----------------------------------------
冒頭已经介绍分別の構築方法を経て、分別テーブルに rout_id と rout_char の両方が保存されている分別経路の情報が書き込まれており、何も処理しない限り、プログラムは次の順序で最下層の分別まで進むことができます (当然のことながら)ブラウザのバック アクセスを使用することもできますが、このプログラムは完全ではないため、経路指示を実現するには、rout_id と rout_char の情報分解を完了する必要があります。
特定の実行法、假如データ台库记ダウンロード了この么一条分类情報:
id:4
uid:2
type:开公開ツール
rout_id:0:1:2:4
rout_char:系统:linux:开公開ツール
プログラムが分別クラス「公開ツール」に到達したとき、経路情報の表示要求に加えて、経路上の任意の分クラスに移動できることも要求されますが、ここでは、explode() 関数を使用する必要があります。 rout_char は関連しているため、次のように分解できます:
$path=explode(":",$rout_id);
$path_gb=explode(":",$rout_char);
この時点では、すべての分別情報が分解されており、現在行われている方法は、経路経路情報:
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;
}
}
上でこの段階の番号は、パスを接続する機能を実現します。これは無制限の分数であるため、上限はありません。そのため、for($i=0;;$i++) には制限がありません。 、一方、循環退出条件は $path_gb[$i] 中の値が空であり、この段代を入力する类表示版面の程序块内就行了:
....
....
//显示分类********************************* ***************
if ($func=='showtype'):
echo "";
";
// 分別状況判断
if ($uid!=0) {
$result=mysql_query("select * from type where id=$uid");
$type=mysql_result($result,0,"type");
//******** 新規追加代価 ***************
$rout_id=mysql_result($result,0,"rout_id");
$rout_char=mysql_result($result,0,"rout_char");
$path=explode(":",$rout_id);
$path_gb=explode(":",$rout_char);
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 "
//******** 終了 ***********************
} else {
$type='父分类';
}
echo " " ;创建分类
echo " ";$type
$result=mysql_query("select * from type where uid=$uid");
$num=mysql_numrows($result);
if (!empty($num)) {
for ($i=0;$i
$id=mysql_result($result,$i,"id");
$type=mysql_result($result,$i,"type");
echo " ";";
echo "$type";
echo "
}
}
echo "
終わり; /* ショータイプの終了*/
....
....
?> この関数ブロックを完了すると、次のことができます。引き続き機密情報を表示します...関連コンテンツの詳細については、PHP 中国語 Web サイト (www.php.cn) にご注意ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
