PDA

Tam Sürümünü Görmek İçin : yardım edin


Black_Boyss
22/12/2002, 21:16
yaw php ve mysql nasıl tarıh ve saat konusu acık acık anlatacak bir kişi lazım paraverecem yaw bir türlü anlıyamadım
fonksiyon felan bir anlatsın bu olayları nasıl oluyor sadece tarih ve saat konusu zamanı olan arkadaşlardan yardım ...
iyi çalışmalar dilerim


Black_Boyss
23/12/2002, 22:01
uheheheh kimse bişi yazmamıssss:aglama: muhe:sus:

mkarabulut
24/12/2002, 18:45
Aslında çok uzun bi mesele ama elimden geldiğince açıklayıcı bi şeyler yazmaya çalışayım..
Haydi bismillah...

Öncelikle unix timestamp denilen zaman biriminden bahsetmek gerekiyor. Unix timestamp belirli bi başlangıç tarihinden itibaren şu an ki zamana kadar geçen süreyi saniye olarak tutan bir sayıdır aslında.Bu başlangıç süresi January 1 1970 00:00:00 GMT dir. Yani

echo time();

dediğinde ekrana gelen sayı,üstteki başlangıç tarihinden günümüze kadar geçmiş olan saniye sayısıdır.

Şimdi php'nin tarih fonksiyonlarına geçersek, öncelikle yukarıda tanıştığın time() fonksiyonundan bahsedebiliriz. Bu fonksiyon anladğın üzere timestamp'ı verir. Daha sonra önemli olan bir diğer fonksiyon ise date() dir.. Date() 2 türlü çalışır.

echo date("Y-m-d");
echo date("Y-m-d",time());

Date'in 2 paramtresi vardır.Birinci parametresi bir stringdir. Bu string içinde gösterilecek tarihin formatı belirlenir. String içindeki harflerin özel bi anlamı vardır.Özel anlamı olmayan işaretler ise doğrudan ekrana yazdırılır veya geri dönderilir diyelim.
Kullanılaiblecek özel harflerin listesi ise şudur:

a - "am" or "pm"
A - "AM" or "PM"
B - Swatch Internet time
d - day of the month, 2 digits with leading zeros; i.e. "01" to "31"
D - day of the week, textual, 3 letters; e.g. "Fri"
F - month, textual, long; e.g. "January"
g - hour, 12-hour format without leading zeros; i.e. "1" to "12"
G - hour, 24-hour format without leading zeros; i.e. "0" to "23"
h - hour, 12-hour format; i.e. "01" to "12"
H - hour, 24-hour format; i.e. "00" to "23"
i - minutes; i.e. "00" to "59"
I (capital i) - "1" if Daylight Savings Time, "0" otherwise.
j - day of the month without leading zeros; i.e. "1" to "31"
l (lowercase 'L') - day of the week, textual, long; e.g. "Friday"
L - boolean for whether it is a leap year; i.e. "0" or "1"
m - month; i.e. "01" to "12"
M - month, textual, 3 letters; e.g. "Jan"
n - month without leading zeros; i.e. "1" to "12"
O - Difference to Greenwich time in hours; e.g. "+0200"
r - RFC 822 formatted date; e.g. "Thu, 21 Dec 2000 16:01:07 +0200" (added in PHP 4.0.4)
s - seconds; i.e. "00" to "59"
S - English ordinal suffix for the day of the month, 2 characters; i.e. "st", "nd", "rd" or "th"
t - number of days in the given month; i.e. "28" to "31"
T - Timezone setting of this machine; e.g. "EST" or "MDT"
U - seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)
w - day of the week, numeric, i.e. "0" (Sunday) to "6" (Saturday)
W - ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0)
Y - year, 4 digits; e.g. "1999"
y - year, 2 digits; e.g. "99"
z - day of the year; i.e. "0" to "365"

Yani yukarıdaki örneğimizdeki çıktı

2002-12-30

gibi bir şeylerdir.
Fonksiyonun 2. parametresi ise verilebilecek bir timestamp dir. Eğer bir timestamp verilmezse yani fonnksiyon tek parametre ile çalıştırılırsa,default olarak o an ki tarih alınır.Eğer bir timestamp verilirse verilen timestamp'ın tarihi istenen formatta geri dönderilir.
Mesela yukarıdaki iki kullanımda da aynı değer geri döndürülür...Ama mesela

echo date("H:i:s Y/m/d",1232132132);

hangi tarihi dönderir bilinmez :)

PHP ve tarih fonksiyonları kısaca böyle..

mkarabulut
24/12/2002, 18:57
Mysql'in tarih olayına gelince...
mysql'de 5 adet tarih formatında bilgi saklayabileceğin alan türü vardır.

TIME
TIMESTAMP
DATE
DATETIME
YEAR

