PHP および MySQL_PHP チュートリアルに基づいて動的ツリー メニューを実装する
ツリー メニューは、多くのデスクトップ アプリケーション システムで広く使用されており、その主な利点は、構造が明確であり、ユーザーが現在の場所を明確に把握できることです。ただし、Web 上のツリー メニューのアプリケーションでは、直接使用できる理想的な既成コンポーネントが存在しないため、プログラマは主に JavaScript を使用していくつかの単純なツリー構造のメニューを実装しますが、これらのメニューは で用意されることがよくあります。各メニュー項目と各メニュー項目間の階層関係を定義すると、別のメニュー構造が必要になることが多く、あまり便利ではありません。
関数の再帰について調べた結果、この種のツリーメニューは再帰関数を通じてツリーメニューの表示を動的に変更でき、系列の数に制限がないことがわかりました。以下は、私が php、mysql、JavaScript を使って書いた動的ツリー メニューの処理コードです。興味がある方は、私と一緒に実装方法を見てください:)
まず、データベースが必要です。データベースを作成するには、次のテーブルを作成します:
create table menu (
id tinyint(4) not null auto_increment,
parent_id tinyint(4)default '0' not null,
name varchar(20),
url varchar(60) ),
主キー (id)
);
このテーブルでは、
parent_id は、前のメニューの ID 番号を保存するために使用されます。
name はメニューの名前、つまりページに表示されるメニューの内容です。
url メニューが最終レベルのメニューの場合、このフィールドは接続の URL アドレスを指定する必要があります。このアドレスを保存します。他の最終レベル以外のメニューの場合、このフィールドは空です
データベースができたので、テスト時に使用したレコードをいくつか追加します。
メニュー値に挿入します。 ( '1', '0', '人事管理', ' ');
メニュー値に挿入 ( '2', '0', 'コミュニケーション', ''); ( '3', '1', 'ファイル管理', '');
メニュー値に挿入 ( '4', '1', '出席管理', 'http://localhost/personal/attendance) .php');
メニュー値に挿入 ( '5', '2', 'アドレス帳 ', '');
メニュー値に挿入 ( '6', '2', 'Web会議') , '');
メニュー値に挿入 ( '7', '3', 'ファイルを追加', ' http://localhost/personal/add_achive.php'); 8', '3', 'アーカイブの検索', 'http://localhost/personal/search_archive.php');
メニュー値に挿入 ( '9', '3', 'アーカイブの削除', 'http ://localhost/personal/delete_archive.php');
メニュー値に挿入 ('10', '5', '新しい通信レコードの追加','http://localhost/communication/add_address.php') ;
メニュー値に挿入 ('11', '5', '通信レコードのクエリ', http://localhost/communication/search_address.php' );
メニュー値に挿入 ('12', ' 5', '通信記録の削除', http://localhost/communication/delete_address.php');
メニュー値に挿入 ( '13', '6', '会議の開催', 'http:// localhost/communication/convence_meeting.php');
メニュー値に挿入 ( '14', '6', 'http://localhost/communication/search_meeting.php');レコードでは、第 1 レベル以外のメニューのparent_id を上位レベルのメニューの ID 番号として指定する必要があることに注意してください。そうしないと、メニューが表示されません:)
わかりました!データベースでは、以下は php と JavaScript を介してデータベースからメニューを読み取って表示します:)
1. JavaScript スクリプト: function showmenu(menuid)
{
if(menuid.style.display=="none " )
{
menuid.style.display="";
}
else
{
menuid.style.display="none";
}
}
このスクリプトは、クリックに応答するために使用されます。特定のメニューをクリックします。
2. css ファイル:
font-family: "verdana", "line-height: 130%; :1px
}
color: #990000; font-family: "verdana", "font-size: 12px; : none; 文字間隔:1px
}
色: #990000; フォントサイズ: 12px;
}
a:active {
color: #990000; font-family: "verdana", "宋体"; text-decoration: none; 文字間隔: 1px
}
a:hover {
color: #ff0000; font-family: "verdana", "宋体"; font-size: 12px; text-decoration: 文字間隔:1px
} .menu {
color:#000000; font-family: "verdana", "宋体"; font-size: 12px; カーソル: hand
}
は、フォント、色、スーパーリンクスタイルなどのいくつかの基本的なスタイル情報を定義します。など、スタイルを変更したい場合は、ここで変更するだけです。
3. 以下は私の php ページです。
;/head>
//基本的な変数設定
$globals["id"] //ドロップダウン メニューの ID 番号を追跡するために使用されます
$layer=1; ; //現在のメニューのレベルを追跡するために使用します
//データベースに接続します
$con=mysql_connect("localhost","root","");第 1 レベルのメニューを抽出します
$sql ="select * from menu whereparent_id=0";
$result=mysql_query($sql,$con);
//第 1 レベルのメニューが存在する場合、スタートメニュー
if(mysql_num_rows($result)>0 ) showtreemenu($con,$result,$layer,$id)
//=============== ============== ================
//ツリーメニュー関数を表示 showtreemenu($con,$result,$layer)
/ /$con: データベース接続
//$result: 必須 表示されるメニューレコードセット
//layer: 表示する必要があるメニューのレベル
//=============== ================= ===============
関数 showtreemenu($con,$result,$layer)
{
//表示する必要があるメニュー項目の数を取得します
$numrows=mysql_num_rows($result) ;
//メニューの表示を開始します。各サブメニューはテーブルで表されます
echo "";
"; }
for($rows= 0;$rows{
//現在のメニュー項目の内容を配列にインポートします
$menu =mysql_fetch_array($result);
//メニュー項目のサブメニュー レコード セットを抽出します
$sql= "select * from menu whereparent_id=$menu[id]"; );
echo ""; > ;";
//メニュー項目にサブメニューがある場合、JavaScript の onclick ステートメントを追加します
if(mysql_num_rows($result_sub)>0)
{
echo "
";
echo "";
}
else
{
echo " ";
echo "";
}
//メニュー項目にサブメニューがなく、ハイパーリンク アドレスが指定されている場合は、ハイパーリンクとして指定されます。
//それ以外の場合は、メニュー名のみが表示されます
if($menu[url]!="")
echo " $menu[name]> ;";
else
echo $menu[name];
echo "
// メニュー項目にサブメニューがある場合は、サブメニューを表示します
if(mysql_num_rows) ($result_sub)>0)
{
//onclick ステートメントに一致するサブメニューの ID とスタイルを指定します。
echo " ";
/ /次のメニュー項目を表示し続ける
}
echo "
?>

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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