Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » Sunucu Tabanlı Programlama (Server Side) » Veritabanları » SQL de tarihlerle ugrasmak...!


Veritabanları MySQL , MSSQL, SQL, Access, Oracle

Yanıt
 
LinkBack Seçenekler
Old 11.10.2003   #1 (permalink)
Scud
 
Scud's Avatar
 
Üyelik Tarihi: 25.08.2001
Yer: Antalya
Yaş: 27
Mesaj: 970
SQL de tarihlerle ugrasmak...!

PHP de hazırladığım bir sistemde bir veritabanındaki fiyatlar tablomdaki alanlar ve değerler su sekilde...:

Kod:
id |   From_Date   |   To_Date   | fiyat
-------------------------------------
1  |  2003-11-01   | 2003-11-30| 10
2  |  2003-12-01   | 2004-03-31| 20
3  |  2003-12-26   | 2004-01-02| 30

Burada bi otelin bi odasının belli zamanlardaki fiyatları verilmiş.
yani
-bu bir oda 01 Kasım 2003 den 30 kasım 2003 e kadar 10 TL (sonbahar sezonu)
- bu bir oda 01 Aralık 2003 den 31 mart 2004 e kadar 20 TL (kış sezonu)

ayrıca:
bu bir oda 26 Aralık 2003 den 2 ocak 2004 e kadar 30 TL (noel zamanı)


şimdi ziyaretçi bu bişeyi istediğinde bir tarih aralığı seçiyor.

Benim istediğim seçtiği tarih aralığına göre oda fiyatını vermesi. çünkü ziyaretçi de o odayı tutmaya başlama tarihi ile bitiş tarihini veriyor.

Mesela Ziyaretçi

20 Kasım 2003 ten 30 kasım 2003 e kadarlık oda fiyatı isterse:
(30 - 20)=10 gün
10 gün * 10 TL (bir günlük fiyatı) hesaplamasını yapıp 100TL fiyatı vermem gerekiyor.

03 ocak 2004 ile 05 ocak 2004 arasını isterse
2 gün için 20 X 2= 40 TL fiyat vermem gerekiyor.

ve işte asıl sorun

adam 20 kasım 2003 ile 05 Ocak 2004 arasındaki fiyatı isterse yukarıdaki girilen tarih aralıklarına göre nasıl sorgu yapabilirim.
ben şu anda şunu yapıyorum

SELECT * from fiyatlar diyip fiyatları ve tarih artalıklarını ayırıyorum. PHP ile her günün fiyatını falan çıkarıyorum baya bi kod kalabalığı yaptım anlayacağınız. Fakat tahminime göre mantık veya SQL sorgusu ile en azından PHP kodu ile yapacağım iş kısaltılabilir. Var mı mümkünatı?

Saygılar...
__________________
Take me back to my boat on the river
and I won't cry out any more
Scud şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 11.10.2003   #2 (permalink)
Kuen
 
Kuen's Avatar
 
Üyelik Tarihi: 26.09.2000
Yer: istanbul
Mesaj: 251
formdan gelen değere göre where komutunu ele alabilirsin.

tablona bi alan daha aç gerekirse, tariharalik_id gibi formdan value değerini ayarla ona göre SQL sorgunu oluştur.
__________________
khssi..
Kuen şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 12.10.2003   #3 (permalink)
Scud
 
Scud's Avatar
 
Üyelik Tarihi: 25.08.2001
Yer: Antalya
Yaş: 27
Mesaj: 970
anlamadım
__________________
Take me back to my boat on the river
and I won't cry out any more
Scud şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 15.10.2003   #4 (permalink)
Scud
 
Scud's Avatar
 
Üyelik Tarihi: 25.08.2001
Yer: Antalya
Yaş: 27
Mesaj: 970
Bir yöntem buldum ve o şekilde yaptım.. Fazla da uzun olmadı..
MySQL de TO_DAYS diye bir fonksyion var onu kullandım. Bu fonksiyon tarihi gün formatına çeviriyor. (01/01/0000 dan başlayarak birer birer sayan günler)
Yani 01/11/2003 tarihi 731885. gün oluyor.
bir dizi yaratıp günlere göre elemanlarına fiyatları aktardım. sonra seçilen gün aralığına göre arraydan ayıkladım.

bilmek isteyen olur diye örneği yapıştırıyorum...

PHP Code:
function tarih($another,$olay){
if(
$olay=="2"){ $tarih=explode("/",$another);$tarih=array_reverse($tarih);$tarih=implode("-",$tarih);}
if(
$olay=="3"){ $tarih=explode("-",$another);$tarih=array_reverse($tarih);$tarih=implode("/",$tarih);}
return 
$tarih;
}
if(isset(
$islem)){
$hperiodsql=mysql_query("SELECT id,TO_DAYS(fd),TO_DAYS(td) FROM periods ORDER  BY fd,(td-fd) ASC");
$mfd=tarih($fd,2);$mtd=tarih($td,2);
$days=mysql_fetch_array(mysql_query("SELECT TO_DAYS('$mfd'),TO_DAYS('$mtd')"));
$dfark=$days[1]-$days[0];
$pricedizi=array();
$totalprice=0;
$sayac=0;
$kat=$adult;

while(
$periyot=mysql_fetch_array($hperiodsql)){
$dbsl=($sayac!=0)?$dbsl:$periyot[1];
$dsta=$days[0]-$dbsl;
$dsto=$days[1]-$dbsl;
$sta=$periyot[1]-$dbsl;
$sto=$periyot[2]-$dbsl;
$roomprice=mysql_query("SELECT price FROM prices WHERE period='$periyot[0]'");
while(
$pu=mysql_fetch_array($roomprice)){
    for(
$i=$sta;$i<$sto;$i++){
    
$pricedizi[$i]=$pu[0];
    }
}

$sayac++;
}
for(
$i=$dsta;$i<$dsto;$i++){
$totalprice+=$pricedizi[$i];
}


__________________
Take me back to my boat on the river
and I won't cry out any more
Scud şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Yanıt

Etiketler
ugrasmak , tarihlerle , sql



 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

UslanmaM baktabul.com TEKplatform TEKplatform

En popüler ilk 100 etiket
Tag Cloud
acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css dijital div domain dosya eleman film firefox flash font form forum fotograf freelance google gore grafik grafiker hakkinda hangi hata hatasi hosting html ilgili ilk image internet istanbul istiyorum java javascript karakter kayit kisisel kullanimi link logo mac mail menu muzik mysql nasil neden nedir online photoshop php problemi program programi reklam resim satilik sayfa script server ses sistemi site sitesi son soru sorun sorunsali sorunu sql swf tasarim tasarimci tasarimcisi tasarimi turk turkce veri video web windows wordpress xml yardim yazi yeni zoque
Zoque RSS Aboneliği
Son eklenen konuları e-posta ile haber verelim mi?

Forum Yazılımı: vBulletin® Version 3.7.3 Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC5

Arayüz/Skin "Güneş" © www.zoque.com / net. Copyright © 1999 - 2008
Forum Saati GMT +2. Şu anda saat: 01:53.