23 Ekim Salı ´12   —   3 Yorum
HTML5 git gide daha popülerleşiyor ve eski html kodlarının yerini, daha sade html5 kodlarına bıraktığını, daha önce javascript eklentileriyle yaptığımız bazı şeyleri yeni html5 tanımlamasında yeni özellikler olarak görmeye başladık.

Özellikle mobile web uyumlu sayfalar yaygınlaştıktan sonra html5 tanımlamaları sadece masaüstü bilgisayar tarayıcıları değil mobil tarayıcılar için de özel yetenekler içermeye başladı.

Eğer birkaç yıldır güncellenmeyen bir tarayıcınız varsa HTML5 formların tüm özelliklerini desteklemeyebilir fakat güncel ve modern tüm tarayıcılar birçok html5 form özelliğini destekliyor.

İşte yeni html5 form özelliklerinden bazıları...

Devamını Oku →
23 Ağustos Perşembe ´12   —   5 Yorum
Daha önce php'de iki tarihi karşılaştırmayı anlatmıştımhttp://mfyz.com/phpde-tarih-karsilastirma ancak iki tarih arasındaki ay, gün, yıl farkını kullanmanız gerektiğinde, php'nin tarih-zaman sınıfını kullanarak iki tarih arasındaki zaman farkını istediğiniz periyodda hesaplatabilirsiniz.

Bu yönetmle hesaplayacağınız tarih farkının iki genel kullanımı vardır. Birincisi hesaplamalarınızda iki tarih arasındaki geçen zamana göre yaptığınız bir kuralınız vardır. Mesela bir blog yazınızın 1 aydan önce yazıldığını denetlemek ve buna göre "Bilgiler geçerliliğini yitirmiş olabilir" gibi bir not göstermek istiyorsunuz. Bunun için şu an ile yazının yazılma tarihi arasında 1 ay olup olmadığını sorgulayabilirsiniz.

Bu hesaplama aslında basit bir matematiksel bir hesap gibi görünse de aslında ay uzunluğu, artık yıl hesabı gibi nedenlerden dolayı ve her zaman 1 ay = 30 gün olmaması nedeniyle biraz daha karışık olabiliyor. Dolayısıyla anlattığım yöntem gibi hazır yöntemleri kullanarak bu hesaplamaları doğru şekilde yapabilirsiniz.

Şimdi basit bir kod ile örnekleyeceğim.
$now     = new DateTime();
$created = new DateTime($_entry['created_at']);
$diff    = date_diff($now, $created);
$days    = $diff->format('%d');
$hours   = $diff->format('%h');
$mins    = $diff->format('%i');

$diffStr = NULL;
if ($days > 0) {
     $diffStr .= $days . ' gün';
}
if ($hours > 0) {
     $diffStr .= ' ' . $hours . ' saat';
}
if ($mins > 0) {
     $diffStr .= ' ' . $mins . ' dakika';
}
Yukarıdaki kodda $diffStr değişkeni, yazınızın kaç dakika, saat, gün önce eklendiğini gösterecektir. Eğer isterseniz ayı, yılı da ekleyerek herhangi bir tarih formatını "3 gün 8 saat 3 dakika önce" şeklinde bir metine çevirebilirsiniz.
Bir web uygulaması/sitesi geliştiriyorsanız verilerinizin eklenme, güncellenme tarihleri genelde uygulamanın işleyişinde büyük rol oynar.

Örnek bir senaryo olarak, bir günlük sitesi hazırladınız ve günlükte görünen yazılarınızın son güncellenme tarihlerine göre son güncellenen yazıları listelemek isteyebilirsiniz. Veya bir e-ticaret sitesinde ürünleri belirli günlerde yayına çıkarmak istiyorsunuz ama bütün ürünleri her gün tek tek ekleyememeceğinize göre her ürünün yayına çıkış tarihini ayarlamak isteyebilirsiniz. Bunun gibi bir çok örnek bulabilirsiniz verilerin tarihleri üzerinden işlem yapmak isteyeceğiniz.

Yani aslında tarihlerle çalışmak bu ısın her noktasında. Dolayısıyla tarih eşleştirmeleri yapmak veya iki tarih/zaman arasındaki farkı bulmak gibi birçok is yapıyor olacaksınız yukarıdaki veya benzer senaryoları kodlarken. Size bu dökümanda php ile tarih eşlestirmesi yapmayı göstereceğim.

Benzer şekilde tarih karşılaştırmasını mysql'de yapmak için yakında başka bir yazı yayınlayacağım.


