Php ile Mysql’e istediğimiz formatta (gün-ay-yıl) tarih yazdırmak

Posted: Eylül 28th, 2007 | Author: | Filed under: MySQL, PHP | Tags: , , | 24 Comments »

Maalesef bu mümkün değil. Bugün bunu yapmaya çalışıyordum fakat buradan öğrendim ki bu mümkün değilmiş.. Peki gün-ay-yıl formatında tarihleri nasıl kullanacağız ?

Tarihi MySQL veritabanına kaydederken yıl-ay-gün şeklinde formatlamak zorunlu olduğundan html formunuzda tarihi gün ay yıl gibi 3 adet form nesnesinden alıp php ile bunu MySQL’in anlayacağı şekle çevirip MySQL’e yazdıralım.. Yani HTML formumuz şu şekilde olsun.

<form action='' method='post'>
Gün : <input type='text' name='gun' /><br />
Ay : <input type='text' name='ay /><br />
Yıl : <input type='text' name='yil' /><br />
</form>

Şimdi bunun php kodunu yazalım..

<?php
$tarih = $_POST['yil'] ."-". $_POST['ay'] . "-" . $_POST['gun'];
?>

Bu kodlar sayesinde tarihimizi MySQL’in anlayacağı şekle çevirdik..

mysql_query("INSERT INTO tablomuz (tarihAlani) VALUES ($tarih) ");

kodunu kullanarak bu tarihi mysql’e yazdırıyoruz.. Şimdi sırada tarihin görüntülenmesi var..

PHP kullanarak MySQL’den yıl-ay-gün olarak alacağımız tarihi gün-ay-yıl formatına çevireceğiz.. Bunu da şu kodla yapabiliyoruz;

<?php
echo date("d-m-Y",strtotime($mysqldengelentarih));
?>

Böylelikle tarihi MySQL’de yıl-ay-gün şeklinde tutmamız zorunlu olsa da gün ay yıl şeklinde istediğimiz formatta görüntüleyebildik…

Ya da hiç bunları yapmayıp mysql’deki alanınızın veri tipini varchar() yapıp sorunu çözersiniz…


