多くのデスクトップ アプリケーション (Delphi で構築されたものなど) は、グリッドなどの「データベース対応コンポーネント」を使用します。グリッドは、データベースの内容 (通常はクエリの結果) を表示し、データベースの内容が変更されたときに表示を自動更新します。
PHP にそのようなものはありますか (おそらくクエリの結果を HTML テーブルに表示し、更新します)?
そうでない場合、どのように作成しますか?
(注:この一見似たような質問は役に立ちませんでした)
多くのデスクトップ アプリケーション (Delphi で構築されたものなど) は、グリッドなどの「データベース対応コンポーネント」を使用します。グリッドは、データベースの内容 (通常はクエリの結果) を表示し、データベースの内容が変更されたときに表示を自動更新します。
PHP にそのようなものはありますか (おそらくクエリの結果を HTML テーブルに表示し、更新します)?
そうでない場合、どのように作成しますか?
(注:この一見似たような質問は役に立ちませんでした)
HTTP プロトコルの静的な性質のため、純粋な PHP で一度レンダリングされた HTML ページを更新することは技術的に不可能であるため、どのソリューションにも JavaScript および AJAX 呼び出しを含める必要があります。
AJAX を使用してエミュレートし、5 分ごとにテーブルを再レンダリングする
ただし、エミュレートするのは難しくありません。データベースの結果を取得してテーブルに配置する PHP ページを作成し、jQuery の関数を使用してそのテーブルを取得し、選択した 5 の間隔で.load()
レンダリングします。DIV
秒か何か。
何かのようなもの:
function updateTable(){
$('#tableDiv').load(url);
}
var url = 'renderTable.php';
setInterval(updateTable,5000);
DIV
これを idを持つ任意の PHP (または HTML) ページに配置すると、リフレッシュせずに 5 秒ごとにその divtableDiv
の出力がレンダリングされます。renderTable.php
実際にデータベースを監視する
これは可能です.5秒ごとにcronでPHPファイルを設定する必要があります(または5秒ごとにAJAX呼び出し)SELECT MD5(CONCAT(rows,'_',modified)) AS checksum FROM information_schema.innodb_table_stats WHERE table_schema='db' AND table_name='some_table';
(innoDBを想定)のようなものを実行し、これを以前のチェックサムと比較します。
チェックサムが同一である場合は、変更した AJAX 呼び出しに「false」を渡すことができます。これにより、テーブルに対して何もレンダリングしないように指示されます。そうでない場合は、新しいテーブルの HTML を渡してその場でレンダリングできます。