• 15-06-2009, 10:19:41
    #1
    Merhaba arkadaşlar

    Sizden bir kod hakkında yardım isteyeceğim. Formdan bir değer alıyorum bu değerler

    1 saat
    2 saat
    3 saat
    ... 8 saate kadar gidiyor.

    2 saat diye değer geldiğini varsayalım

    kullanıcıyı 2 saat boyunca bekletmek ve bu zamanı geriye saymak istiyorum.

    o sırada işlem yaptırmıyacağım

    zaman fonksiyonlarında neler yapmam gerekiyor.

    Yardımlarınız için teşekkürler
  • 15-06-2009, 10:46:55
    #2
    webadam adlı üyeden alıntı: mesajı görüntüle
    Merhaba arkadaşlar


    kullanıcıyı 2 saat boyunca bekletmek ve bu zamanı geriye saymak istiyorum.
    sayfa açık kalarak mı bekleyecek kullanıcı,
    yoksa çıkış yapıp bir saat sonra girse bile kalan süre : 1 saat gibi bir sayım mı ? yani online oyunlardaki gibi. ?
  • 15-06-2009, 10:50:16
    #3
    sayfa kapansada arkada sürenin devam etmesi gerekiyor.
    online oyunlardaki gibi.

    şuan şu mantıkta yaptım.

    1 saat çalış dediğimde

    arkada tarafda saniyeye çevirip tabloya kaydediyorum.

    daha sonra java scriptle geriye saydırıyorum.

    01:00:00 den geriye başlayarak sayıyor tamam ancak her f5 de süre sıfırlanıyor

    Ben onu bir şekilde kalan zamanıda db de tutman gerekiyorki her f5 de oradan bakarak gösterim kalan zamanı
  • 15-06-2009, 10:56:36
    #4
    iş başladığında veritabanına süreyi kaydedersin.
    sonra iş için zamanın gösterildiği sayfaya yönlendirirsin.
    bu sayfa da o olay için kayıtlı zamanı çekip server saati ile karşılaştırır aradaki farkı alırsın.
    eğer hala dakika varsa js fonksiyonuna verirsin bu zamanı.
    o saniyeleri saymaya başlar, ekrana basar.

    mantıken böyle olabilir.
  • 15-06-2009, 11:20:21
    #5
    işe başladığında veritabana süreyi kaydettim. "28800" olarak

    sayfa kısmında bu süre 8 saate denk geliyor ve 8 saatten geriye sarıyor.

    ancak her f5 de süre sıfırlanıyor.
  • 15-06-2009, 11:22:44
    #6
    arkadaşın dediği gibi java script ile saydırmadan önce tablodan zamanı çek, şimdiki zamandan tablo zamanını çıkart 1 saatten küçük ise java scriptte hesapladığın kalan zamandan başlayarak saydır

    bu arada her f5 de tablodaki veriyi güncelliyorsan önce bunu kontrol etmen lazım. tabloya ip yi kaydettir o ip'den bir talep geldiğinde tablodaki kayıt 1 saatten eskiyse yeni kayıt yaptırırsın eğer 1 saat içinde kayıt yapılmışsa herhangi bir işlem yapmazsın bu durumda tablodaki zaman kaydı her f5 de yenilenmez
  • 15-06-2009, 11:25:43
    #7
    Alıntı
    $saat=$_POST[saat];
    $saat=($saat*60)*60;
    mysql_query("Update xxx set zaman='$saat' where uyeid = '$_REQUEST[id]'");
    Şu şekilde yazdırıyorum.

    Alıntı
    <p class="metin" id="sure"></p>

    <script type="text/javascript">v=new Date();var bx0=document.getElementById('sure');function tbx0(){n=new Date();s=<?=$a[zaman];?> -Math.round((n.getTime()-v.getTime())/1000.);m=0;h=0;d=0;o="";if(s<0){bx0.innerHTML='---';document.location=document.location;}else{if(s>5 9){m=Math.floor(s/60); s=s-m*60}if(m>59){h=Math.floor(m/60);m=m-h*60}if(h>23){d=Math.floor(h/24);h=h-d*24} if(s<10){s="0"+s}if(m<10){m="0"+m} if(d>1){o=d+" Günler ";}else if(d>0){o=d+" Gün "}bx0.innerHTML=" "+o+h+":"+m+":"+s+'';window.setTimeout("tbx0();",9 99);}}tbx0();</script>
    Şu şekildede geriye saydırıyorum.

    Tabloya o anki zamanı eklerken yardımcı olabilir misiniz?
  • 15-06-2009, 13:04:34
    #8
    Eposta Aktivasyonu Gerekmekte
    Dostum başladığın tarih-zaman ve ne kadar süreceğini kaydet db'ye.Sayfa açıldığında şimdiki zamandan başlangıç zamanını çıkar.Aradaki fark, süreceği zamandan büyükse işlem bitmiştir de.Eğer küçükse js ile sayacı geriye doğu saydırırsın.
    Böylece ne zaman açarsan aç güncel olarak şimdiki zaman üzerinden hesaplıyacağı için istediğine ulaşırsın.
  • 15-06-2009, 17:18:56
    #9
    Üyeliği durduruldu
    webadam adlı üyeden alıntı: mesajı görüntüle
    işe başladığında veritabana süreyi kaydettim. "28800" olarak
    sayfa kısmında bu süre 8 saate denk geliyor ve 8 saatten geriye sarıyor.
    ancak her f5 de süre sıfırlanıyor.
    mantığın yanlis
    tabloya kalan süreyi kaydetmemelisin

    mesela şu anki zamani aldin diyelim time() değeri ile

    8 saat sonrasini yazmalisin tabloya

    time() + 28800

    ü yani

    sonrada alan < time() kontrolü yapmalisin

    javascript ile gösterikende sayfada bu değerin başlangıç süresini

    alan - time()

    den almalisin