Tarih karşılaştırması denince akla çok basit örnekler gelebilir, örneğin X tarihi Y'den önce mi sonra mi? gibi, bunu string karşılaştırması yaparak da yapabilirsiniz. MySQL'de sürekli gördüğünüz "Y-m-d H:i:s" formatı aslında tam olarak bu ihtiyacı karşılayabılır, Yani o tarih formatları string'e de çevrilse string karşılaştırmasında tarihsel sırayı doğru yansıtacaktır.
if ("2012-05-05" < "2012-05-10") print 'önce';
Ama tarih karşılaştırmaları her zaman böyle once/sonra karşılaştırması değil, 1 haftadan önce mi? veya son 1 aylık veriler... gibi daha karışık örneklere dönebilir. Böyle karışık tarih karşılaştırmaları eğer sihirli fonksiyonlar kullanılmazsa baş ağrısı olabilecek bir konu, çünkü tarihler arasındaki farklar sadece saat dakika saniye gibi matematiksel hesaplarla hesaplanması kısa kodlarla yapılacak bir şey değil. Tabi ki yapılabilir fakat tek satırda ya da tek fonksiyon ile bunu yapmak varken anlamsız. 1 ay öncesi demek her zaman son 30 gün demek değildir mesela. Veya Geçen hafta Pazartesi'yi hesaplamak kolay değildir.

Bu tarz karışık karşılaştırmalar için php'de her zaman kullandığım bir fonksiyon olan strtotime() fonksiyonunu tarih karşılaştırması yapmak için de kullanırım. Örnegin X tarihinin 3 günden önce olup olmadigini:
if (strtotime($X) < strtotime('-3 days')) print 'eski';
veya "3 days ago" stringini matematiksel tarih değeri yani timestamp'e çevirerek karşılastırabiliriz. Farkettiyseniz $X değişkenini de strtotime fonksiyonundan geçiriyorum çünkü o da string değeri olduğunu varsayıyorum. Strtotime fonksiyonunun güzel yanı, herhangi bir tarih formatını timestamp'e çevirebiliyor olması. Yani amerikan tarih formatı da yazsanız, bizim kullandığımız formatta da yazsanız php'nin bunu çeviriyor olması. Bundan daha değerli olarak gördüğüm, söylem olarak kullandığımız tarihleri de (2 gün önce, 1 saat sonra, geçen cumartesi, önümüzdeki pazar saat 2) gibi stringleri de doğru olarak timestamp'e çevirebiliyor olması. Bunu kullanarak istediğiniz tarih karşılaştırmasını yapabilirsiniz.

Mesela daha karışık bir örnek olarak:
if (strtotime('last monday 1pm') < strtotime($post_date)) print 'yayinda';
Bu ufak kontrolle, bütün hafta yazdığınız yazıları bir sonraki hafta pazartesi öğlen 1'de herkese görünür hale getirir. Kontrol'de su anki tarihe göre bir önceki haftanın pazartesi saat öğlen 1'in zaman değeri ile yazıların tarihlerini kıyaslıyoruz. Örnek veriyorum Bugün salı ve siz bi yazı yazdınız, o tarih değeri o haftanın pazartesisinden küçük olmadığı için yukarıdaki kodda if'in içindeki ilk tarih bir sonraki pazartesiye kadar değişmeyecektir. Bir sonraki pazartesi saat 1'de o anın tarihine dönüşeceği için bu salı günü yazdığınız yazı görünür hale gelecektir.
17 Kasım Perşembe ´11   —   17 Yorum
Bir suredir siteyi ufak ufak degistirdigimi farkediyordunuz, zaten ara sira da uzerinde calisiyor oldugumu soyluyordum. Herhalde son birkac yildir goreceginiz en buyuk degisiklik geldi (aslinda buyuk degisikliklerin baslangici diyebiliriz).

Tahmin ediyorum ki herkes olumsuz yonde elestirecek once. Cunku gorsel bir yaninin olmadigini biliyorum ve insanlarin bunu aradiginin da farkindayim. Fakat header'i birkac nedenden dolayi degistirdim simdilik bu nedenleri ve ileride ne yapacagimi anlatmayacagim, degistirdikce ekledigim ozelliklere gore sizden feedback isteyecegim zaten.

Ama emin olun bu bir kullanilabilirlik gelistirmesi ve bunun devaminda hem sadece header icin hem de sitenin diger parcalari icin guzel seyler geliyor.




Hangisi? (ustteki veya alttaki?)

Popüler Etiketler

social htaccess apache route router mod_rewrite tool css session cookie wireless share while apple laptop notebook windows mysql sql optimizasyon analyse procedure php nedir jquery javascript textarea date diff job developer mfyz kurulum nasıl css3 html form radio style google network app facebook media meta api opengraph fql optimization iOS coding blog rss twitter bootstrap kitap wordpress cms sosyal medya less language development konsol terminal compile compiler macosx linux on-the-fly js plugin box tebrik graph ubuntu workspace firefox download kontrol yapıları if ruffles doritos screen web app open source wanda digital zaman xml export istatistik statistics icon ikon grafik banner calendar logo html5 player license lisans svn subversion git version control deployment pear mdb2 prepare execute injection url cache assets framework mobile browsers table integration service chart search ajax startups newsletter mail portfolio tytz design ipucu xmlhttprequest pharma hack seo subdomain örnek kod gimp db code music http server mssql pgsql lifestream parse phpstorm jetbrains ide editor ios itunes osx mootools oyun iphone internet ipad login proje kampanya connect dokuman object app store store in-app purchase purchase verification storekit itunes connect support query input www redirect crossdomain howto switch fstab ntfs database free sitemap widget ui ux webkit link generator select ie browser xhtml auth imza signature insanlar tarih internet explorer spam subscription applications regex button icons