lostyazilim
tr.link

Ajax ile anlik bildirim sistemi yapmak yardim

21 Mesajlar 4.338 Okunma
lstbozum
tr.link

SefaCanDemir SefaCanDemir Front-End Developer Kullanıcı
  • Üyelik 10.11.2013
  • Yaş/Cinsiyet 27 / E
  • Meslek Front-End Developer
  • Konum Adana
  • Ad Soyad S** D**
  • Mesajlar 1345
  • Beğeniler 234 / 472
  • Ticaret 12, (%100)
Js de while ile sonsuz döngü oluşturun daha sonra bir sleep fonksiyonu vereyim size onunla 2 sn de bir while dönsün bu sırada veritabanına sorgu göndersin gelen veriye göre işlem yapsın.

Örnek;



function ajaxControl(){
// Veritabanınızı kontrol ettirin.
}

function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}

while(true){
ajaxControl();
await sleep(2000);
}



Yukarıdaki örnekte 2000ms (2 saniye) de bir ajaxControl fonksiyonumuzu tetikliyoruz. Bu fonksiyonda ise veritabanı kontrollerimiz yer alıyor istediğimiz sonucu ekrana basıyoruz.
 

 

sefacandemir.com.tr
wmaraci
reklam

cihaneken cihaneken Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 25.07.2014
  • Yaş/Cinsiyet 30 / E
  • Meslek Elektrik Teknisyeni
  • Konum Fransa
  • Ad Soyad C** E**
  • Mesajlar 3508
  • Beğeniler 488 / 1190
  • Ticaret 1, (%100)
Belirttiğiniz olayda yine sunucu tarafından bir veri gönderilmesi gerekiyor ki js fonksiyonu o veriyi dinleyebilsin. Bu yüzden her yol aynı kapıya çıkacaktır. Sizin öncelikle PHP ile veritabanını kontrol edecek ve bilgiyi çekecek bir sistem hazırlamanız lazım. Ayrıca kullandığınız framework de hazır bir sistem olabilir ilgili framework ün dökümanlarını incelemenizi tavsiye ederim.

Ayrıca aşağıdaki bağlantıda sıfırdan bir bildirim sisteminin nasıl yapıldığı adım adım anlatılıyor.

https://www.cloudways.com/blog/real-time-php-notification-system/
 

 

SefaCanDemir SefaCanDemir Front-End Developer Kullanıcı
  • Üyelik 10.11.2013
  • Yaş/Cinsiyet 27 / E
  • Meslek Front-End Developer
  • Konum Adana
  • Ad Soyad S** D**
  • Mesajlar 1345
  • Beğeniler 234 / 472
  • Ticaret 12, (%100)
Düşündüm de kurduğum mantık hatalı. Arkadaşın dediği gibi server side bir dil şart ajax ile veritabanı bağlantısı kuramazsınız. Node kullanmanız gerekir.
 

 

sefacandemir.com.tr

Lokasyon123 Lokasyon123 İNTERAKTİF YAZILIM 80 TL Kullanıcı
  • Üyelik 11.04.2016
  • Yaş/Cinsiyet 29 / E
  • Meslek Ogrenci
  • Konum Edirne
  • Ad Soyad B** A**
  • Mesajlar 2883
  • Beğeniler 363 / 319
  • Ticaret 2, (%100)

cihaneken adlı üyeden alıntı

Belirttiğiniz olayda yine sunucu tarafından bir veri gönderilmesi gerekiyor ki js fonksiyonu o veriyi dinleyebilsin. Bu yüzden her yol aynı kapıya çıkacaktır. Sizin öncelikle PHP ile veritabanını kontrol edecek ve bilgiyi çekecek bir sistem hazırlamanız lazım. Ayrıca kullandığınız framework de hazır bir sistem olabilir ilgili framework ün dökümanlarını incelemenizi tavsiye ederim.

Ayrıca aşağıdaki bağlantıda sıfırdan bir bildirim sisteminin nasıl yapıldığı adım adım anlatılıyor.

https://www.cloudways.com/blog/real-time-php-notification-system/