24 Comments on “Php ile Mysql’e istediğimiz formatta (gün-ay-yıl) tarih yazdırmak”

  1. 1 oyyla.com said at 23:55 on Ekim 27th, 2007:

    Php ile Mysql’e istediğimiz formatta (gün-ay-yıl) tarih yazdırmak

    normalde mysql’e gün ay yıl şeklinde yazdırılamıyor.. Bu şekilde tarihleri nasıl kullanacağımız anlatılıyor

  2. 2 Uğur SAMSA said at 23:47 on Ocak 12th, 2008:

    “Şimdi bunun php kodunu yazalım..” bölümündeki kodda hata var galiba Hüseyin. Birinci $_POST['yil'] yerine $_POST['gun'] gelmesi gerekiyor.

    mysql_query kullanarak veritabanına yazdıyoruz demişsin ama kodlar yok :) Bu sayfaya google’da alttaki satırı arayıp geldim:
    “tarihi veritabanına yazdırma php”. Açıklarsan sevinirim.

  3. 3 Hüseyin Berberoğlu said at 00:26 on Ocak 13th, 2008:

    hayır sondaki yil’in yerine gun geliyor. Çünkü mysql veritabanı o formatı kabul ediyor. Sorun da bu zaten.. Bu arada insert kodunu ekledim.. Şuan ki yazıda problem yok

  4. 4 Uğur SAMSA said at 12:51 on Ocak 13th, 2008:

    “Peki gün-ay-yıl formatında tarihleri nasıl kullanacağız ?” diye okuyunca veritabanına da öyle kaydetmek istiyoruz diye düşündüm.

    Bir sorum daha olacak. Bu verileri biz gönderdiğimize göre neden kafamıza göre sıra vermiyoruz? Yani gün-ay-yıl diye kayıt edebiliriz ya da ay-yıl-gün şeklinde. Çekerken de o şekilde çekip kullanabiliriz. Benim göremediğim sorun ne?

  5. 5 Hüseyin Berberoğlu said at 13:05 on Ocak 13th, 2008:

    Başlık ve ilk cümlemde belirtmiştim..bu mümkün değil.. mysql sadece tek formatı kabul ediyor. zaten problem de bu..

  6. 6 Uğur SAMSA said at 16:55 on Ocak 13th, 2008:

    Peki bu işi varchar kullanarak halledemez miyiz ben de onu soruyorum. Alttaki gibi yani;
    $tarih = getdate();
    $gonderilecek= ($tarih['year']-2000).”-”.$tarih['mon'].”-”.$tarih['mday'].”-”.($tarih['hours']+7).”-”.$tarih['minutes'].”-”.$tarih['seconds'];

  7. 7 Hüseyin Berberoğlu said at 17:10 on Ocak 13th, 2008:

    eğer mysql veritabanındaki alanı varchar yapmaktan bahsediyorsan bu mümkün. fakat o şekilde yaparsan sql sorgularıyla tarih işlemleri yapamazsın. sql sorgusuyla iki tarih arasındaki farkı bulma, tarihden gün çıkarma gibi işlemleri yapabiliyoruz.. yapabilmek içinde alanın tarih formatında olması gerek

  8. 8 Uğur SAMSA said at 21:46 on Ocak 13th, 2008:

    Hmm anladım tam olarak. Alana kaydettiğimiz tarih ile şimdiki tarih arasındaki farkı nasıl bulabiliriz peki? Bir de bulduğumuz sonuç saniye mi yoksa dakika cinsinden mi olur? Çok soru sordum ama iyi bir kaynak oldu bu sayfa :)

  9. 9 Hüseyin Berberoğlu said at 21:55 on Ocak 13th, 2008:

    $kalan = mysql_result(mysql_query(“SELECT DATEDIFF(tarihAlanin,CURDATE()) as kalan FROM tablo WHERE kayitID=2 LIMIT 1″),0);

    bu kod ile kayitID si 2 ye eşit olan kaydın tarihAlanin alanında bulunan tarih ile şuanki tarih arasındaki farkı gün cinsinden buluyoruz

    timeDiff te aynı şekilde yapılabiliyor. http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timediff bu adreste ayrıntılı bilgi var..

  10. 10 Nejdet Acar said at 21:13 on Kasım 5th, 2008:

    tarihin aralarına – tire çizgisi koyduğunuz için çıkarma işlemi yapıyor. 05-12-1973 olarak kaydettiğimde 05-11-2008 veriyor…

  11. 11 kymk said at 20:00 on Şubat 7th, 2009:

    cok saolun hocam elınıze saglık baya yardımcı oldu tesekkurler

  12. 12 Mustafa Atik said at 15:26 on Şubat 8th, 2009:

    bence tarih bilgileri varchar gibi alanlara yazılmamalıdır. varchar’a akydetmek, ileride yapılacak sıralamalar veya karışık sql cümlelerinde işi karıştırmaktan başka bir işe yaramaz. tarih formatı konusuna gelince, istenilen formatta tarih elde edilebilmesi için mysql yeterince imkan sağlıyor zaten.

    http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html

    mysql’den gelen tarih verilerini aldıktan sonra ayırmak yerine; verileri alırken mysql tarafından gün,ay,yıl veya unixtimestamp gibi ayırmak daha iyidir.

    select date_format(tarih,’%d’) as gun, date_format(tarih’%m’) as ay ,date_format(tarih,’%Y’) as yil from tablo

    foreach(sonuckumesi as i) echo $i->gun.’/’.$i->ay.’/’.$i->yil;

  13. 13 Hüseyin Berberoğlu said at 15:45 on Şubat 8th, 2009:

    @Mustafa Atik verdiğiniz bilgiler için teşekkürler :) Yazdığınız yöntem de iyi bir yöntem.

    Varchar olarak kaydetmek konusundaki görüşlerinize katılıyorum.

  14. 14 özkan said at 14:25 on Mayıs 20th, 2009:

    helal olsun walla sizelr olmasınız işim çok zor ha

  15. 15 Soner said at 17:01 on Temmuz 6th, 2009:

    Bu konuyla ilgili bir sorunum war yardımcı olabilirseniz..

    Mysql veritabanımda 17-04-01 olarak görünen tarihi ,
    Mssql e 17:04:2001 şeklinde aktarmak istiyorum yardım edebilir seniz çok sevinirim

  16. 16 Hüseyin Berberoğlu said at 22:22 on Temmuz 7th, 2009:

    @Soner Eğer veritabanında tarihi tuttuğun alan DATE ve benzeri bir formatta ise şöyle yapabilirsin;

    echo date(“d:m:Y”,strtotime($mysqldengelentarih));

    yazıda da bunu bulabilirdiniz aslında.

    Kolaylıklar.

  17. 17 Çağdaş said at 12:02 on Şubat 4th, 2010:

    arkadaşlar ben bir sitede tarih yeri boş olduğu zman o tarih yerine 01.01.2005 yazsın fakat bu tarihler ay gün yıl olarak kutucuklarda nasıl yaparım

  18. 18 imsa sahur said at 11:52 on Temmuz 22nd, 2010:

    teşekkürler peki veritabanındaki ay yıl gün saat dakika saniye şeklindeki ttarihi nasıl ay yıl gün olarak alırı php ile hiç bi işlem yapmadan ?

  19. 19 hasan said at 13:42 on Ağustos 11th, 2010:

    teşekkürler kardeş

  20. 20 selday said at 00:56 on Mayıs 28th, 2011:

    çok teşekkür ederim.
    echo date(“d-m-Y”,strtotime($mysqldengelentarih));

  21. 21 Hasan said at 01:15 on Haziran 8th, 2011:

    mysql e tarihi istediğiniz gibi yazdırabilirsiniz.tablo oluşturdugunuzda tarih satırını date değil de varchar veya text olarak belirlerseniz.istediğiniz formatta veri ekleyip çekebilirsiniz.

  22. 22 Oyun Parkur said at 23:00 on Haziran 26th, 2011:

    Uzun uğraşlardan sonra sayenizde sorunu çözebildim. Çok teşekkür ederim.

  23. 23 metin said at 23:29 on Ekim 26th, 2011:

    Veritabanında Y-m-d formatında olan bilgiyi sorgulayıp diyelim ki $gun_bul[ ] dizisine aldık. Eğer bu değer dizinde örneğin 3. sıradaki değer ise, aşağıdaki komutla 2011-03-29 formatındaki tarihi 29/03/2011 şeklinde yazdırabiliriz.

  24. 24 Hüseyin Berberoğlu said at 23:28 on Kasım 10th, 2011:

    @metin aşağıdaki kod yok olmuş sanırım :)


Leave a Reply