18 Ekim 2009 Pazar

PHP ile Uygulamalı MVC Örnegi

İlk başlarda öğrenmemeye inat etsemde bi kac denemeden sonra ne kadar işi kolaylaştırdıgını uzun vadede yazılan kodun tekrar kullanılabilirliğini uzattığını, uygulama ile sabit farkına vardım MVC modelinin.

MVC; genel olarak yazilan uygulamada bir nizam saglıyor. Nedir bu nizam diyecek olursak PHP(php ye özgü değil) ile HTML birbiriniden ayirarak kodun okunabilirliğini artirirken ayni zamanda koda müdahale etme durumunda işmizi oldukça kolaylaştıryor, şablon motorlarını basit bir sekilde devre dışı bırakıyor. Şimdi bu noktada örnek vermek gerekirse :

Örnegin index.php için şu şekilde dosyalarimiz olmali ;

Index.mdl.php
Index.cnt.php
Index.view.php

Bu üç dosyanın işlevleri şunlardır :

Index.mdl.php : Bu Kısımda yani Model Katmanında işin sql sorguları tutulabiliriz, yani örnek vermek gerekirse :



Index.cnt.php : Bu kısımda tbl_y tablosunda örnegin longtext içeriğe sahip bir fieldımız oldugunu varsayalım:

Index.view.php : Bu gorunum katmanındayız. Burda sunumu yapıyoruz yani goruntuyu ciziyoruz.



Şimdi bu uygulamayı daha esnek bir hale getirip dosya düzenini saglamak icin basit bir fonksiyon yazalım, (Bu yöntem dışında farklı şekillerde de uygulanabilir)



Bu sınıfın işlevselliği ise $o parmetresi ile neyi çağıracagımıza karar vermiş oluyoruz daha sonrasında yine $o parametresiyle gönderdiğimiz klasör icersinde gerekli view dosyasının olup olmadıgını kontrol ettikten sonra sırasıyla model -> controller -> view -> dosyalarımızı çağırıyoruz.


Burada anlatılan yöntem; ceviz.net’ten sancar.saran’ın MVC yi yorumlayış şeklinin en basit haliyle özetidir…

10 Eylül 2009 Perşembe

Yine Yeniden

Blogumun temasını degiştirdim , yukarıdaki barı kaldırmayı aklımdan gecirmemistim , onuda kaldırdım artık blogger reklamı yapmak yok :) . Uzun zamandır aklımdan geçirip uygulamaya koyamadıgım Java öğrenme serüvenine artık basliyorum, yanında aynı zamanda ingilizce öğrenmek gibi bir niyetimde var aynı zamanda açık öğretime çalışmayıda düşünüyorum bakalım ne kadar hangisinin üzerine gidebilecegim.

Javayı tercih etme sebebime gelince, aslında tamamiyle duygusal. Php ile webte harika ve performanslı işler çıkartabilmek mümkün , aynanın diğer tarafı olan masaüstü ayagında Php'nin etkisiz olması beni javaya iten en büyük etken oluyo. Javanın tüm platformlarda (aslında bana göre biraz hikaye) bir eli var, yapılamayacak uygulama sanırım çok kısıtlıdır veya yoktur.

Beni asıl cezbeden JavaFX : hakkında çok detaylı teknik bilgim olmasada browser'dan masaüstüne geçebilme düşüncesi ve aynı zamanda görsel birşeyler çıkartabilme düşüncesi heyecanlandırıyo beni, javayı bi kaç cümleyle anlatmak pek tabi mümkün değil öğrenip görecegiz ....

07 Ağustos 2009 Cuma

Yorumsuz...

Dusunuyorum surekli bi ara kayboluyorum sessizlikte bi ara cikisa geciyorum ve bazı aklima enstantane düşünceler geliyo, diyorum ki dogrular dogrulari, yanlislarsa yanlislari dogurur ve bu ikisi arasinda sans peydah olur...

05 Ağustos 2009 Çarşamba

Php ile Rakam Formatlamak

round(1.95583, 2); -> Çıktı -> 1.96 Ondalıklık Altı Üstü Basamakları Dikkate
ceil(1.45); -> Çıktı -> 2
floor(9.999); -> Çıktı -> 9


o = '956,5698';
echo number_format(round($o,2), 2, '.', '') ;

Çıktı -> 957.00

03 Ağustos 2009 Pazartesi

Javascript İle Sanal Klavye Yapmak

avascript öğrenmeyi hep ertelemişdim amavelakin yolunun javascript güzerkahından geçmemesi artık mümkün değil. O güzargah üzerinden geçerken yine baya birşey öğrenmişim en azından istediğim herşeyi yapabiliyorum. Bugün sanal klavye ihtiyacım oldu , araştırmalarım neticesinde ajax-tr.com ve yabancı kaynaklı bi kaç adreste örneklerle karşılaştım ama semantik açıdan bakıldığında baya kaba oldugundan içime sinmedi bende kendim yazayım dedim. Aslında o kadar zor birşey de değil neticesinde