Hocam simdi oncelikle benim bir bildrim sistemim var kod su sekilde calisiyor bildirim id cekiliyor bildirim cekiliyor. Uye id cekiliyor yorum hangi soruta geldiyse o soru id cekiliyor. Bunlar gruplandirilip eger yorum yapilirsa bildirim gonderiyor amaa bunun icin sayfa yenilenmesi gerekli ben ise anlik kontrol yaptirmak istiyorum ki hem hizli olsum hemde sunucuya yük binmesin ama javascripr bilgim cok yetersiz

SefaCanDemir adlı üyeden alıntı

Js de while ile sonsuz döngü oluşturun daha sonra bir sleep fonksiyonu vereyim size onunla 2 sn de bir while dönsün bu sırada veritabanına sorgu göndersin gelen veriye göre işlem yapsın.

Örnek;



function ajaxControl(){
// Veritabanınızı kontrol ettirin.
}

function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}

while(true){
ajaxControl();
await sleep(2000);
}



Yukarıdaki örnekte 2000ms (2 saniye) de bir ajaxControl fonksiyonumuzu tetikliyoruz. Bu fonksiyonda ise veritabanı kontrollerimiz yer alıyor istediğimiz sonucu ekrana basıyoruz.
 

 

https://wmaraci.com/forum/script-alisverisi/interaktif-sozluk-benzeri-php-pdo-yazilim-simdi-indirimde-533214.html
wmaraci
wmaraci

SefaCanDemir SefaCanDemir Front-End Developer Kullanıcı
  • Üyelik 10.11.2013
  • Yaş/Cinsiyet 27 / E
  • Meslek Front-End Developer
  • Konum Adana
  • Ad Soyad S** D**
  • Mesajlar 1345
  • Beğeniler 234 / 472
  • Ticaret 12, (%100)
Dediğimiz gibi eğer sayfa yenilemeden veritabanına sorgu göndermek istiyorsan node kullanmalısın. Ya da php ile bildirim sistemi icin bir api olusturacaksiniz yukarıda anlattığım yöntem ile sürekli apiyi kontrol edeceksiniz. Dilerseniz ücretli de yardımcı olabilirim.
 

 

sefacandemir.com.tr

cihaneken cihaneken Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 25.07.2014
  • Yaş/Cinsiyet 30 / E
  • Meslek Elektrik Teknisyeni
  • Konum Fransa
  • Ad Soyad C** E**
  • Mesajlar 3508
  • Beğeniler 488 / 1190
  • Ticaret 1, (%100)
Eğer sistem hazırsa o zaman ajax ile ilgili sayfayı dinleyeceksin. Bir önceki mesajımda verdiğim bağlantıda ajax ile hem veri gönderilmiş hem veri alınmış. O konu aslında yöntemleri içeriyor sana sadece uyarlamak kalıyor.

Bak burada adam veritabanından aldığı verileri json formatına dönüştürmüş en altta göreceksin orada.


include('connect.php');

