İçeriğin rss beslemesi kullanımda değil Soru - Cevap Bölümü / Kategori: Programlama

07/04/2005 - 19:37:54 cevap (9) Okunma : 11986 Bu yazıyı 0 kişi tuttu.

Tarih girişi için

Merhaba,

Öncelikle böyle bir hizmet verdiğiniz için teşekkürler.

Şu anda CFMX 6.1 ve MS SQL2K kullanıyorum.

Doğum tarihi gibi bir bilgi girerken sorunlar çıkıyor. Serverin USA de olması ve formatının değişik olması nedeniyle zorluklar yaşıyorum.

Giriş formatında AY, Gün ve yılı seçip girmek sanırım en sağlıklı yöntem. Bunda da sorun 30 Şubat gibi durumlarda çıkıyor. Bunu kontrol eden ve bu formatta giriş yapmayı kolaylaştıracak örnek kod arıyorum.

ilginize şimdiden teşekkürler.

adres metoikos profilini göster
Yılmaz Uğurlu 15.04.2005 02:26:28
En iyi cevap mı ?

<cfset setLocale("tr_TR")>

#LSDateFormat(Now(),"DD MMM YYYY")#
adres CFuser profilini göster
CFuser 15.04.2005 04:34:55
En iyi cevap mı ?

sevgili Yilmaz

cevap için teşekkürler. ancak ben tam olarak ne istediğimi soramadım. istediğim gün için ayrı, ay için ayrı ve yıl için ‘pull down’ şeklinde tarih girilmesi.

adres metoikos profilini göster
Yılmaz Uğurlu 15.04.2005 21:59:38
En iyi cevap mı ?
<cfset setLocale("tr_TR")> 
<cfset tarih = CreateDate(FORM.YIL, FORM.AY, FORM.GUN)>
<cfoutput>#LSDateFormat(tarih,"DD MMMM YYYY")#</cfoutput>
çıktı (1982,12,07)
07 Aralık 1982
Ya aslında boşuna geveezlik yapıyorum. http://livedocs.macromedia.com/coldfusion/ adresinde bunlar ile ilgili örnekleri bulabilirsin.
CreateDateTime()
CreateDate()
CreateTime()
DateAdd()
adres CFuser profilini göster
CFuser 23.04.2005 05:23:45
En iyi cevap mı ?

TEsekkurler Yılmaz.

adres mdemirci01 profilini göster
Murat Demirci 21.05.2005 03:42:05
En iyi cevap mı ?

Ben de ilave olarak ve genişçe şunları söyleyeyim, hem böylece bu forumu okuyan diğer arkadaşlara yardımcı olabilirim:

Evet bu tarih ve saat işlemleri tüm platformlar ve diller için bir biraz karışıktır maalesef. Fakat ColdFusion’da bazı kurallara dikkat ettiğimizde tüm veritabanları ve locale ayarları için problemsiz ve standart yöntemler bulunmaktadır.

1. SQL’lerde tarihleri nasıl kullanmalıyız

select sorgularında tarih, tarih/saat alanlarını getirirken alan adını doğrudan yazıp getiririz, herhangi bir fonksiyon kullanmaya gerek yok. Veritabanları tarih/saat değerlerini tablolarda sayısal olarak tutar, select ile çekerken veritabanının locale ayarları dikkate alınır, fakat bazı veritabanları ColdFusion’un veya ODBC’nin locale ayarlarını dikkate alabilir.

Normal kullanıma örnek: select dogum_tarihi from uye

where şartlarında ise eğer örneğin doğum tarihi şu olanlar gibi bir işlem yapmak istiyorsak, bir başka değişle tarih değerini parametrik yapmak istiyorsak <cfqueryparam> etiketini kullanmalıyız (mutlaka her zaman <cfqueryparam> kullanın, hem güvenlidir, hem sağlıklıdır). Örnek:

...
select * from uye where dogum_tarihi = <cfqueryparam cfsqltype='cf_sql_date' value='#lsParseDateTime(form.dogumTarihi)#' />
...

Bu örnekte lsParseDateTime bir stringi ColdFusion’un stardart tarih/saat formatına çevirmektedir, cfsqldate ise saat kısmını kırpıp veritabanına sadece tarihin kaydedilmesini sağlar.

lsParseDateTime fonksiyonuna neden gerek var peki? Eğer bu fonksiyon kullanılmazsa

<cfqueryparam> 

stringi otomatik olarak standart tarih formatına çevirir fakat bu çevirmede US standartlarını kullanır, ve bu da gün ay karışıklıklarına yol açabilmektedir.

lsParseDateTime ise setLocale ile ayarlamış olduğumuz locale’i dikkate alır. Fakat eğer tarihi gün-ay-yıl listeleri ile ayrı ayrı stringlerden alıyorsanız lsParseDateTime yerine

CreateDate(form.dogumYili, form.dogumAyi, form.dogumGunu) kullanmanız gerekir.

Tarih/saat içinörnek:

...
select * from uye where kayit_tarihi = <cfqueryparam cfsqltype='cf_sql_timestamp' value='#now()#' />
...