Kısaca
TIME türündeki alanda sadece şu tür bir bilgi tutulur : 'HH:MM:SS'
TIMESTAMP türünde ise : YYYYMMDDHHMMSS
DATE türünde : 'YYYY-MM-DD'
DATETIME türünde : 'YYYY-MM-DD HH:MM:SS'
YEAR türünde : YYYY
şekillerinde tutulur,aslında bu türlerin parametreler ile bi kaç değişik şekilde daha tutulması mümkün ama neyse..

Tek yapılması gereken PHP ile doğru formatta almak ve mysql'e doğru formatta alana kaydetmek..

Dikkati çekmek istediğim bir başka nokta ise mysql ile php'nin timestamp anlayışlarının farklı olması.. php doğrudan bir integer sayı ekrana yazdırırken,mysql timestamp dediğinizde aslında tarih bilgisinin YYYYMMDDHHMMSS türünde bi yazımını tutmaktadır..

Mysql'in ayrıca pek çok tarih işleme fonksiyonu vardır ki bunları anlatmak da baya bi sürer..
En iyisi ben linklerini vereyim,siz bi inceleyin..
http://www.mysql.com/doc/en/DATETIME.html
http://www.mysql.com/doc/en/Date_and_time_functions.html

Kolay gelsin...

Black_Boyss
24/12/2002, 20:41
:aglama:
cok teşekkür ederim
AMA ben bunları biliyorum bişey beceremiyorumü
anlatam
1
Müşteriler hangi tarihta kayıt olmuş
mesela sorgu kolay yazmaya gerek yok
tarihi yazdıramıyorum musteri tablosuna
2
yada sipariş diyelim müşteri hangi tarih ve zamanda sipariş vermis yazdıramadım bi türlü ( ben bu konuyu cözememek)
elimde kitap ver php
****
PHP ve MySQL
Uzmanlar İçin Uygulama ve Geliştirme Kılavuzu

Luke Welling, Laura Thomson

Alfa Basım Yayım Dağıtım / Bilgisayar Dizisi
*********
güzel ama tarih bölmü hakkında ve mysql hakkında bilgi kısıtlı
hatta teget geçilmis dene bilir
yane kısıldık kaldım
projede tıkandı kafada bulandı
herşey için teşekkür ederim zahmet etmiş yazmıssın:aglama:
ve bu olay hakkında ayrıntılı sole güzel bir turkish dokuman elde edemedim
******** askere 2003 gidecegim proje biterse size elimdeki kitapdan scriptleri yazacagım ***********
bu siteye bişiler eklemek isterim
bizde emekcok hak geçmesin:sus:

mkarabulut
25/12/2002, 08:05
Karşılaştığın sorunu doğrudan yazarsan belki yardımcı olabiliriz..

Black_Boyss
25/12/2002, 20:29
yaw abi bende sorun yok sadece acıklama istiyorum
yane dedigim gibi php'den mysql date time
formatlarını nasıl kayıt ettirebilirim
ben bu konuyu bilmiyorum anlayamadım

örnek verirseniz mesela
date veri tabanına kayıt ettiremedim
mesela
formda bu var
diyelim
<? print $ms_date= date ("Y-m-d");?>
oke
bunu veri tabanına kayıt
yapmak istiyorum ama bi turlü yazmıyor
formu gonderdigim dosya
ınsert into ("'.$ms_date.'", bla bla )";
diyelim yazmıyor
acıklama istiyorum sadece
veri tabanına
date
time
böle yazılır dıye
elimde bişuru fonksiyon var ama yazdıramadım

CrazyCat
25/12/2002, 20:43
veri tabanında veri türü olarak Timestamp ı dene kayıt esnasındaki tarihi otomatik alır.

onun dışında tarihi form ile gönderip kaydetmek istersen vt de tarih alanını

tarih varchar(19) olarak kaydet

sonra formda

<INPUT TYPE="HIDDEN" name="tarih" value="<?echo date("d.m.Y");?>">

olarak tarihi al

kaydederkende

mysql_query("insert into TABLO (id, isim, email, tarih ) Values (null, '$isim', '$email', '$tarih')");

örneğindeki gibi kaydet

Black_Boyss
26/12/2002, 01:11
yaw su olayı arıyordum deneyecegim
zaten Timestamp kullanıyorum ama ayrıntı istedim biraz
yardımların için teşekkür ederim

yardımcı olacagım bir konu varsa alayım:super:
yaw benim sorunum kayıtta degilmis tarihi almada
ben tarihi alamıyorum
cömez
benim yaptıgım
<? $ms_date = date ("Y-m-d"); ?>
benim yaptıgım bole idi kafa sonrdan sonradan dank etti cahil iste

bilmemek ayıp degil ogrenmemek