Halaman refresh otomatis ketika data mengubah php

Jika Anda memerlukan ide dasar tentang Penyegaran otomatis, lihat pos. “Segarkan konten secara otomatis setelah beberapa waktu – jQuery“

Di salah satu modul aplikasi saya di tesis teknik saya, saya harus memastikan bahwa pengguna akhir selalu memiliki daftar pesan terkini. Itu sangat penting karena pesan dapat diedit, disembunyikan, diterbitkan lagi, dan pengguna tidak punya waktu untuk mengingat untuk me-refresh halaman. Tentu saja, itu bukan masalah besar. Saya mengatur waktu setelah halaman mana yang harus disegarkan dan semuanya berfungsi sebagaimana mestinya
Karena karakter tertentu dari pengguna, waktu tersebut tidak boleh lebih pendek dari setengah menit. Halaman selalu menyegarkan setiap setengah menit dengan

HTTP request-> database query  ->  result formation -> result sent to the browser

Ini gila. Dan dengan menyembunyikan konten sekitar 10-20 pesan, tepat setelah daftar yang terbentuk dengan indah muncul, kami memuat ulang halaman sekali lagi

Solusinya mungkin agak kasar, tetapi untuk kebutuhan saya itu bekerja dengan cukup baik

Ide

Buat penghitung yang disimpan dalam database dan kode HTML. Dengan setiap perubahan dalam daftar pesan (terlepas dari tindakan – edit, tambah, sembunyikan) saya menambah penghitung dalam database. Kemudian, alih-alih mendapatkan seluruh daftar atau menyegarkan halaman, setiap setengah menit di latar belakang saya memeriksa penghitung dan membandingkannya dengan kode yang tersembunyi. Laman dimuat ulang hanya jika nilai ini berbeda

Dan semua orang senang. Tentu saja jalur kueri tidak akan berubah. Namun waktu kueri dan pembentukan hasil akan berkurang secara signifikan. Dan yang terpenting, pengguna tidak akan mau menembak saya ;o)

Peralatan

PHP, HTML, prototipe

Persiapan HTML

In section we are attaching prototype framework.

Somewhere in section – ideally at the beginning – we are going to need two containers, with an assigned id, invisible for users.
Sebagai contoh

 

old_count – akan mempertahankan status penghitung setelah halaman dimuat
new_count – akan mempertahankan status penghitung setelah permintaan berikutnya

It doesn’t matter if it will be

,

, or anything else. It is important that it has an id.

Dan tentunya kita membutuhkan wadah untuk daftar pesan kita

<div id="msg_list" style="display:none"></div>
_

Karena pesan disimpan dalam database, saat membuat tabel saya secara otomatis menambahkan baris dengan id=1 tempat saya menyimpan penghitung saya. Dengan setiap modifikasi entri suka. edit, hapus, tambah baru, arsipkan, dll – nilai di kolom khusus akan bertambah satu

Karena saya bekerja dengan kelas, saya tidak akan membahas detail koneksi database

Di bawah ini saya hanya akan menyajikan fragmen yang paling penting

– Berfungsi untuk menambah counter

function register_changes(){
  $this->db ->query("UPDATE table_name SET counting = counting + 1 WHERE id=1");
}

– pemeriksaan penghitung status

function check_changes(){
  $result=$this->db->query("SELECT counting FROM table_name WHERE id=1");
  $result=$this->db->fetch_array($result);
  return $result[‘counting’];
}

Langkah selanjutnya adalah membuat file terpisah yang dibuat oleh AJAX. Saya akan menyebutnya pemeriksa. php

Sepertinya itu

require_once ('class_file.php’);
$refresh = new class_name();
$new_number = $news->check_changes();
echo $new_number;
_

Persiapan JS

Pada awalnya kita akan membuat sebuah fungsi, yang akan mengeksekusi permintaan tersembunyi. AJAX memanggil pemeriksa skrip. php di server. Jika penghitung bertambah, daftar pesan disegarkan

Parameter input untuk fungsi ini adalah

url – alamat/nama skrip yang dipanggil

id_st – ID wadah yang menyimpan status penghitung lama

id_nw – ID wadah yang menampung status penghitung baru

function check(url,id_st,id_nw){
  req = new Ajax.Request(url, {
    contentType: 'text/html; charset=utf-8',
    method: 'post',
    onSuccess: function(response) {
      //containter update "new_count" with the current value of the counter
      id_nw.update(response.responseText);
      //assign the current counter to variable new
      new = id_nw.innerHTML;
      //assign the status of the counter hidden in the HTML code
      older = id_st.innerHTML; 
      //if the values are diffrent, it will refresh the list of messages by Ajax.Updater. Using that function we will refresh only the list, and not entire page
      if(older!=new){
        //There was a change, rather then refreshing the entire page to the next comparison, we need a new counter value
        id_st.update(new);
        //message list update.
        new Ajax.Updater('msg_list','msg.php');
        return false;
      }
    }
  });
}

Kami memiliki fungsi kami, jadi sekarang kami hanya perlu menentukan seberapa sering penghitung harus diperiksa dan memberinya nilai awal. Nilai awal diambil dengan kueri pertama yang menerima daftar pesan dan di php ditugaskan ke variabel bernama $start

//Every half minute call a function check
setInterval("check('checker.php',$('old_count'),$('new_count'));",30000); 
// When the page is loading we set the initial counter value
window.onload=function(){
  $('old_count').update('<?php echo $start; ?>');
}
_

Tidak ada lagi yang diperlukan, daftar pesan (dan hanya itu) akan menyegarkan dirinya sendiri setiap setengah menit, jika hanya ada sesuatu yang berubah dalam kontennya

Bagaimana cara me-refresh halaman secara otomatis di PHP?

Gunakan fungsi header() untuk me-refresh halaman web di PHP. Fungsi HTTP adalah fungsi yang memanipulasi informasi yang dikirim ke klien atau browser oleh server Web sebelum keluaran lainnya dikirim.

Bagaimana cara membuat halaman saya disegarkan secara otomatis?

Klik ikon panah melingkar di sebelah bilah alamat web . Ini adalah ikon "Segarkan Otomatis Mudah". Jika Anda tidak langsung melihat ikonnya, klik potongan puzzle, lalu klik ikon Easy Auto Refresh. Timer akan muncul sehingga Anda dapat mengatur waktu untuk menyegarkan halaman secara otomatis.

Bagaimana cara memuat ulang halaman saat ini tanpa kehilangan data formulir apa pun di PHP?

Cara termudah untuk memuat ulang halaman saat ini tanpa kehilangan data formulir, gunakan WebStorage di mana Anda memiliki -persistent storage (localStorage) atau berbasis sesi (sessionStorage) yang tetap berada di memori hingga . jendela. onload = function() {var name = localStorage. . window. onload = function() { var name = localStorage.

Bagaimana cara menyegarkan halaman tanpa memuat ulang di PHP?

Ini biasanya dicapai dengan teknik yang disebut AJAX . Teknik ini memuat data secara asinkron (di latar belakang) sehingga dapat memperbarui konten Anda tanpa perlu memuat ulang halaman. Cara termudah untuk mengimplementasikan AJAX adalah dengan metode jQuery load().