Uygulama Örnegine Buradan Ulaşabilirsiniz.



  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  2. <html xmlns="http://www.w3.org/1999/xhtml">

  3. <head>

  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  5. <title>Untitled Document</title>



  6. <style type="text/css">

  7. body { font-family:Verdana, Geneva, sans-serif}

  8. #snlklvy {display:none; position:absolute; border:1px solid white; width:100px; padding:5px; border:1px solid #ccc; font-size:62%}

  9. #snlklvy a{ display:block; float:left; margin:2px; border:1px solid #ccc; padding:10px; background:#fff; color:#333; font-weight:bold;}

  10. #snlklvy a:hover{ color:#555; background:#FF9; text-decoration:none}

  11. .text { border:1px solid #999; background:f8f8f8; width:40px}

  12. </style>

  13. <script type="text/javascript">

  14. function show(vl) {

  15. document.getElementById('iname').value = vl;

  16. document.getElementById('snlklvy').style.display='block';

  17. }

  18. function val(v) {

  19. nereye = document.getElementById('iname').value; /// nereye rakam girilecek ?

  20. var n = document.getElementById(nereye).value.length;

  21. var son = nereye.substr(-1);

  22. if(n<4){

  23. document.getElementById(nereye).value = document.getElementById(nereye).value + v ;

  24. document.getElementById(nereye).focus();

  25. }else{


  26. var hesapla = parseInt(son)+1;

  27. var sonraki = 'cn'+(hesapla);

  28. document.getElementById(sonraki).focus();

  29. }

  30. }

  31. function vsil() {

  32. var bos = '';

  33. nere = document.getElementById('iname').value;

  34. document.getElementById(nere).value=bos;

  35. }

  36. </script>

  37. </head>


  38. <body>


  39. <div style="width:200px;">

  40. <input type="hidden" name="iname" id="iname" />

  41. <input name="cn1" type="text" class="text small" onfocus="show(this.name)" id="cn1" maxlength="4" title="!" />

  42. <input type="text" class="text small " name="cn2" onfocus="show(this.name)" id="cn2" maxlength="4" title="!" />

  43. <input type="text" class="text small " name="cn3" onfocus="show(this.name)" id="cn3" maxlength="4" title="!" />

  44. <input type="text" class="text small " name="cn4" onfocus="show(this.name)" id="cn4" maxlength="4" title="!" />

  45. </div>

  46. <div class="snlklvy" id="snlklvy">

  47. <a href="javascript:;" onclick="javascript:val('1')">1</a>

  48. <a href="javascript:;" onclick="javascript:val('2')">2</a>

  49. <a href="javascript:;" onclick="javascript:val('3')">3</a>

  50. <a href="javascript:;" onclick="javascript:val('4')">4</a>

  51. <a href="javascript:;" onclick="javascript:val('5')">5</a>

  52. <a href="javascript:;" onclick="javascript:val('6')">6</a>

  53. <a href="javascript:;" onclick="javascript:val('7')">7</a>

  54. <a href="javascript:;" onclick="javascript:val('8')">8</a>

  55. <a href="javascript:;" onclick="javascript:val('9')">9</a>

  56. <a href="javascript:;" onclick="javascript:val('0')">0</a>

  57. <a href="javascript:;" onclick="javascript:vsil()">Sil</a>

  58. </div>

  59. <pre class="brush: js">

  60. alert("hello");

  61. </pre>

  62. </pre>


  63. </body>

  64. </html>


13 Temmuz 2009 Pazartesi

Yazamak

Şuanda kaçak kullandığım internetin keyfini srümeye çalışıyorum ne kadar keyif verebilirse zira 3 dk da bir kopuyo , 10 defa sayfayı yenilediğimde anca açabiliyorum sayfaları , neyse yarın internet bağlatıyorum artık , şuanda sesizliğin huzurun dinginliğin tadını çıkarıyorum . İnşallah şimdi tek sefer de bu ik isatırı POST ediceğim :) Okuyosanız bi şekilde gitmiş demektir ..

09 Temmuz 2009 Perşembe

Yılmaz Erdoğan Harika Bir Şiir Yorumu


Duydum ki bizi bırakmaya azmediyorsun etme
Başka bir yar başka bir dosta meylediyorsun etme
Sen yadeller dünyasında ne arıyorsun yabancı
Hangi hasta gönüllüyü kasdediyorsun etme
Çalma bizi bizden bizi gitme o ellere doğru
Çalınmış başkalarına nazar ediyorsun etme
Ey ay felek harab olmuş alt üst olmuş senin için
Bizi öyle harab öyle alt üst ediyorsun etme
Ey makamı var ve yokun üzerinde olan kişi
Sen varlık sahasını öyle terk ediyorsun etme
Sen yüz çevirecek olsan ay kapkara olur gamdan
Ayın da evini yıkmayı kastediyorsun etme
Bizim dudağımız kurur sen kuruyacak olsan
Gözlerimizi öyle yaş dolu ediyorsun etme
Aşıklarla başa çıkacak gücün yoksa eğer
Aşka öyleyse ne diye hayret ediyorsun etme
Ey cennetin cehennemin elinde olduğu kişi
Bize cenneti öyle cehennem ediyorsun etme
Şekerliğinin içinde zehir zarar vermez bize
O zehiri o şekerle sen bir ediyorsun etme
Bizi sevindiriyorsun huzurumuz kaçar öyle
Huzurumu bozuyorsun sen mavediyorsun etme
Harama bulaşan gözüm güzelliğinin hırsızı
Ey hırsızlığa da değen hırsızlık ediyorsun etme
İsyan et ey arkadaşım söz söyleyecek an değil
aşkın baygınlığıyla ne meşk ediyorsun etme

