特定のユーザーのテーブル内の多数の行を削除したいのですが、コンテンツが削除されていることをユーザーに知らせたいです。表示するだけで、削除するのは簡単ですが、「x」パーセントが削除されていること、または 100-x パーセントが動的に残っていることを示すにはどうすればよいですか? ブートストラップの進行状況バーを使用するとしましょう
3 に答える
MySQL は、クエリが処理される時間や進行中のプロセスの残り時間を予測できません。
できることの 1 つは、レコードを部分的に (つまり 1000 レコード) 削除し、反復ごとにプログレスバーを更新することです。
まあ、簡単です。申し訳ありませんが、私は少し忙しいので、この段階でしか説明しません。しかし、わからない場合はメールを送っていただければ、コードを作成できます。さらに良いことに、他の人が私の利益になるように、ここでコードを提供します。
より良い方法は、チェック ボックスを使用して、削除するレコードを選択することです。一覧ページでパーセンテージを表示するdivを作成します( )レコードを選択して削除ボタンをクリックすると、いつものように削除処理を行うPHPファイルがあります。ajax を使用してこれを処理し、ユーザーがレコードのリストとパーセンテージを表示するパーセンテージ div を引き続き表示できるようにします。
この PHP ファイル (処理ファイル) では、削除するレコードの総数 (選択したチェック ボックスをカウント) と、データベースからそのテーブル内のレコードの総数を取得する必要があります。これら 2 つの値を JSON として返します。これは、前の ajax 呼び出しで変数に入れる必要があります。インデックス ページ (削除対象のリストがある場所) で、削除するレコードの合計とデータベース内のレコードの合計を保持する 2 つの変数を作成してから、ajax を使用して残りのレコードのデータベースをクエリする setInterval 関数を作成します。このリクエストを実行している PHP ファイルが、データベースに残っているレコード数をエコーしていることを確認してください。(間隔が 1 秒程度の場合、これは 1 秒ごとにデータベースにクエリを実行し、合計を返します)。
これが意味することは、削除するレコードの合計があるということです。つまり、56000 から削除するテーブル内の残りのレコードの合計は 5500 です。
setInterval 関数で、パーセンテージを計算します。
var total_records = 5500;
var deleted_record = データベース テーブルに残っている total_records - 総レコード数;
var パーセンテージ = 削除されたレコード数/合計レコード数*100;
setInterval 関数内に $("#percentage").html(percentage) を追加します。パーセンテージはパーセンテージを表示する div です。これにより、設定された間隔に従って結果が表示されます。
これが簡単に理解できることを願っています。これを行うには多くの方法がありますが、混乱を避けるために、これが私が持っている最高のものです. すぐにコードを投稿します。
MySQL はクエリにかかる時間を予測しません。
ただし、目標を達成するためにトリガーを使用することもできますが、これは非常に正確に機能することを保証するものではなく、進行状況を計算するためのさまざまな式を自分で作成する必要があります。
別のオプションとして、スクリプトで進行状況を計算できるように、クエリごとに既知の量のレコードを削除することもphp
できますが、これはリソースの大幅な浪費です。