• 07-12-2023, 15:02:41
    #1
    Selamlar arkadaşlar,

    Bir rezervasyon sistemi yazıyorum. Ancak bir kısımda biraz takıldım fikirlerinizi merak ediyorum.

    X oteline ait Y odası için fiyat girişim şu şekilde:


    Veritabanında ise şu şekilde tutuyorum: Yani başlangıç - bitiş olarak



    Diyelim ki bir odanın 1 Aralıktan 12 Aralığa fiyatı : 100₺ 12 Aralıktan - 20 Aralığa : 200₺

    Müşteri 7 aralıkta girecek - 15 Aralıkta Çıkacak.

    Normal şartlarda benim 7 Aralıktan - 12 sine kadar 100₺ üzerinden sonra 12 ile 15 ine kadar 200₺ den hesaplamalıyım.

    Böyle yapmam mantıklı mı? Yoksa seçilen tarih aralığında her gün için veritabanında 1 row oluşturup o günün fiyatını girmek mi mantıklı? Yani şöyle:

    DAY. PRİCE.
    2023.12.07 100₺
    2023.12.08. 100₺
    .....
    2023.12.15. 200₺

    Tam olarak hangi şekilde yapmam doğru olur fikirnizi ve ilerlenecek yolu da kısaca anlatırsan çok sevinirim.
  • 07-12-2023, 15:05:50
    #2
    Hocam tarihleri böyle değil de STRTOTIME ile kaydedip aralığını belirleyebilirsin 1 eşit büyük 12 eşit küçük ise ....TL 12 büyük 20eşit küçük ise ...TL gibi
  • 07-12-2023, 15:20:42
    #3
    Benim daha önce yaptığım, ilktarih sontarih diye 2 tarih alanı var. burda odanın 2 tarih arasında ki günlük fiyatı yazılı. Fiyatları bu şekilde tutuyorum. Müşterinin girdiği tarıh aralığında her bir tarihi kontrol edilir.
    örnek: gun1 için veritabanında ilktarihe eşit yada büyük ve sontarihe eşit yada küçük değerlerde bul. bu şekilde hangi tarih aralığı içinde olduğunu bulursun ve ordaki fiyatı çekersin.
    Tabi burda dolu boş giriş çıkış gibi kontrolleride yapman gerekiyor.
    Eskiden yapmıştım hatırladığım kadarı ile böyle yaptıydım.
  • 07-12-2023, 15:29:23
    #4
    brkctk adlı üyeden alıntı: mesajı görüntüle
    Hocam tarihleri böyle değil de STRTOTIME ile kaydedip aralığını belirleyebilirsin 1 eşit büyük 12 eşit küçük ise ....TL 12 büyük 20eşit küçük ise ...TL gibi
    Aslında dediğiniz ile ilgili problem yok. İki farklı tarih aralığına giren bir rezervasyon fiyatı ile ilgili gelecekte sıkıntı çıkarır mı düşüncesi ile hangi yolu izlemem doğrudur diye düşündüm. Az önce güzel bir sonuç buldum aslında. Belki veritabanı sorgusunu artırdı ama 3-4 aralığa girse bile rezervasyon tarihi sorunsuz sonuç veriyor.

    Yöntemi: check in ve check out tarihlerinin her günün loop içerisinde veritbanaına gönderip o günlük fiyatı alıyorum o şekilde topluyorum.
  • 07-12-2023, 15:32:21
    #5
    Oda tiplerini bir tabloda tutarsınız. Oda tiplerinin fiyatlarını tarih aralığıyla birlikte bir arada tutarsınız. Sorgulamaları join ile yaparsınız bu 3 tabloyu tekte çekersiniz. Böylelikle ileri zamanlarda gelecek güncellemelerde veritabanı size sıkıntı çıkarmaz.
  • 07-12-2023, 18:15:46
    #6
    room_types ve room_type_prices diye 2 farklı tablo kullanarak bu işi çözebilirsin

    Room types
    +----+----------+
    | id |   type   |
    +----+----------+
    |  1 | Single   |
    |  2 | Multiple |
    +----+----------+
    Room Type Prices

    +----+--------------+-------+----------+------------+------------+
    | id | room_type_id | price | currency | start_date |  end_date  |
    +----+--------------+-------+----------+------------+------------+
    |  1 |            1 |   199 | TL       |  2023.12.7 | 2023.12.14 |
    |  1 |            1 |   299 | TL       | 2023.12.15 | 2023.12.26 |
    +----+--------------+-------+----------+------------+------------+
  • 07-12-2023, 18:55:08
    #7
    gsahin adlı üyeden alıntı: mesajı görüntüle
    Benim daha önce yaptığım, ilktarih sontarih diye 2 tarih alanı var. burda odanın 2 tarih arasında ki günlük fiyatı yazılı. Fiyatları bu şekilde tutuyorum. Müşterinin girdiği tarıh aralığında her bir tarihi kontrol edilir.
    örnek: gun1 için veritabanında ilktarihe eşit yada büyük ve sontarihe eşit yada küçük değerlerde bul. bu şekilde hangi tarih aralığı içinde olduğunu bulursun ve ordaki fiyatı çekersin.
    Tabi burda dolu boş giriş çıkış gibi kontrolleride yapman gerekiyor.
    Eskiden yapmıştım hatırladığım kadarı ile böyle yaptıydım.
    evet hocam ben de bu şekilde yaptım. veritabanı sorgularını artıracak ama en sıkıntısız yol bu gibi

    blap adlı üyeden alıntı: mesajı görüntüle
    Oda tiplerini bir tabloda tutarsınız. Oda tiplerinin fiyatlarını tarih aralığıyla birlikte bir arada tutarsınız. Sorgulamaları join ile yaparsınız bu 3 tabloyu tekte çekersiniz. Böylelikle ileri zamanlarda gelecek güncellemelerde veritabanı size sıkıntı çıkarmaz.
    hocam güzel mantık hemen hemen benimki de böyle ama stop sell durumunda sizin mantık zorlanıyor.

    bu şekilde zaten hocam

    madlypixel adlı üyeden alıntı: mesajı görüntüle
    room_types ve room_type_prices diye 2 farklı tablo kullanarak bu işi çözebilirsin

    Room types
    +----+----------+
    | id |   type   |
    +----+----------+
    |  1 | Single   |
    |  2 | Multiple |
    +----+----------+
    Room Type Prices

    +----+--------------+-------+----------+------------+------------+
    | id | room_type_id | price | currency | start_date |  end_date  |
    +----+--------------+-------+----------+------------+------------+
    |  1 |            1 |   199 | TL       |  2023.12.7 | 2023.12.14 |
    |  1 |            1 |   299 | TL       | 2023.12.15 | 2023.12.26 |
    +----+--------------+-------+----------+------------+------------+
    sistem bu şekilde zaten hocam. sorduğum soru check-in check-out tarihleri veritabanında 2 farklı aralığı kapsıyor ise en mantıklı yolu nedir? di . hallettim check in ve check out tarihlerini loop a alıp her günün fiyartını topladım.
  • 08-12-2023, 13:26:31
    #8
    En kolay çözümü dediğin şekilde olabilir
    sorguda da rezervasyon günlerini aralağı ile price değerini toplarsın, hem böylece özel günler için farklı fiyatları rahatça ekleyip düzenlersin.