Mevlana Celaleddin Rumi

19 Haziran 2009 Cuma

Php Tek Ve Çok Boyutlu Diziler Hakkında

Başlangıç İçin :

$arr = (1,2,3,3,3,3,3,2,1);
$knt = array_count_values($ar);
Çıktı 1 => 2 , 2=>2, 3=>5

....
$mehmet = array('Ne'=>'Olabilir');
$osman = arrray('Bilmiyorum'=>'Olsun Birsey');
$yilmaz = array_combine($mehmet,$osman);

Cikti İse :

Ne => Olabilir
Bilmiyorum => Olsun Birsey
Birleştirdi :)

18 Haziran 2009 Perşembe

Mysql Tarih Parametreleri

Bugune ait verileri goruntulemek icin :
WHERE CURDATE(tarih)

İstenilen Tarihler Arasını Listelemek İçin:
WHERE DATE(tarih) BETWEEN 2009-01-30 AND 2009-06-06

Sorgudan Hafta Sonlarını Çıkartmak İçin:
WHERE DATE(tarih) BETWEEN '2009.01.30' AND '2009.06.06'
AND DAYOFWEEK(tarih) BETWEEN 2 AND 6;

Hafta Sonu Eklenmiş saat 10 ile 18 arasi veriler Listemek İçin:
WHERE DATE(tarih) BETWEEN '2009.01.30' AND '2009.06.06'
AND DAYOFWEEK(tarih) BETWEEN 2 AND 6
AND DATE_FORMAT(tarih, '%H' ) BETWEEN 11 AND 17;

Veritabanındaki bir tarihten itibaren:
WHERE DATE(btarih) BETWEEN 06.06.2009 AND btarih

Dünün Verilerini Çekmek İçin
WHERE DATE(tarih) = DATE_SUB(CURDATE(),INTERVAL 1 DAY)

Bu Haftanın Kayıtları İçin:
tarih >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)

Son 15 Gün İçin:
tarih >= DATE_SUB(CURDATE(), INTERVAL 15 DAY)

Son 1 Ayın Kayıtları İçin
tarih >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)

SELECT DATE_FORMAT(dt, '%d.%m.%Y') AS d,dt,toplam,sum(toplam) as say FROM dt_tb WHERE dt BETWEEN '2009.04.15' AND '2009.12.15'
GROUP BY d
Yukarıdaki sorgu ile tarih güne gruplanıyor

mysql özel tarih fonksiyonları kullanılarak tarih aralıklarını daha kolay sürümcemesiz secilebilir.

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format
http://www.zihni.net/mysql/mysql-date_add-fonksiyonu/

15 Haziran 2009 Pazartesi

Ciziktirimek geldi icimden

Birşeyler yazayım diyorum soylenmemis olsun , akılda yer etsin anlam yerini bulsun diyerek neyi soylemek lazım neden dem vurmak lazım ne anlam ifade eder vaya ne etmez. Kesemkeşlik anlamlı anlamszlık çelişki ulan bu

"Varolmanın acı olduğunu bilenler, kabul edenler ve anlatanların, uyuşturucunun çare olduğuna inanmaları, varolmanın aynı zamanda bir işkence olduğunun da kanıtı sayılabilir. Yalnızlık ise, bu farkındalığın çevrede yaydığı korkudan beslenir. Ve acının farkında olan insan, farkındalığının sonuçlarını, yalnızlığın acısını bile bile soğurur. Genellikle her gün, kimileri her solukta."

10 15 defa okuyup kıyısından köşesinden tutuyorum yazıyı sonra koyveriyorum tekrar. Hayattan şevk alma derdi biride şöyle söylüyo

Bizlerin hayatındaki asıl sorun, hayale inanılıyor olması. Ya da kendi yarattığımız gerçekliğimiz ile varolmanın asıl gerçekliğinin devamlı çatışıyor olması.

"En büyük hayal ise mutlu olmak, devamlı bir mutluluk. Bu, bizlere öğretilen, bize işleyen ve genlede de bize dayatılan bir zihinsel yapı, kimi zaman otomatik bir refleks, hazırda bulunan ve hiç değişmeyecekmiş gibi, hiç
kımıldamayacakmış gibi benliğimize oturmuş bir zihinsel aktivite. Hatta, bu hazırda duran tavır bir kafa keyfi oluyor. Çünkü bunun aksini uygulamayı becerebilmek bir kenara, düşünmek bile hiç de kolay değil. Bu zihinsel sabitlik ise en sağlam perde."

Ve yukarıda ki daha analşılır bir dilde izah ediyo , herkes izah ediyo zaten .

Keyfim gelirse eklerim belki bişeyler ...