0

多くのデスクトップ アプリケーション (Delphi で構築されたものなど) は、グリッドなどの「データベース対応コンポーネント」を使用します。グリッドは、データベースの内容 (通常はクエリの結果) を表示し、データベースの内容が変更されたときに表示を自動更新します。

PHP にそのようなものはありますか (おそらくクエリの結果を HTML テーブルに表示し、更新します)?

そうでない場合、どのように作成しますか?

(注:この一見似たような質問は役に立ちませんでした)

4

2 に答える 2

3

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 を渡してその場でレンダリングできます。

于 2013-06-01T09:31:47.843 に答える