• 02-10-2013, 23:33:16
    #1
    Merhaba arkadaşlar,
    araba kiralama sistemi yazıyorum bir sorguda takıldım.

    Tablo -> car_hire_price

    date_from - date_to - price

    2013-10-01 - 2013-10-05 - 0

    2013-10-06 - 2013-10-10 - 0

    2013-10-11 - 2013-11-05 - 0

    Yukarıdaki tabloya fiyat aralıklarını ekliyorum. Benim istedigim eğer aşağıdaki tarihlere eklemeye kalkarsam eklemesin.Yani 0 döndürsün yada true or false da olabilir.
    between ile yapmaya kalktım olmadı. nasıl bir sorgu olabilir?


    2013-10-04 - 2013-10-10
    2013-09-02 - 2013-10-02
    2013-10-08 - 2013-10-09


    teşekkürler
  • 03-10-2013, 00:10:56
    #2
    Reveloper
    Eygun adlı üyeden alıntı: mesajı görüntüle
    Merhaba arkadaşlar,
    araba kiralama sistemi yazıyorum bir sorguda takıldım.

    Tablo -> car_hire_price

    date_from - date_to - price

    2013-10-01 - 2013-10-05 - 0

    2013-10-06 - 2013-10-10 - 0

    2013-10-11 - 2013-11-05 - 0

    Yukarıdaki tabloya fiyat aralıklarını ekliyorum. Benim istedigim eğer aşağıdaki tarihlere eklemeye kalkarsam eklemesin.Yani 0 döndürsün yada true or false da olabilir.
    between ile yapmaya kalktım olmadı. nasıl bir sorgu olabilir?


    2013-10-04 - 2013-10-10
    2013-09-02 - 2013-10-02
    2013-10-08 - 2013-10-09


    teşekkürler
    2013-10-04 - 2013-10-10 bu ikisinin arasında bir tarih mi yoksa bu tarih mi?

    eğer 2013-10-04 bu tarihe eklemek istemiyosan şöyle yaparsın

    mysql ile bağlanırsın where yaparak eklediğin tarihi verirsin mysql_num_rows ile çıkan veriyi sorgulatırsın

    if($gelenveri>0){
    bu tarihte araç var gülüm.
    }else{
    ekle
    }
  • 03-10-2013, 00:33:52
    #3
    between ile yapılabilir.
  • 03-10-2013, 00:49:00
    #4
    Burti adlı üyeden alıntı: mesajı görüntüle
    2013-10-04 - 2013-10-10 bu ikisinin arasında bir tarih mi yoksa bu tarih mi?

    eğer 2013-10-04 bu tarihe eklemek istemiyosan şöyle yaparsın

    mysql ile bağlanırsın where yaparak eklediğin tarihi verirsin mysql_num_rows ile çıkan veriyi sorgulatırsın

    if($gelenveri>0){
    bu tarihte araç var gülüm.
    }else{
    ekle
    }
    2'si arasında tarih tabiki. Sonuçta çakışmaması gerekiyor. Biraz daha açıklarsam olayı:
    2013-10-01 ile 2013-10-06 arasında databaste bir kayıtım oldugunu varsayarsak eğer ben 2013-10-03 ile 2013-10-05 tarihi eklemeye çalışırsam eklenecektir. Bunu istemiyoruz. eklemeye çalıştıgım tarih ile databaste'te bulunan tarihler çakışmaması gerek. Eğer ekleyecegim tarih databaste'te yer alan tarihler arasında yer almıyorsa yada çakışmıyorsa eklemem gerek. Yani databaste sadece 1 tarih aralıgı olacak birden fazla aynı tarih aralıgı olmayacak.
    Sadece sorgu gerekli diğer if else kullanmıyorum true or false döndürüyorum funcitionun içinde. Bu şekilde bir sorgu oluştursam yeterli.

    between ilede denedim tabiki ama işin içinden çıkamadım...
  • 03-10-2013, 01:32:55
    #5
    Reveloper
    between yapıcaksın başka çare yok:
    örnek bi kod:

    $sorgu = "SELECT * FROM veritablo WHERE str_to_date(tarih,'%d.%m.%Y') BETWEEN str_to_date(16.09.2010) and str_to_date(18.09.2010) ";
  • 03-10-2013, 01:36:33
    #6
    Yazıyorum dediğine göre işin başındasın tarih alanlarını int yap ve tarihlerini zaman damgası olarak kullan between ile de numrows olayına bak
  • 03-10-2013, 01:49:07
    #7
    Herkeze teşekkürler halletim between tek başına yetmiyor and ile bir ekleme daha yapmam gerekti.

    Alıntı
    SELECT *
    FROM (`car_hire_price`)
    WHERE `date_from` BETWEEN '2013-10-18' AND '2013-10-19' OR date_to BETWEEN '2013-10-18' AND '2013-10-19' OR ( date_from < '2013-10-18' AND date_to > '2013-10-19' )