if(isset($_POST['view'])){

// $con = mysqli_connect("localhost", "root", "", "notif");

if($_POST["view"] != '')

{
$update_query = "UPDATE comments SET comment_status = 1 WHERE comment_status=0";
mysqli_query($con, $update_query);
}

$query = "SELECT * FROM comments ORDER BY comment_id DESC LIMIT 5";
$result = mysqli_query($con, $query);
$output = '';

if(mysqli_num_rows($result) > 0)
{

while($row = mysqli_fetch_array($result))

{

$output .= '


  • '.$row["comment_subject"].'

    '.$row["comment_text"].'



  • ';
    }
    }

    else{
    $output .= '
  • No Noti Found
  • ';
    }

    $status_query = "SELECT * FROM comments WHERE comment_status=0";
    $result_query = mysqli_query($con, $status_query);
    $count = mysqli_num_rows($result_query);

    $data = array(
    'notification' => $output,
    'unseen_notification' => $count
    );

    echo json_encode($data);
    }


    Daha sonra ise ajax ile json formatindaki veriyi almış ve bootstrap menüsüne js ile iletmiş.

    function load_unseen_notification(view = '')

    {

    $.ajax({

    url:"fetch.php",
    method:"POST",
    data:{view:view},
    dataType:"json",
    success:function(data)

    {

    $('.dropdown-menu').html(data.notification);

    if(data.unseen_notification > 0)
    {
    $('.count').html(data.unseen_notification);
    }

    }

    });

    }

    load_unseen_notification();
     

     

    SefaCanDemir SefaCanDemir Front-End Developer Kullanıcı
    • Üyelik 10.11.2013
    • Yaş/Cinsiyet 27 / E
    • Meslek Front-End Developer
    • Konum Adana
    • Ad Soyad S** D**
    • Mesajlar 1345
    • Beğeniler 234 / 472
    • Ticaret 12, (%100)
    cihaneken hocam arkadaş anlık istiyor. Sayfa yenilenmeden o an veritabanına import edilen bildirimi anlık olarak kullanıcıya iletmek istiyor.
     

     

    sefacandemir.com.tr

    cihaneken cihaneken Üyeliği Durdurulmuş Banlı Kullanıcı
    • Üyelik 25.07.2014
    • Yaş/Cinsiyet 30 / E
    • Meslek Elektrik Teknisyeni
    • Konum Fransa
    • Ad Soyad C** E**
    • Mesajlar 3508
    • Beğeniler 488 / 1190
    • Ticaret 1, (%100)
    SefaCanDemir hocam ajax zaten ilgili php kodu ile anlık ve sürekli olarak iletişimde kalıyor. Sayfa yenilenmesine gerek kalmıyor. Ajax'ın amacı bu zaten. Örnek en son üzerinde çalıştığım resim yükleme yazılımında ajax kullandım bu sayede kişi tek bir sayfadan resmi gönderiyor, resim sunucuya ve veritabanına kayıt ediliyor ve sonuç döndürülerek hem önizleme hemde paylaşma bağlantıları gösteriliyor. Bunların hepsi tek sayfadan yapılıyor yani sayfa hiç değişmiyor. Ayrıca verdiğim örnek konuda canlı demosu da var. http://phpstack-21306-71265-206743.cloudwaysapps.com/noti/
     

     

    SefaCanDemir SefaCanDemir Front-End Developer Kullanıcı
    • Üyelik 10.11.2013
    • Yaş/Cinsiyet 27 / E
    • Meslek Front-End Developer
    • Konum Adana
    • Ad Soyad S** D**
    • Mesajlar 1345
    • Beğeniler 234 / 472
    • Ticaret 12, (%100)
    Yok onu anladım zaten fakat tetikleyecek bir şey göremedim attığınız kodda. Evet sayfa yenilenmeden yapıyor fakat tetikleyen nedir ? Bir kere çalışıp duracak sonuçta attığınız o source.
     

     

    sefacandemir.com.tr

    cihaneken cihaneken Üyeliği Durdurulmuş Banlı Kullanıcı
    • Üyelik 25.07.2014
    • Yaş/Cinsiyet 30 / E
    • Meslek Elektrik Teknisyeni
    • Konum Fransa
    • Ad Soyad C** E**
    • Mesajlar 3508
    • Beğeniler 488 / 1190
    • Ticaret 1, (%100)
    SefaCanDemir hocam ben örnek göstermek için alıntıladım kodları ilgili bağlantıdaki sistemde daha detaylıca anlatılıyor, şöyle: iki ajax işlemi var birisi gönderiyor birisi alıyor. Örneğin veri tabanına bir bildirim kaydı girildi bunun status değeri 1 diyelim, ajax işleminin birisi status değeri 1 olan kısımları çekiyor. Kişi bildirimi görüntülediği an diğer ajax işlemi php üzerinden veritabanına status değerini 0 yaptırıyor böylece ilk ajax işlemi status değeri 0 olanları bildirim olarak göstermiyor. Yani buradaki tetik aslında veritabanı değerleri. Onun haricinde zaten ajax sürekli olarak dinlemeye devam edecek yada ayrı bir kod ile belli aralıklarla ajax işlemini tekrar ettirecek örneğin 60 saniyede bir ajax tekrar çalıştırılacak yada sayfa yenilendiğinde tekrar çalıştırılacak.
     

     

    wmaraci
    Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
    Site Ayarları
    • Tema Seçeneği
    • Site Sesleri
    • Bildirimler
    • Özel Mesaj Al