value’ya değeri now() ile üretip verdik, onun yerine yukarıda anlattığımız duruma göre lsParseDateTime ya da CreateDateTime kullanabiliriz.

2. Sayfalarda tarihleri nasıl görüntüleriz:

Veritabanında select ile bir tarih alanını getirdiğimizde geriye dönen değer Coldfusion tarafından otomatik olarak algılanır.

Bu yüzden gelen değeri tarihe çevirmeden DateFormat fonksiyonu ile uygun formatta ekrana yazdırmak yeterlidir, ColdFusion bu durumda veritabanından getirilmiş değeri otomatik olarak kendi tarih standartına çevirecek sonra belirttiğimiz formatta ekrana yazacaktır. (Eğer ColdFusion otomatik olarak çevirmede sorun oluşturursa muhtemel olarak veritabanı locale ayarlarını gözden geçirmeliyiz. Eğer bu da bir sonuç vermezse yine lsParseDateTime fonksiyonunu kullanmalıyız) Örnek:

<cfoutput>#lsDateFormat(uyeBilgileri.dogum_tarihi,'dd.mm.yyyy')#</cfoutput>

3. Formlarda tarihler:

Formlardan tarihleri almak için ya basit bir textbox kullanıp kullanıcının istenen bir formatta tarihi o metin kutusuna yazmasını isteriz. Ya da gün ay yıl listeleri kullanırız.

Eğer metin kutusu kullanırsak formdan aldığımız değeri lsParseDateTime ile ColdFusion tarih/saat standartına çevirmeliyiz. Listeleri kullanıyorsak CreateDate fonksiyonunu kullanmalıyız.

Metin kutusunda tarihi önceden yazılı olarak getirmek için:

<input type='text' name='dogumTarihi' value='<cfoutput>#lsDateFormat(uyeBilgileri.dogum_tarihi,'dd.mm.yyyy')#</cfoutput>
'/>

Listelerde seçili hale getirmek için ise <cfloop> ve <cfif> kombinasyonlarını kullanabiliriz. Gün için bir örnek yazayım:

<select name='dogumGunu'>
<cfloop from='1' to='31' index='gun'>
 <option value='<cfoutput>#gun#</cfoutput>'<cfif gun eq day(uyeBilgileri.dogum_tarihi)> selected</cfif>><cfoutput>#gun#</cfoutput></option>
</cfloop>
</select>

Uzun oldu ama bir çok kişiye yararlı olmuştur umarım.

iyi çalışmalar.

adres metoikos profilini göster
Yılmaz Uğurlu 24.05.2005 05:48:55
En iyi cevap mı ?
adres CFuser profilini göster
CFuser 24.11.2005 17:10:12
En iyi cevap mı ?
Uzun oldu ama bir çok kişiye yararlı olmuştur umarım. iyi çalışmalar.

Zaman ayırıp son derece detaylı olarak açıkladığın için teşekkürler Murat.

Son derece yararlı oldu.

Takip edebileceğimiz bir Blog’un varmı acaba?

adres CFuser profilini göster
CFuser 08.12.2005 19:32:33
En iyi cevap mı ?

Merhaba Murat

Sana ulaşabileceğim bir e-posta adresin varmı acaba?

aç-kapa Bu Yazıyı Tutanlar

bu yazıyı tutan kimse yok.

yeni üyelik | şifremi unuttum

aç-kapa Toplantı Kahraman ve need4code.com Projesi Connect Toplantısı

Kahraman ve need4code.com Projesi Connect Toplantısı

Selam arkadaslar, Programlama ile uğraşanların hayatlarını kolaylaştıracak desktop ve web tabanlı ortak iki proje ile ilgili 3. toplantımızı 3Aralık...
Kategori: Toplantı

aç-kapa Yarışma Fikir10000 Dijital Pazarlama Fikir Yarışması

Fikir10000 Dijital Pazarlama Fikir Yarışması

ADTECH tarafından düzenlenen Fikir10000 yarışmasına; dijital pazarlama ile ilgili size ait olan fikrinizle katılabilir ve 10.000 YTL’lik birinci...
Kategori: Yarışma

aç-kapa Yarışma 7Dx Demoscene Party

7Dx Demoscene Party

2002 yılından beri amatör bilgisayar kültürü ile ilgilenen insanları bir araya getirmeyi hedefleyen 7DX parti serisinin bu seneki ayağı olan 7D8 Demo ...
Kategori: Yarışma

aç-kapa Eğitim Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Etkin Katılım Çağrısı Türkiye’de Internet ile ilgili grupları biraraya getirerek İnternet’i tum boyutlarıyla tanıtmak, gelistirmek, tartı...
Kategori: Eğitim

aç-kapa Konferans Bilgi Güvenliği ve Kriptoloji Konferansı

Bilgi Güvenliği ve Kriptoloji Konferansı

Önemli Tarihler: Etkinlik Tarihi : 24-26 Aralık 2008 Son Bildiri Gönderme Tarihi : 20 Ekim 2008 Bildiri Kabul Tarihi Bildirimi :...
Kategori: Konferans

üyeler Son Kahramanlar...

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 262 (0 kayıtlı, 262 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

coldfusion mysql ubuntu
 
sponsor adobe istanbul