• 23-11-2010, 20:59:18
    #1
    Merhaba bir mantık sorum olacaktı şimdi veritabanımda 2 alan var başlama ve bitiş saati diye şimdi diyelim veritabanından başlangıç saati olarak 18.00 bitiş saati olarak 20.00 geliyor,kullanıcıdanda başlama ve bitiş saati geliyor onlarda mesela 19.00 21.00 olsun şimdi ben kullanıcıdan gelen saat veritabanındaki saatin arasında kalıyor o zaman hata versin istiyorum arasında kalıyor derken şunu demek istedim, 18 de başlayan bir iş 20 de bitiyormuş veritabanında kullanıcı 19 ile 21 demiş bu saatler 18 ve 20 yide içine alıyor bu yüzden hata vermesi gerek ama kullanıcıdan 21.00 ile 23.00 gelirse veritabanına kaydetmem gerekiyor o yüzden aşağıda verdiğim kod iptal olmuş oluyor nasıl birşey yapabilirim ?


    #Uygun Olmayan Kod
    <?php
    if ($kullanicidangelenbas>=$dbdengelenbas && $dbdengelenbitsaat<=$kullanicidangelenbit) {
    echo "hata";
    }
    ?>
    Yukarıdaki kod 21.00 ile 23.00 gelirsede hata verir,bu yüzden başka koda ihtiyacım var.
  • 23-11-2010, 21:06:21
    #2
    Üyeliği durduruldu
    php bilmiyorum
    ama if'in içini şöyle düzenleyin
    if( (aralıktan büyükse) || (aralıktan küçükse) )
    gibi

    || ile veya deyimini kullanabilirsiniz.
  • 23-11-2010, 21:08:10
    #3
    CakirTurk adlı üyeden alıntı: mesajı görüntüle
    php bilmiyorum
    ama if'in içini şöyle düzenleyin
    if( (aralıktan büyükse) || (aralıktan küçükse) )
    gibi

    || ile veya deyimini kullanabilirsiniz.
    Hangi aralıktan ama hocam ? 2 değerim var aralık yok
  • 23-11-2010, 21:40:10
    #4
    && yerine || kullanın.
  • 23-11-2010, 22:04:07
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Anladığım Kadarı ile


    if(($KulGelBasSaat>=$SistemBasSaati && $KulGelBasSaat<=$SistemBitSaat) ||
    ($KulGelBitSaat<=$SistemBitSaati && $KulGelBitSaat>=$SistemBasSaat)) {
    echo " Hata ";
    }else {
    echo " Normal İşlem ";
    }

    Sistem Bas Saati 19:00 Bit Saati 21:00 farzedelim.


    Kullanıcıdan Gelebilecek 3 Farkli Olasılık Var Var.

    1. Başlangic Saati Bizim Saatlerimizin Arasında olan ( 20:00 21:00 )
    2. Bitiş Saati Bizim Saatlerimizin Arasında Olan ( 18:00 20:00 )
    3. C Şıkkı Hiç Biri

    Gelelim Koda ( Anladığını Düşünüyorum Ama birisinin de işine Yarar Belki )

    Kırmızı Kısımda Eğer Kullanıcının Başlangıç Saati Bizim Başlangıç Saatimizden Büyük ve Bitiş Saatimizden Küçükse hata Ver ( 1. Olasılık )

    || ( Veya )

    Yeşil Kısım İse Eğer Kullanıcın Bitiş Saati Bizim Bitiş Saatimizden Küçükse ve Başlangıç Saatimizden Büyükse Hata ver. ( 2. Olasılık )

    Else ( Hiç Biri Değilse )

    İşlemlere Devam et..


    Umarım Anlatmak istedigini anlamışımdır. Kolay Gelsin..
  • 24-11-2010, 15:02:21
    #6
    Romansanta adlı üyeden alıntı: mesajı görüntüle
    Anladığım Kadarı ile


    if(($KulGelBasSaat>=$SistemBasSaati && $KulGelBasSaat<=$SistemBitSaat) ||
    ($KulGelBitSaat<=$SistemBitSaati && $KulGelBitSaat>=$SistemBasSaat)) {
    echo " Hata ";
    }else {
    echo " Normal İşlem ";
    }

    Sistem Bas Saati 19:00 Bit Saati 21:00 farzedelim.


    Kullanıcıdan Gelebilecek 3 Farkli Olasılık Var Var.

    1. Başlangic Saati Bizim Saatlerimizin Arasında olan ( 20:00 21:00 )
    2. Bitiş Saati Bizim Saatlerimizin Arasında Olan ( 18:00 20:00 )
    3. C Şıkkı Hiç Biri

    Gelelim Koda ( Anladığını Düşünüyorum Ama birisinin de işine Yarar Belki )

    Kırmızı Kısımda Eğer Kullanıcının Başlangıç Saati Bizim Başlangıç Saatimizden Büyük ve Bitiş Saatimizden Küçükse hata Ver ( 1. Olasılık )

    || ( Veya )

    Yeşil Kısım İse Eğer Kullanıcın Bitiş Saati Bizim Bitiş Saatimizden Küçükse ve Başlangıç Saatimizden Büyükse Hata ver. ( 2. Olasılık )

    Else ( Hiç Biri Değilse )

    İşlemlere Devam et..


    Umarım Anlatmak istedigini anlamışımdır. Kolay Gelsin..
    Hocam bu koda göre mesela sistemizde

    18.00 ile 19.00 arasında bir giriş olsun

    19.00 ile 20.00 arasına veya 16.00 ile 18.00 arasına birşey girilmiyor



    Edit:Hallettim arkadaşlar
  • 24-11-2010, 19:11:25
    #7
    Eşitlikleri (=) kaldırırsak sorun Halolur
  • 24-11-2010, 19:14:11
    #8
    böyle işlemleri genelde tam sayılara çevirmek en mantıklısıdır 22:00 ı explode ıle ayırdıktan sonra 22* 60 + 00 *60 gibisinden sonra keyfinizce if else yapin.
  • 24-11-2010, 22:17:40
    #9
    Yazdığın şekilde yapamazsın. Ancak şu şekilde olabilir.

    Önce oyuncunun oyuna başlangıç saatini db e yazdırırsın. ör.

    $baslangic = time();
    
    doquery("UPDATE {{table}} SET baslangic='".$baslangic."' WHERE id='".$kullanıcı['id']."'","kullanıcı tablon");
    Bu oyuna başladığı zaman olur. Daha sonra 2 saat oynatmak istiyorsan bitiş süresini yazdırırsın db ye..

    $ikisaat = 60*60*2;
    $bitis = $baslangic+$ikisaat;
    
    doquery("UPDATE {{table}} SET bitis='".$bitis."' WHERE id='".$kullanıcı['id']."'","kullanıcı tablon");
    Kullanıcının zamanı dolduğunda hata vermesini sağlamak içinde:

    if ($bitis < time())
    {
    //hata kodu
    }
    else
    {
    //diğer durumda çalışacak kod
    }
    şeklinde bir if ifadesi oluşturabilirsin. Hızlı hızlı yazdım hatam varsa affola.