+ Cevap Yaz
Toplam 3 sayfadan 2. sayfa
İlkİlk 1 2 3 En SonEn Son
27 sonuçtan 11 ile 20 arası gösteriliyor

Konu: Refresh yapmadan sql den veri cekmek

  1. #11
    Üçekmek Turkoman Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    05/2008
    Yer
    in altında
    Mesaj
    1,125

    Mesajı düzenlemek zorunda kaldım çünkü oldu sandığım kodlar hatalı çalıştı.
    Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.

    Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.

  2. #12
    Üçekmek Turkoman Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    05/2008
    Yer
    in altında
    Mesaj
    1,125

    Alıntı Turkoman, mesajından alıntı: Mesajı Gör
    Kodu aşağıdaki şekle dönüştürdüm fakat JS de döngüler farklı mı çalışyor anlayamadım. Teoride ögenin id numarasını alıp gönderip sonra cevabı çekip <div> e ataması ardından sonrakine geçmesi lazım ama sorun oluyor. Birinci ögenin değerini alıp gönderiyor ama sonucu (sıralanmış halde 5 öge var) ikinci ögeye yansıtıyor. Operada ise çalışmaması son elemana yani beşinci elemana ekliyor.

    Ancak bu kadar gelebildim bir yardım eden çıkarsa sevinirim
    PHP Kodu:

    <?php
    // BELGE include() edilebilir
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1254" />
    <title>DENEME SAYFASI</title>
    <script>
    function Veri()
    {
        var x = XMLIstek(), i=0, gelendiv;
        var divler = document.getElementsByTagName('div');
        
        while(gelendiv = divler[i++])
        {      
            if(gelendiv.className == "alanlar")
            {
                var al = document.getElementById(gelendiv.id)
                /**//**/
                x.send('puani='+gelendiv.id);
                x.onreadystatechange = function()
                {
                    if (x.readyState == 4 && x.status == 200)
                    {
                        al.innerHTML = x.responseText;
                        setTimeout("Veri()",3000); // Her 3 sanıyede bır kendını yenıle.
                    } 
                }
            }
        }
    }

    function XMLIstek() 
    {
        var x = null;
        
        if(!x && typeof XMLHttpRequest != 'undefined')
        {
            try 
            { 
                x = new XMLHttpRequest(); 
            }
            catch (e) 
            { 
                x=false; 
            }
        }
        
        x.open('POST','classlar/istemci.php',true);
        x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=ISO-8859-9');
        
    return x;
    }
    </script>
    </head>
    <body onLoad="Veri()">
    <?php
    for($i 1$i 6$i++)
    {
        echo 
    $i.'<br>';
        echo 
    '<div id="'.$i.'" class="alanlar"></div><br>';
    }
    ?>                                
    </body>
    </html>
    istemci.php

    PHP Kodu:
    <?php
    $n 
    $_POST["puani"];
    echo 
    "hadi yaz ".($n);
    ?>
    Konu hakkında fikri olan yok mu? Forumda ve nette aradım "Multiple Ajax request" için işime yaracak sonuç bulamadım.
    Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.

    Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.

  3. #13
    Yönetim Kurulu chesterx Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    12/2007
    Yer
    İstanbul
    Mesaj
    2,437

    turkoman bana özelden ulaşırsan yardımcı olabilirim pek vaktim olmuyor yazmaya
    Bilişim; bilgi ve yetenek meselesi değil ahlak ve karakter meselesidir. . .

    www.sercanvirlan.com

  4. #14
    Üçekmek Turkoman Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    05/2008
    Yer
    in altında
    Mesaj
    1,125

    Anladığım kadarıyla Ajax responseText kullanılınca birden fazla request yapmıyor. Bunun alternatifi var mı? Belki responseXML ile bu işlem yapılabilir. Fikri olan var mı?

    Aşağıdaki kodu kullanmıştım o da kendi kendine tazelemiyor. Hem de diğerine göre yavaş çalışıyor.

    PHP Kodu:
    <?php
    // BELGE include() edilebilir
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1254" />
    <title>DENEME SAYFASI</title>
    <script>
    function Veri(id)
    {
        var x = XMLIstek();
        var i=0;
        var al = document.getElementById(id);
        
        x.send('puani='+id);
        x.onreadystatechange = function()
        {
            if (x.readyState == 4 && x.status == 200)
            {
                al.innerHTML = x.responseText;
                setTimeout("Veri(id)", sto); // Her 3 sanıyede bır kendını yenıle.
            } 
        }
    }

    function XMLIstek() 
    {
        var x = null;
        
        if(!x && typeof XMLHttpRequest != 'undefined')
        {
            try 
            { 
                x = new XMLHttpRequest(); 
            }
            catch (e) 
            { 
                x=false; 
            }
        }
        
        x.open('POST','classlar/istemci.php',true);
        x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=ISO-8859-9');
    return x;
    }
    </script>
    </head>
    <body>
    <?php
    for($i 1$i 6$i++)
    {
        echo 
    $i.' => ';
        echo 
    '<div id="'.$i.'" class="alanlar"></div><br>';
        echo 
    '<script language="Javascript"> Veri('.$i.'); </script>';
    }
    ?>                                
    </body>
    </html>
    Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.

    Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.

  5. #15
    Yönetim Kurulu chesterx Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    12/2007
    Yer
    İstanbul
    Mesaj
    2,437

    birden fazla request yapabilirsin ama sen kendi kodlarını kullandığın için çok yardımcı olamadım arkadaşım sen şöyle yapsan ajax.js diye bir kütüphane hazırlasan sayfaya import edildiğinde tek fonksiyon ile ajax işlemini yaptırsan

    ajax('buElementeYaz','veriyiBurdanGetir.php?getir' +veri,'POST-metod-',5000-milisaniyedeTekrarla-);

    gibi bir hale çevirebilirsen senin için kolay olur
    Bilişim; bilgi ve yetenek meselesi değil ahlak ve karakter meselesidir. . .

    www.sercanvirlan.com

  6. #16
    Üçekmek Turkoman Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    05/2008
    Yer
    in altında
    Mesaj
    1,125

    Kendi kendimle mesajlaşıyorum gibi bir hisse kapılmaya başlamıştım. chesterx, cevap verdiğin için teşekkürler. Bir üstte verdiğim kod çalışıyor ama refresh yapmıyor. Kullandığım diğer kod ve açıklaması aşağıda.


    PHP Kodu:
    <?php
    // BELGE include() edilebilir
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1254" />
    <title>DENEME SAYFASI</title>
    <script>
    // BU KISIM REQESTİ YAPACAK STANDART KODLAR TARAYICI UYUMLUMU vs. şeylere bakıyor
    function XMLIstek() 
    {
        
        var x = null;
        if(!x && typeof XMLHttpRequest != 'undefined')
        {
            try { x = new XMLHttpRequest(); }
            catch (e){ x=false;    }
        }
        
        x.open('POST','classlar/istemci.php',true);
        x.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
        x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=UTF-8');
        
    return x;
    }
    // BU YÜZDEN YUKARIDAKİ KISIM İÇİN AÇIKLAMA EKLEMİYORUM

    /* 
    FORM içerisinde birden fazla div var bunlar dinamik oluştuluyor ve id leri dinamik
    elemanları document.getElementById('idsi') ile alamıyorum bu yüzden aşağıdaki kodla
    önce dinamik oluşturulan id leri tespit etmeye çalışıyorum (forumdan aldım bu kodları gelendiv.className
    sağlıklı çalışmıyor ama şimdilik öncelik sırası başka şeyde olduğu için önemli değil) 
    */
    function id_al()
    {
        // fonksiyon içinde kullanılacak olan değişkenleri tanımlıyoruz. 
        var i=0; // döngüde sayac olarak kullanılacak
        var gelendiv; // buna daha sonra döngü içinde divler adlı değişkenin değerlerini depolayacağız 
        var al=[]; // Aldımız id leri tutacağımız dizi (array)
        var divler = document.getElementsByTagName('div'); //Sayfa içindeki Tag adı div olan nesneleri divlere atıyoruz
        var q=-1; // ikinci sayaç elemanı
        
        // divleri çektikçe bunları gelendive atıyor
        while(gelendiv = divler[i++])
        {      
            // aslında çalışmıyor ama gelendiv'e aldığımız divlerden class adı alanlar olanları seçiyor
            if(gelendiv.className == "alanlar")
            {
                q++;// gelendiv'e aldığımız divlerden class adı alanlar olanları uydukça q nun değerini artırıyor
                al[q] = gelendiv.id; // Al adlı diziye q index numarası ile gelendiv'e depolanmış nesnelerin idlerini koyuyor
                // Mantık şu al = array('q+1' => 'gelendiv.id+1',)
            }
        }
    //Son olarak fonsiyon oluşturulan diziyi kendini çağıran yere döndürüyor
    return al;
    }

    // Asıl işi yapan fonsiyon bu
    function Veri()
    {
        // id almak için oluşturduğumuz fonksiyonu çağırıp o fonsiyonda oluşturduğumuz al
        // adlı dizinin bir kopyasını bas adlı değişkene atıyoruz.
        var bas = id_al();
        // Sayaca kıyaslama ölçüsü olarak kullanmak için bas dizi değişkeninin eleman sayısını alıyoruz
        var say = bas.length;
        
        // En üstte oluşturulan XMLHttpRequest nesnesinin kopyasını oluşturup x adlı değişekene atıyoruz
        var x=XMLIstek();
        
        // w o an klavyede parmağımı tesadüfi bastiğim bir harf for döngüsünün sayacı
        // say nesnesinin sayısı (Yani bas dizisinin eleman sayısı) kadar işlemi tekrarlıyor
        for(w = 0; w < say; w++)
        {
            // x adlı XMLHttpRequest nesnesi ile veri gönderiyoruz
            // gönderdiğimiz veri bas dizisinin w'inci elemanı
            // ( 1 )
            x.send('puani='+bas[w]);
            
            // Tam anlamasam da değişiklik yani sorgu oluşması halinde bir fonksiyon oluşturuluyor
            x.onreadystatechange = function()
            {
                // readyState 4 işlem yapılıp cevap gelince
                if (x.readyState == 4 && x.status == 200)
                {
                    // belge içerisinde bas[w] id numarasına sahip elemana dönen sonuç ekleniyor
                    document.getElementById(bas[w]).innerHTML = x.responseText;
                    // Her 2 sanıyede bır kod kendini diriltiyor 
                    setTimeout("Veri()",2000); 
                } 
                
            }
            // X.send değeri null olarak değiştiriliyor ki teoride 
            // ( 1 ) ile numaraldığım satıra dönüp sıradaki değeri iletmeli
            x.send(null);
            // Aşağıdaki kodu belki işe yarar diye koydum hiç bir halta yaramadı :)
            x.close;
        }
    }
    /**/
    </script>
    </head>
    <body onLoad="Veri()">
    <p>
      <?php
    // Bu döngü dinamik olarak 5 adet div oluşturması için konuldu
    // Kod örnek olacağı için bu yolu seçtim asıl çalışmada db den veri çeken
    // ve ekrana basan kodlar var
    for($i 1$i 6$i++)
    {
        echo 
    $i.' => ';
        echo 
    '<div id="'.$i.'" class="alanlar"></div><br>';
    }
    ?>
    </p>
    </body>
    </html>
    Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.

    Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.

  7. #17
    Yönetim Kurulu chesterx Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    12/2007
    Yer
    İstanbul
    Mesaj
    2,437

    kodlarını aldım bir göz gezdireyim

    kodların gayet güzel çalışıyor fakat şu problem var sadece gelen veri sadece ilk yazıldığı yere yazılıyor inceleyeyim belki çözerim
    Bilişim; bilgi ve yetenek meselesi değil ahlak ve karakter meselesidir. . .

    www.sercanvirlan.com

  8. #18
    Yönetim Kurulu chesterx Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    12/2007
    Yer
    İstanbul
    Mesaj
    2,437

    şimdi yol göstermek amaçlı bir düşüncem var veri(); fonksiyonuna veri gönderiyoruz ve sonucu belirlediğimiz bir dive değil de for döngüsünden çıkan dive basıyor peki biz bu veriyi her seferinde çağırıyoruz setTimeout("Veri()",2000); kod ile 2 saniyede bir tekrarlıyoruz bu işlemi for döngüsü hep çalışıyor bu durumda yani yine rakam üretiyor her seferinde de ilk ürettiği rakama response basıyor bence sorun veri içerisindeki for döngüsünde
    Bilişim; bilgi ve yetenek meselesi değil ahlak ve karakter meselesidir. . .

    www.sercanvirlan.com

  9. #19
    Üçekmek Turkoman Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    05/2008
    Yer
    in altında
    Mesaj
    1,125

    chesterx, hatanın orada olduğu kesin biliyorum çünkü bildiğim kadarıyla test ettim nedense w nin değerin sadece 2 sayısına kadar yükseltip döngüyü kesiyor ama nerede mantık ya da sentax hatası var onu bulamıyorum.

    Bakıyorum sayın değeri 5 yani olması gerektiği gibi ama döngü sadece 1 ve 2 sayılarını üretiyor. Ben bu javascript'i sevemedim bu yüzden de hep ihmel ettim. Böyle yaptıkça iyice soğuyorum
    Çıktığın merdivene tekme atma ki, başkaları da çıkabilsin.

    Sahip olduğu bilgi ve zekânın yükünü taşıyabilen, mütevazı; taşıyamayan, ukala olur.

  10. #20
    Yönetim Kurulu chesterx Adlı Üyenin Profil Grafiği
    Üyelik Tarihi
    12/2007
    Yer
    İstanbul
    Mesaj
    2,437

    o zaman id gönderme ile yapsana ya da farklı bir fonksiyonda döngüyü sağla o fonksiyondan çıkan değeri veri() fonksiyonuna gönder o dive yazsın olmaz mı
    Bilişim; bilgi ve yetenek meselesi değil ahlak ve karakter meselesidir. . .

    www.sercanvirlan.com

+ Cevap Yaz

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Bookmarks

Mesaj Yazma Hakları

  • Yeni mesajgöndermezsiniz
  • Cevap yazamazsınız
  • Dosya ekleyemezsiniz
  • Mesajınızı düzenleyemezsiniz