Cevapla 
 
Derecelendir
  • 0 Oylar - 0 Yüzde
  • 1
  • 2
  • 3
  • 4
  • 5
3 KATMANLI MİMARİ VE PHP
02-06-2008, 02:17 PM
Mesaj: #1
3 KATMANLI MİMARİ VE PHP
:: 3 KATMANLI MİMARİ VE PHP



Öncelikle makaleyi okumaya başlamadan önce dosyaları indirip dosyalardan takip etmenizi tavsiye ederim dosyaları indirmek için tıklayın. Bu makale yeni başlayanlar için değildir.

Bu mimariye göre projemiz 3 ayrı katmana bölünür.

Bunlar :

1. Sunum Katmanı (Presentation Layer)

Sunum katmanı, İş katmanı ve Veri katmanından gelen bilgilerin kullanıcılara gösterildiği kısımdır. Yani bir arayüz denebilir. HTML sayfalar bu katmana örnek verilebilir.

2. İş Katmanı (Business Layer)

İş katmanı, tüm işlemlerin yapıldığı kısımdır. Her türlü denetim burada yapılır. Sunum katmanından gelen istekleri hazırlayan ve veri katmanına gönderen kısımdır.

3. Veri Katmanı (Data Layer)

Veritabanı katmanı, projemizin veritabanı ile ilişkisini sağlar. kendisinden istenen verileri işler, hazırlar ve iş katmanına gönderir.

Nasıl Çalışır
Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz.


Niye 3 katmanlı mimari ?

Mesela veritabanı olarak mysql kullanıyoruz ve bazı sebeplerden dolayı Mssql, PostgreSQL vb. başka bir veritabanı kullanacağız. İşte bu noktada sadece Veri Katmanını değiştirmemiz yetecektir.

Bu örnek iş katmanı içinde geçerli ufak değişiklerle tüm sistem üzerinde büyük değişiklikler yapmamıza olanak sağlar ve güvenlik açısından önemlidir.

Peki 3 katmanlı mimari kullanmak çokmu zor?

Hayır hiçte zor değil. Fakat projeye başlarken biraz daha fazla kod yazmanıza sebep olur.

Bu öğrendiğimiz bilgileri bir proje üzerinde uygulayalım.

Projemizde veritabanı olarak mysql, sunum katmanı olarak ise Smarty kullanacağız. Smarty ile ilgili ayrıntılı bilgiyi Linkleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. sayfasından alabilirsiniz.

ÖRNEK PROJE :

Örnek proje olarak bir haber portalı yapmaya başlayalım.

KULLANILACAK CLASS YAPISI

Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz.

SMARTY KURULUMU

Linkleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. adresinden Smarty'nin son versiyonunu indiriyoruz. Ben en son yayınlanan 2.6.18 versiyonunu indirdim. İndirdiğimiz zip dosyasının içindeki libs/ klasorunu ana dizinimize atıyoruz.

DİZİNLER



cache/ (chmod 777)
class/
libs/ <- smarty dosyaları bu dizinde olacak
sistem/
temp/page/ (chmod 777)
templates/
uploads/ (chmod 777)



VERİ KATMANI

jure.sql




-- --------------------------------------------------------

--
-- Tablo yapısı: `jure_news`
--

CREATE TABLE `jure_news` (
`id` int(11) unsigned NOT NULL auto_increment,
`category` smallint(5) unsigned NOT NULL,
`title` text NOT NULL,
`info` text NOT NULL,
`more` text NOT NULL,
`picture` varchar(255) NOT NULL,
`active` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=1;

--
-- Tablo döküm verisi `jure_news`
--

INSERT INTO `jure_news` VALUES (1, 1, 'Tiryakilere elektronik sigara!', 'Nikotin bağımlılığından kurtulmanın alternatif yolu elektronik sigara. Tirkayilere ger&ccedil;ek sigara i&ccedil;iyorlarmış hissi veren elektronik sigara T&uuml;rkiye&rsquo Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. e de satılıyor.', 'İSTANBUL - Sigara alışkanlığından vazge&ccedil;meye &ccedil;alışan ama bunu bir t&uuml;rl&uuml; başaramayanlar i&ccedil;in alternatif bir &ccedil;&ouml;z&uuml;m geliştirildi. Hong Kong&rsquo;taki bir firma elektronik sigara &uuml;retti.<br /><br />Hong Kong&rsquo Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. a bir firma sigarayı bırakmaya &ccedil;alışan tiryakilere, nikotin bandı ve sakızı dışında farklı bir alternatif sunuyor. Elektronik sigara... Elektronik sigara, tiryakilere ger&ccedil;ek sigara i&ccedil;iyorlarmış hissi veriyor. &Uuml;retici firma, pille &ccedil;alışan elektronik sigaranın alternatiflerinden &ccedil;ok daha etkili olacağı konusunda iddialı. 208 dolara satılan elektronik sigaranin piyasa s&uuml;r&uuml;ld&uuml;ğ&uuml; &uuml;lkeler arasında T&uuml;rkiye de bulunuyor. &Uuml;retici firmanın yetkilileri, son 12 ayda gelirlerini 2 katına &ccedil;ıkardıklarını s&ouml;yl&uuml;yor.', 'uploads/saglik/265971.jpg', 1);
INSERT INTO `jure_news` VALUES (2, 1, 'Aspirin, bağırsak kanserinden koruyor', 'İngiliz bilim adamları, uzun s&uuml;reli aspirin kullanımının bağırsak kanserini &ouml;nleyebildiğini tespit etti.', 'LONDRA - Oxford &uuml;niversitesi bilim adamları, sonu&ccedil;larını tıp dergisi The Lancet&rsquo Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. e yayımladıkları araştırmalarında, beş yıl s&uuml;reyle g&uuml;nde 300 miligramlık doz aspirin kullanımının, bu s&uuml;reyi takip eden 15 yılda bağırsak kanserine yakalanma ihtimalini y&uuml;zde 74 oranında azalttığını g&ouml;rd&uuml;. <br /><br />Mide rahatsızlıkları ve hatta mide kanamasına kadar varan yan etkilerinden dolayı uzun s&uuml;reli aspirin kullanımının ancak bağırsak kanserine yakalanma riski y&uuml;ksek olan kişilere tavsiye edilebileceğini belirten bilim adamları, araştırmalarını 7500 kişi &uuml;zerinde yaptı. <br /><br />1970&rsquo;li ve 80&rsquo;li yıllarda başlayan araştırmaya katılanlara, g&uuml;nl&uuml;k 300, 500, 1200 miligramlık doz olarak aspirin ve bir gruba placebo verildi. Araştırmaya katılanlara aspirin beş ve yedi yıl s&uuml;reyle kullandırıldı. Daha sonra katılımcıların sağlık durumu 20 yıl s&uuml;reyle izlendi.', 'uploads/saglik/265985.jpg', 1);
INSERT INTO `jure_news` VALUES (3, 1, 'Prostat kanseri yaşı düşüyor', 'Prostat kanseri, erkeklerde en sık g&ouml;r&uuml;len kanser t&uuml;rlerinden biri. Aynı zamanda sinsi bir hastalık olarak da değerlendirilen prostat kanseri vakalarında son yıllardaki artış dikkat &ccedil;ekiyor.', 'İSTANBUL - Artışın yanı sıra, şimdiye kadar 60&rsquo;lı yaşlardan sonrası i&ccedil;in risk olarak değerlendirilen bu kanser t&uuml;r&uuml;, son yıllarda daha erken yaşlar i&ccedil;in de bir risk haline geldi. <br /><br />&Uuml;roloji Uzmanı Opr. Doktor Mehmet Kırdar, prostat kanseri tanısında ve takibinde &ouml;nemli bir test olarak değerlendirilen PSA&rsquo;nın (Prostat Spesifik Antijen) kanser taramasında kullanımı arttık&ccedil;a tespit edilen vaka sayısında da artış olduğunu vurguluyor. Kırdar, bunun prostat kanserinin daha erken yaşlarda teşhisini ortaya &ccedil;ıkaran bir başka nokta olduğunu belirtiyor. <br /><br />2006 yılında d&uuml;nyada 680 bin erkeğe prostat kanseri tanısı konuldu ve yaklaşık 200 bin erkek hastalık nedeniyle &ouml;ld&uuml;. 0 yaş &uuml;st&uuml; erkeklerin y&uuml;zde 9&rsquo;unda prostat iltihabı bulunuyor ve seks&uuml;el ge&ccedil;işli hastalıklarda prostat kanseri riski artıyor. <br /><br />Antienflamatuar ajanlar, antioksidanlar, d&uuml;ş&uuml;k yağlı diyet meyve sebze ve lifli diyet likopen i&ccedil;eren domates gibi besinlerin t&uuml;ketiminin bu riski azalttığını belirten Kırdar, prostat kanserinin genellikle ge&ccedil; belirti verdiğine dikkat &ccedil;ekiyor.', 'uploads/saglik/264974.jpg', 1);
INSERT INTO `jure_news` VALUES (4, 1, 'Nikotin bandını doktor kontrolünde kullanın', 'ABD&rsquo Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. e yapılan araştırmada aşırı strese maruz kalanların beyin h&uuml;crelerinin &ouml;ld&uuml;ğ&uuml; belirlendi.', 'Stresin insan v&uuml;cudu &uuml;zerindeki etkilerini araştıran ABD&rsquo;li bilimadamları şiddetli stresin başta depresyon olmak &uuml;zere ciddi sağlık sorunlarını nasıl ortaya &ccedil;ıkardığını belirledi. Chicago&rsquo;daki Rosalind Franklin &Uuml;niversitesi bilimadamlarınca yapılan araştırmada şiddetli stresin beyin h&uuml;crelerinin &ouml;l&uuml;m&uuml;ne neden olduğu ortaya &ccedil;ıktı. <br /><br />Aşırı stres beynin hafıza, &ouml;ğrenme ve duygulardan sorumlu hipocampus b&ouml;l&uuml;m&uuml;nde &uuml;retilen yeni h&uuml;creleri &ouml;ld&uuml;r&uuml;yor, yeni h&uuml;crelerin yetersizliği de depresyonla sonu&ccedil;lanıyor. <br /><br />Bilimadamları fareler &uuml;zerinde yaptıkları deneylerde aşırı stresin hipocampus b&ouml;lgesinin yeni h&uuml;cre &uuml;retme yeteneğine zarar vermediğini, ancak &uuml;retilen yeni h&uuml;crelerin 24 saat sonra &ouml;lmeye başladığını belirledi. <br /><br />Elde edilen bu yeni bilginin depresyon tedavisinde yeni bir &ccedil;ığır a&ccedil;ması bekleniyor. Stresin yeni h&uuml;creleri derhal değil, &uuml;retildikten 24 saat sonra &ouml;ld&uuml;rmeye başladığına dikkat &ccedil;eken uzmanlar, bu s&uuml;re&ccedil;te kullanılabilecek bir ila&ccedil; geliştirilerse h&uuml;vrelerin &ouml;l&uuml;m&uuml;n&uuml;n engellenebileceğine dikkat &ccedil;ekiyor. <br /><br />Aşırı stresin insan v&uuml;c&uuml;dunda fiziksel bir etkisi olduğunu kanıtlayan ABD&rsquo;li bilimadamları, &ccedil;ok d&uuml;ş&uuml;k miktarlardaki stresinse insan beynini uyanık ve tetikte tutacağı i&ccedil;in faydalı olabileceğini belirtiyor.', 'uploads/saglik/263096.jpg', 1);
INSERT INTO `jure_news` VALUES (5, 1, 'Stresi yenmek için çay için', 'Psychopharmacology dergisinde yayımlanan araştırma &ccedil;er&ccedil;evesinde, 6 hafta boyunca g&uuml;nde 4 bardak &ccedil;ay i&ccedil;en erkeklerde, &ccedil;ay yerine başka bir i&ccedil;ecek t&uuml;ketenlere oranla stres hormonu kortizol seviyesinin daha d&uuml;ş&uuml;k olduğu tespit edildi.', 'İngiliz bilimadamlarının yaptığı araştırma bu kişilerin stres seviyelerinin y&uuml;kseltilmesi i&ccedil;in verilen g&ouml;revlerden sonra b&uuml;y&uuml;k bir rahatlama hissettiklerini g&ouml;sterdi. <br /><br />Araştırmanın yazarlarından, London College &Uuml;niversitesi&rsquo;nde Epidomoloji ve Kamu Sağlığı b&ouml;l&uuml;m&uuml;nde g&ouml;revli Andrew Steptoe, araştırmanın sonu&ccedil;larının &ouml;nemini vurgulayarak, akut stresin yavaş atlatılmasının koroner kalp hastalığı gibi kronik hastalıklarla bağdaştırılma riskinin y&uuml;ksek olduğuna dikkati &ccedil;ekti. <br /><br />Steptoe, &ccedil;ayın stres hormonunun normal seviyeye gerilemesine yardımcı olduğunu ifade etti.<br /><br />Araştırma kapsamında 75 erkeğin iki gruba ayrıldığı, bunlardan birine meyve aromalı siyah &ccedil;ay, diğerine ise &ccedil;ay tadan başka bir kafeinli i&ccedil;ecek verildiği belirtildi. Araştırmacılar, 6 haftanın sonunda katılımcılara, 5 dakikada sunum hazırlamak ve teslim etmek gibi stres seviyelerini y&uuml;kseltmeyi ama&ccedil;layan testler verildiğini, bu testler sırasında her iki gruptaki kişilerin stres sevileri, tansiyon ve kalp atışlarının benzer &ccedil;ıktığını kaydettiler. Ancak verilen g&ouml;revlerin sona ermesinden 50 dakika sonra &ccedil;ay i&ccedil;enlerde kortizol seviyesinin ortalama y&uuml;zde 47 oranında d&uuml;şt&uuml;ğ&uuml;, bunun diğer grupta y&uuml;zde 27&rsquo Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. e kaldığı saptandı. <br /><br />Steptoe, &ccedil;ayın i&ccedil;indeki hangi maddelerin buna yol a&ccedil;tığının ise hen&uuml;z bilinmediğini s&ouml;yledi.', 'uploads/saglik/248204.jpg', 1);
INSERT INTO `jure_news` VALUES (6, 1, 'Sigaradan kurtulma rehberi', 'Sağlık Bakanlığı Temel Sağlık Hizmetleri Genel M&uuml Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. &uuml;rl&uuml;ğ&uuml;, sigara i&ccedil;enleri bırakmaya teşvik etmek ve bilgilendirmek amacıyla bir &ldquo;rehber&rdquo; hazırladı.', '<p class="textBodyBlack">Rehberde, sigarayı bırakmanın ilk etkileri ş&ouml;yle sıralandı: <br />&ldquo;Bıraktığınız ilk g&uuml;nden itibaren, artık karbonmonoksitli hava solumadığınız i&ccedil;in eritrositleriniz dokularınıza oksijeni yeniden ve tam kapasite ile taşıyabilecek. 6 binden fazla zehirli maddeyi g&uuml;n boyunca solumayacaksınız. Dolayısıyla iştah bozuklukları, solukluk, &ccedil;abuk yorulma başta olmak &uuml;zere bir &ccedil;ok sağlık sorununuz bir anda d&uuml;zelecek, y&uuml;z&uuml;n&uuml;zdeki &ccedil;izgiler hafifleyecek, g&ouml;zaltınızdaki torbalanmalar inecek, sesinizdeki kalınlaşma ve bozulma d&uuml;zelecek, nefesiniz k&uuml;ll&uuml;k gibi değil, normal insan gibi kokacak.&rdquo;<br /><br />Sigarayı alışkanlığından vaz ge&ccedil;mede sabır ve bırakmanın getireceği zorlukların nasıl aşılacağı konusunda bilin&ccedil;li olmanın yeterli olduğu ifade edilen rehberde, sigara i&ccedil;me isteğinin &ouml;nce zayıflayacağı, sonra da s&ouml;neceği vurgulandı. <br /><br />Rehberde, sigarayı bırakan kişinin bazen &ccedil;ok sinirli, mutsuz ya da keyifli olabileceği, bu durumlarda sigara i&ccedil;me isteğinin artacağı belirtilerek, bu isteğin 3-5 dakika s&uuml;receği ve zamanla yok olacağı anlatıldı. <br /><br /><font face="Verdana" size="2"><strong>BİR SAĞLIK KURULUŞUNDAN YARDIM ALINABİLİR</strong></font><br />Rehberde, sigarayı bırakmak isteyen kişinin daha y&uuml;ksek başarı elde etmek i&ccedil;in sağlık kuruluşlarından yardım alabileceği belirtildi.<br /><br />Rehberde, sigarayı bırakanlara, kilo almamak i&ccedil;in beslenmeye &ouml;zen g&ouml;stermeleri &ouml;nerildi. Kilo almamak i&ccedil;in spor yapılabileceği vurgulanan rehberde, sporun, sigaranın bırakıldığı ilk g&uuml;nlerde ortaya &ccedil;ıkabilecek sıkıntının aşılmasına da yardımcı olacağı hatırlatıldı.<br /><br />Daha &ouml;nce bırakmayı deneyip başaramayanlara tavsiyelerin yer aldığı rehberde, bu kişilere yeniden denemeleri &ouml;nerisinde bulunuldu. Sigarayı bırakmanın ilk deneme de başarısız olmasının &ldquo;&ccedil;ok doğal olduğu&rdquo; belirtilen rehberde, bu konuda kararlı olunması gerektiği hatırlatıldı. <br /><br /><font face="Verdana" size="2"><strong>&ldquo;HAZIRLIK D&Ouml;NEMİ&rdquo; İ&Ccedil;İN TAVSİYELER</strong></font><br />Rehberde, ilk işin bırakma g&uuml;n&uuml;ne karar verilmesi olacağı belirtildi. Hazırlık i&ccedil;in bir haftanın yeterli olacağı vurgulanan rehberde, bırakma zamanı olarak doğum g&uuml;n&uuml;, evlilik yıl d&ouml;n&uuml;m&uuml; gibi &ouml;zel g&uuml;nlerin belirlenmesi ve bunun yakın &ccedil;evreye ilan edilmesi &ouml;nerildi. Rehberde aile ve yakın &ccedil;evrenin psikolojik ve sosyal olarak destek olmasının bırakma eyleminin s&uuml;rmesinde etkili olacağı belirtildi.<br /><br />Sigarayı bırakmaya karar veren kişinin kendisini &ouml Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. &uuml;llendirmesi de &ouml;nerilen rehberde, bunun sigara i&ccedil;ilmeden tamamlanan ilk g&uuml;n&uuml;n, ilk haftanın, ilk ayın sonunda tekrar edilmesinin yararlı olacağı ifade edildi. <br /><br />Rehberde, sigarayı bırakmak isteyenlerin, bu kararın nedenlerini &ouml;nem sırasına g&ouml;re bir kağıda yazmaları ve bunu yanlarında taşımaları istenerek, zaman zaman okumalarının yararlı olacağı vurgulandı.<br /><br />Evdeki sigara, &ccedil;akmak, k&uuml;ll&uuml;k gibi nesnelerin atılması ya da g&ouml;zden uzaklaştırılması da tavsiye edilen rehberde, bu nesnelerin k&ouml;kleşmiş sigara i&ccedil;me isteği s&ouml;n&uuml;nceye kadar sigarayı bırakan kişi i&ccedil;in tehlikeli olduğu kaydedildi. <br /><br /><font face="Verdana" size="2"><strong>PSİKOLOJİK OLARAK HAZIRLANMA</strong></font><br />Rehberde, sigara i&ccedil;me isteğinin bir&ccedil;ok uyaranın etkisiyle ortaya &ccedil;ıktığı vurgulandı. Bu nedenle sigarayı bırakmak isteyenlerin birka&ccedil; g&uuml;n sigara i&ccedil;me davranışlarını takip etmeleri gerektiğine işaret edilen rehberde, bu işlemi, d&uuml;zenleyecekleri bir &ccedil;izelge yardımıyla daha kolay yapabilecekleri ifade edildi. <br /><br />Rehberde, sigarayı bıraktıktan sonra, i&ccedil;me isteği hissedildiği de hatırlatılarak, şu tavsiyelerde bulunuldu. <br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> 3-5 dakika s&uuml;ren i&ccedil;me isteği dalgaları geldiğinde yanınızda taşıdığınız, &uuml;zerine bırakma nedenlerinizi kaydettiğiniz kağıdı &ccedil;ıkartıp, zihninizi bırakma nedenlerinize yoğunlaştırın. Bulunduğunuz yer ve durumu değiştirin. Dikkatinizi başka şeylere y&ouml;neltmeye &ccedil;alışın, yerinizden kalkıp gezinin, meyve suyu ya da su i&ccedil;in, bir arkadaşınızla birka&ccedil; dakika sohbet edin. <br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> Ellerinizi ve zihninizi meşgul edecek yeni uğraşlan bulun. Kolay ulaşılabilir bir yerde meyve ve sebze bulundurun. Sigara i&ccedil;me isteği duyduğunuzda ağzınızı bunlarla meşgul edin. B&ouml;ylelikle hem vitamin ihtiyacınızı karşılamış, hem de kilo almayı engellemiş olursunuz. <br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> Sigara i&ccedil;me isteği uyandıracak arkadaş &ccedil;evresi ve ortamlarından bir s&uuml;re uzak kalmanız bırakma başarısını s&uuml;rd&uuml;rmenizde etkili olacaktır. D&uuml;zenli spora başlayın. Kaldırabileceğinizden fazla sorumluluk y&uuml;klenmekten ka&ccedil;ının. G&uuml;nl&uuml;k işlerinizi yaparken zamanınızı iyi kullanmaya &ccedil;alışın. İşlerinizi son g&uuml;ne bırakmayın. Sizi strese sokabilecek kişilerden uzak durun ve her olayda mutlu olacak pozitif bir y&ouml;n arayın.<br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> Kendinizi keşfedin, zayıf ve g&uuml;&ccedil;l&uuml; y&ouml;nlerinizi g&ouml;zden ge&ccedil;irin, g&uuml;&ccedil;l&uuml; olan yanlarınızı &ouml;ne &ccedil;ıkarın ve bunlarla &ouml;v&uuml;n&uuml;n. Bıraktıktan sonra ge&ccedil;en s&uuml;re ne olursa olsun bir tek sigara bile i&ccedil;meyi denemeyin.<br /><br /><font face="Verdana" size="2"><strong>BIRAKMANIN YARARLARI</strong></font><br />Sigaraya bırakan kişinin kalp, akciğer, solunum yolları hastalıkları ve kanserler gibi hastalık risklerinin bir anda azalacağına dikkat &ccedil;ekilen rehberde, bunun kişinin yaşam s&uuml;resi ve kalitesini kendisinin belirlemesi anlamına geleceği ifade edildi.<br /><br />Sigara i&ccedil;meyi 35 yaşından &ouml;nce bırakanlarda erken &ouml;l&uuml;m riskinin hemen hemen yok olacağının altı &ccedil;izilen rehberde, sigarayı bıraktıktan sonra v&uuml;cutta meydana gelecek değişiklikler de ş&ouml;yle sıralandı:<br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> 20 dakika sonra kan basıncı ve nabız normale d&ouml;ner, el ve ayaklarda kan dolaşımı d&uuml;zelir. 8 saat sonra, kanda oksijen d&uuml;zeyi normale d&ouml;ner, kalp krizi ge&ccedil;irme riski azalır.<br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> 24 saat sonra, v&uuml;cut karbonmonoksitten arınır. 48 saat sonra, kanda nikotin d&uuml;zeyi azalır, tat ve koku duyusu artar, peptik &uuml;lserli hastaların tedaviye verdiği cevap artar. <br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> 72 saat sonra, solunum yollarının gevşemesi sonucu nefes alıp verme rahatlar, solunum yolları fonksiyon g&ouml;rmeye başladığı i&ccedil;in sekresyon miktarı artar.<br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> 2-12 hafta sonra, v&uuml;cuttaki t&uuml;m dolaşım d&uuml;zelir, solunum yolu enfeksiyonlarına yakalanma riski azalır, y&uuml;r&uuml;rken yorulma ve tıkanma daha az g&ouml;r&uuml;l&uuml;r. <br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> 3-9 ay sonra &ouml;ks&uuml;r&uuml;k, kısa aralıklarla nefes alıp verme ve hırıltılı ya da ıslık sesli soluk alıp verme gibi solunum yolu problemleri d&uuml;zelir. Akciğer fonksiyonları y&uuml;zde 5-10 artar. <br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> Bir yıl sonra, koroner kalp hastalığı riski yarı yarıya azalır. 12-36 ay sonra mesane kanseri riski y&uuml;zde 50 azalır. <br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> 5 yıl sonra, kalp krizi ge&ccedil;irme riski ile yemek borusu ve ağız boşluğu kanseri riski y&uuml;zde 50 azalır. <br /><img height="7" alt="*" hspace="1" src="http://www.ntvmsnbc.com/Site_Elements/dotBlack.gif" width="7" vspace="1" border="0" /> 10-15 yıl sonra, kalp krizi ge&ccedil;irme riski i&ccedil;meyenlerle aynı seviyeye iner, akciğer kanseri riski i&ccedil;enlere oranla y&uuml;zde 50 azalır.<br /><br />Rehberde, bu alışkanlığından vazge&ccedil;mek istemeyenlerin de &ldquo;sigara i&ccedil;meyen kişilerin temiz hava soluma haklarına saygı g&ouml;stermeleri, &ccedil;ocukların &ouml;n&uuml;nde sigara i&ccedil;memeleri ve gen&ccedil;lere ve &ccedil;ocuklara olumsuz model oluşturmamaları&rdquo; istendi.<br /></p>', 'uploads/saglik/19924.jpg', 1);
INSERT INTO `jure_news` VALUES (7, 1, 'Ağır tiryakiliğin nedeni de genler', 'Osaka &Uuml;niversitesi&rsquo;nde g&ouml;revli bilim adamlarının, sabah yataktan kalkar kalkmaz sigara yakan tiryakiler arasında yaptığı araştırma, bu kişilerde nikotini par&ccedil;alayan enzimin &uuml;retimden sorumlu genin daha aktif olduğunu g&ouml;sterdi.', 'Nihon Keizai Shimbun&rsquo Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. a yayımlanan araştırmada, CYP2A6 geninin, 300 tiryaki ve ge&ccedil;mişte sigara i&ccedil;enlerde incelenmesi sonucunda genin &ccedil;ok aktif bi&ccedil;imine sahip olanların y&uuml;zde 70&rsquo;inin &ccedil;ok ağır tiryakiler olduğu tespit edildi. <br /><br />Araştırmanın, sigara i&ccedil;enlerin bu alışkanlıktan kurtulmasında daha etkili y&ouml;ntemlerin bulunmasına yardımcı olmasının beklendiği kaydedildi.', 'uploads/saglik/254596.jpg', 1);

-- --------------------------------------------------------

--
-- Tablo yapısı: `jure_news_category`
--

CREATE TABLE `jure_news_category` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`parent` smallint(5) unsigned NOT NULL,
`title` varchar(255) NOT NULL,
`active` tinyint(1) unsigned NOT NULL,
`posi` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=1;

--
-- Tablo döküm verisi `jure_news_category`
--

INSERT INTO `jure_news_category` VALUES (1, 0, 'Sağlık', 1, 1);
INSERT INTO `jure_news_category` VALUES (2, 0, 'Ekonomi', 1, 2);




class/database.class.php


<?php

class Result
{
var $_result;

/**
*
* @param $result
* @return Result
*/
function Result($result)
{
$this->_result = $result;
}

/**
* Veritabanından gelen veriyi object olarak döndürür...
*
* @return object
*/
function FetchRow()
{
return @mysql_fetch_object($this->_result);
}

/**
* Veritabanından gelen veri sayısını döndürür...
*
* @return int
*/
function NumRows()
{
return @mysql_num_rows($this->_result);
}

/**
* İstenilen alanın sonucunu verir
*
* @param string $field
* @return string
*/
function ReturnQuery($field)
{
$row = $this->FetchRow();
return $row->$field;
}

/**
* Veritabanında veri olup olmadığını kontrol eder...
*
* @return bool
*/
function BoolQuery()
{
if($this->NumRows())
return true;
else
return false;
}

/**
* Veritabanından gelen tek veriyi object olarak döndürür...
* Bu fonksiyon fetchrow ile aynıdır fakat ileride projemiz genişlediğinde bunun yararını göreceğiz.
* @return object
*/
function SingleRow()
{
$row = $this->FetchRow();
return $row;
}

/**
* Veritabanından gelen cogul veriyi dizi olarak döndürür...
*
* @return object
*/
function MultipleRow()
{
$array = array();
while($row = $this->FetchRow())
{
array_push($array,$row);
}
return $array;
}

/**
* Kullanılan veriyi siler...
*
* @return null
*/
function FreeResult()
{
$r = @mysql_free_result($this->_result);
unset($this);
return $r;
}
}

class Datalayer
{
var $prefix;
var $lang;
var $debug;
var $host;
var $user;
var $password;
var $database;
var $conn;
/**
* Constructor. Veritabanı bağlantısı yapılır.
*
* @return Datalayer
*/
function Datalayer()
{

$this->prefix = "jure";
$this->debug = true;
$this->host = "localhost";
$this->user = "root";
$this->database = "database";
$this->password = "password";

$this->Connect();
$this->selectDatabase($this->database);
$this->setCharset();

}

/**
* Veritabanı bağlantısı...
*
*/
function Connect()
{
if($this->host && $this->user && $this->database)
$this->conn = mysql_connect($this->host,$this->user,$this->password) or $this->error("Could not connect to server","Connect to $this->host $this->user:$this->password");
}

/**
* Mysql Charseti...
*
*/
function setCharset()
{
mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
}

/**
* Veritabanı seç...
*
* @param string $database
*/
function selectDatabase($database)
{
$this->database = $database;
mysql_select_db($database, $this->conn) or $this->MysqlError(mysql_error(), "no database");
}

/**
* sql sorgusunu veritabanına gönderir.
*
* @param string $sql
* @return object
*/
function LiteQuery($sql)
{
$result = mysql_query($sql, $this->conn) or $this->MysqlError(mysql_error(), $sql);
return new Result($result);
}

/**
* sql sorgusunu veritabanına gönderir...
*
* @param array $fields
* @param array $tables
* @param array $where
* @param array $order
* @param array $group
* @param string $limit
* @return object
*/
function Query($fields, $tables, $where = array(), $order = array(), $group=array(),$limit = "")
{

foreach ($tables as $tbl)
{
$tablos[] = $this->prefix."_".$tbl;
}

$fields = implode(",",$fields);
$tables = implode(",", $tablos);
$where = implode(" AND ", $where);
$order = implode(",",$order);
$group = implode(",",$group);

$sql = "SELECT $fields FROM $tables";

if(!empty($where)) $sql .= ' WHERE '.$where;
if(!empty($order)) $sql .= ' ORDER BY '.$order;
if(!empty($group)) $sql .= ' GROUP BY '.$group;
if(!empty($limit)) $sql .= ' LIMIT '.$limit;

$result = mysql_query($sql, $this->conn) or $this->MysqlError(mysql_error(), $sql);

return new Result($result);
}

/**
* Veritabanı hatasını ekrana yazdırır
*
* @param string $error
* @param string $query
*/
function MysqlError($error, $query)
{
if($this->debug)
{
echo "SQL: $query<br />Error: $error";
}
}

/**
* Veritabanına eklenen satırın id sini verir.
*
* @return int
*/
function InsertId()
{
return mysql_insert_id();
}

/**
* Veritabanı bağlantısı kapat
*
*/
function Close()
{
mysql_close($this->conn);
}




}
?>




@mysql_connect("localhost","user","password")
@mysql_select_db("database")

kısımlara kendi veritabanı bilgilerimizi yazıyoruz.


Böylece veri katmanımız tamamlanmış oldu.

Smarty çalışması için bazı ayarların yapılması gerekli. Bunu smarty dosyalarının içindede yapabilirsiniz veya yeni bir class türeterek türeterek yapabilirsiniz. Biz yeni bir class türeterek gerçekleştireceğiz.

SUNUM KATMANI

class/page.class.php



<?php
Class Page extends Smarty
{
var $page;
var $tpl;

/**
* Constructor...
*
* @return Page
*/
function Page()
{
$_REQUEST['page'] = (isset($_REQUEST['page'])) ? $_REQUEST["page"] : "index";

$this-compile_dir = 'temp/page'; // compile edilecek temaların kopyalanacağı dizin
$this->template_dir = 'templates'; // tema dosyalarının bulunacağı dizin
$this->page = $this->ClearPage($_REQUEST['page']); // sayfadaki zararlı karakterleri temizleyelim
$this->ClearGlobals(); // globallerden gelen zararlı değişkenleri temizleyelim
$this->tpl = $this->IncludeTemplate(); // sitemizin kullanacağı ana temayı belirleyelim
}

/**
* Sayfaya göre ana temayı yükler...
*
* @return string
*/
function IncludeTemplate()
{

switch ($this->page )
{
case "index" :
$template = $this->AddTemplate("main");
break;

default :
$template = $this->AddTemplate("main");
}

return $template;
}

/**
* Ana tema yolu...
*
* @param string $param
* @return string
*/
function AddTemplate($param)
{
$thetpl = "main/" . $param . ".tpl";
return $thetpl;
}

/**
* ":", "/", "..", ".", ";", "\\", "http", "ftp" karakterlerini temizler...
*
* @param string $page
* @return string
*/
function ClearPage($page)
{
$page = (!isset($page)) ? "index" : $page;
$page = str_replace(array(":", "/", "..", ".", ";", "\\", "http", "ftp"), "", $page);

return $page;
}

/**
* Gelen dizideki ' karakterlerini /' olarak değiştir...
*
* @param array $array
* @return array
*/
function Escape($array)
{
reset($array);
while (list($key, $val) = each($array)) {
if (is_string($val)) {
$array[$key] = addslashes($val);
} else {
if (is_array($val)) {
$array[$key] = $this->Escape($val);
}
}
}
return $array;
}

/**
* Global'den gelen değerler escape fonksiyonuna gönderilir...
*
*/
function ClearGlobals()
{
if (!get_magic_quotes_gpc())
{
@$_REQUEST = $this->Escape($_REQUEST);
@$_POST = $this->Escape($_POST);
@$_GET = $this->Escape($_GET);
@$_COOKIE = $this->Escape($_COOKIE);
@$_SESSION = $this->Escape($_SESSION);
@$_SERVER = $this->Escape($_SERVER);
}

}
}
?>



Sunum katmanıda tamamlanmış oldu. .

İŞ KATMANI

class/functions.php




<?php
function int($param)
{
return intval($param);
}

/**
* Dosyanın olup olmadığını kontrol eder...
*
* @param string $path
* @return bool
*/
function isfile($path)
{
if (!is_file($path)) return false; else return true;
}

/**
* HTML taglarınız geçersiz hale getirir...
*
* @param string $string
* @return string
*/
function clearhtml($string)
{
return htmlspecialchars($string);
}

/**
* yönlendirme yapar...
*
* @param string $page
*/
function location($page)
{
header("Location: $page");
exit();
}
?>



class/thumb.class.php





<?php
/**
*
* @author Ian Selby (ian@gen-x-design.com)
* @copyright Copyright 2006
* @version 1.1 (PHP4)
*
*/
class Thumbnail
{

var $errmsg;
var $error;
var $format;
var $fileName;
var $imageMeta;
var $currentDimensions;
var $newDimensions;
var $newImage;
var $oldImage;
var $workingImage;
var $percent;
var $maxWidth;
var $maxHeight;

function Thumbnail($fileName)
{
if(!function_exists("gd_info"))
{
echo 'You do not have the GD Library installed. This class requires the GD library to function properly.' . "\n";
echo 'visit Linkleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. for more information';
exit;
}
//initialize variables
$this->errmsg = '';
$this->error = false;
$this->currentDimensions = array();
$this->newDimensions = array();
$this->fileName = $fileName;
$this->imageMeta = array();
$this->percent = 100;
$this->maxWidth = 0;
$this->maxHeight = 0;
$this->watermarkImg = '';
//check to see if file exists
if(!file_exists($this->fileName))
{
$this->errmsg = 'File not found';
$this->error = true;
} elseif(!is_readable($this->fileName)) {
$this->errmsg = 'File is not readable';
$this->error = true;
}

//if there are no errors, determine the file format
if($this->error == false)
{
//check if gif
if(stristr(strtolower($this->fileName),'.gif')) $this->format = 'GIF';
//check if jpg
elseif(stristr(strtolower($this->fileName),'.jpg') || stristr(strtolower($this->fileName),'.jpeg')) $this->format = 'JPG';
//check if png
elseif(stristr(strtolower($this->fileName),'.png')) $this->format = 'PNG';
//unknown file format
else {
$this->errmsg = 'Unknown file format';
$this->error = true;
}
}

//initialize resources if no errors
if($this->error == false)
{
switch($this->format)
{
case 'GIF':
$this->oldImage = ImageCreateFromGif($this->fileName);
break;
case 'JPG':
$this->oldImage = ImageCreateFromJpeg($this->fileName);
break;
case 'PNG':
$this->oldImage = ImageCreateFromPng($this->fileName);
break;
}

$size = GetImageSize($this->fileName);
$this->currentDimensions = array('width'=>$size[0],'height'=>$size[1]);
$this->newImage = $this->oldImage;
$this->gatherImageMeta();
}

if($this->error == true)
{
//$this->showErrorImage();
break;
}
}
function destruct()
{
if(is_resource($this->newImage)) @ImageDestroy($this->newImage);
if(is_resource($this->oldImage)) @ImageDestroy($this->oldImage);
if(is_resource($this->workingImage)) @ImageDestroy($this->workingImage);
}
function getCurrentWidth()
{
return $this->currentDimensions['width'];
}
function getCurrentHeight()
{
return $this->currentDimensions['height'];
}
function calcWidth($width,$height)
{
$newWp = (100 * $this->maxWidth) / $width;
$newHeight = ($height * $newWp) / 100;
return array('newWidth'=>intval($this->maxWidth),'newHeight'=>intval($newHeight));
}
function calcHeight($width,$height)
{
$newHp = (100 * $this->maxHeight) / $height;
$newWidth = ($width * $newHp) / 100;
return array('newWidth'=>intval($newWidth),'newHeight'=>intval($this->maxHeight));
}
function calcPercent($width,$height)
{
$newWidth = ($width * $this->percent) / 100;
$newHeight = ($height * $this->percent) / 100;
return array('newWidth'=>intval($newWidth),'newHeight'=>intval($newHeight));
}
function calcImageSize($width,$height)
{
$newSize = array('newWidth'=>$width,'newHeight'=>$height);

if($this->maxWidth > 0)
{

$newSize = $this->calcWidth($width,$height);

if($this->maxHeight > 0 && $newSize['newHeight'] > $this->maxHeight)
{
$newSize = $this->calcHeight($newSize['newWidth'],$newSize['newHeight']);
}

//$this->newDimensions = $newSize;
}

if($this->maxHeight > 0)
{
$newSize = $this->calcHeight($width,$height);

if($this->maxWidth > 0 && $newSize['newWidth'] > $this->maxWidth)
{
$newSize = $this->calcWidth($newSize['newWidth'],$newSize['newHeight']);
}

//$this->newDimensions = $newSize;
}

$this->newDimensions = $newSize;
}
function calcImageSizePercent($width,$height)
{
if($this->percent > 0)
{
$this->newDimensions = $this->calcPercent($width,$height);
}
}
function showErrorImage()
{
header('Content-type: image/png');
$errImg = ImageCreate(220,25);
$bgColor = imagecolorallocate($errImg,0,0,0);
$fgColor1 = imagecolorallocate($errImg,255,255,255);
$fgColor2 = imagecolorallocate($errImg,255,0,0);
imagestring($errImg,3,6,6,'Error:',$fgColor2);
imagestring($errImg,3,55,6,$this->errmsg,$fgColor1);
imagepng($errImg);
imagedestroy($errImg);
}
function resize($maxWidth = 0, $maxHeight = 0)
{
$this->maxWidth = $maxWidth;
$this->maxHeight = $maxHeight;

$this->calcImageSize($this->currentDimensions['width'],$this->currentDimensions['height']);

if(function_exists("ImageCreateTrueColor"))
{
$this->workingImage = ImageCreateTrueColor($this->newDimensions['newWidth'],$this->newDimensions['newHeight']);
} else {
$this->workingImage = ImageCreate($this->newDimensions['newWidth'],$this->newDimensions['newHeight']);
}

ImageCopyResampled(
$this->workingImage,
$this->oldImage,
0,
0,
0,
0,
$this->newDimensions['newWidth'],
$this->newDimensions['newHeight'],
$this->currentDimensions['width'],
$this->currentDimensions['height']
);

$this->oldImage = $this->workingImage;
$this->newImage = $this->workingImage;
$this->currentDimensions['width'] = $this->newDimensions['newWidth'];
$this->currentDimensions['height'] = $this->newDimensions['newHeight'];
}
function resizePercent($percent = 0)
{
$this->percent = $percent;

$this->calcImageSizePercent($this->currentDimensions[ 'width'],$this->currentDimensions['height']);

if(function_exists("ImageCreateTrueColor"))
{
$this->workingImage = ImageCreateTrueColor($this->newDimensions['newWidth'],$this->newDimensions['newHeight']);
} else {
$this->workingImage = ImageCreate($this->newDimensions['newWidth'],$this->newDimensions['newHeight']);
}

ImageCopyResampled(
$this->workingImage,
$this->oldImage,
0,
0,
0,
0,
$this->newDimensions['newWidth'],
$this->newDimensions['newHeight'],
$this->currentDimensions['width'],
$this->currentDimensions['height']
);

$this->oldImage = $this->workingImage;
$this->newImage = $this->workingImage;
$this->currentDimensions['width'] = $this->newDimensions['newWidth'];
$this->currentDimensions['height'] = $this->newDimensions['newHeight'];
}
function cropFromCenter($cropSize)
{
if($cropSize > $this->currentDimensions['width']) $cropSize = $this->currentDimensions['width'];
if($cropSize > $this->currentDimensions['height']) $cropSize = $this->currentDimensions['height'];

$cropX = intval(($this->currentDimensions['width'] - $cropSize) / 2);
$cropY = intval(($this->currentDimensions['height'] - $cropSize) / 2);

if(function_exists("ImageCreateTrueColor"))
{
$this->workingImage = ImageCreateTrueColor($cropSize,$cropSize);
} else {
$this->workingImage = ImageCreate($cropSize,$cropSize);
}

imagecopyresampled(
$this->workingImage,
$this->oldImage,
0,
0,
$cropX,
$cropY,
$cropSize,
$cropSize,
$cropSize,
$cropSize
);

$this->oldImage = $this->workingImage;
$this->newImage = $this->workingImage;
$this->currentDimensions['width'] = $cropSize;
$this->currentDimensions['height'] = $cropSize;
}
function crop($startX,$startY,$width,$height)
{
//make sure the cropped area is not greater than the size of the image
if($width > $this->currentDimensions['width']) $width = $this->currentDimensions['width'];
if($height > $this->currentDimensions['height']) $height = $this->currentDimensions['height'];
//make sure not starting outside the image
if(($startX + $width) > $this->currentDimensions['width']) $startX = ($this->currentDimensions['width'] - $width);
if(($startY + $height) > $this->currentDimensions['height']) $startY = ($this->currentDimensions['height'] - $height);
if($startX < 0) $startX = 0;
if($startY < 0) $startY = 0;

if(function_exists("ImageCreateTrueColor"))
{
$this->workingImage = ImageCreateTrueColor($width,$height);
} else {
$this->workingImage = ImageCreate($width,$height);
}

imagecopyresampled(
$this->workingImage,
$this->oldImage,
0,
0,
$startX,
$startY,
$width,
$height,
$width,
$height
);

$this->oldImage = $this->workingImage;
$this->newImage = $this->workingImage;
$this->currentDimensions['width'] = $width;
$this->currentDimensions['height'] = $height;
}
function show($quality=100,$name = '')
{
switch($this->format)
{
case 'GIF':
if($name != '')
{
ImageGif($this->newImage,$name);
} else {
header('Content-type: image/gif');
ImageGif($this->newImage);
}
break;
case 'JPG':
if($name != '')
{
ImageJpeg($this->newImage,$name,$quality);
} else {
header('Content-type: image/jpeg');
ImageJpeg($this->newImage,'',$quality);
}
break;
case 'PNG':
if($name != '')
{
ImagePng($this->newImage,$name);
} else {
header('Content-type: image/png');
ImagePng($this->newImage);
}
break;
}
}
function save($name,$quality=100)
{
$this->show($quality,$name);
}
function gatherImageMeta()
{

if(function_exists("exif_read_data") && $this->format == 'JPG')
{
$imageData = exif_read_data($this->fileName);
if(isset($imageData['Make']))
$this->imageMeta['make'] = ucwords(strtolower($imageData['Make']));
if(isset($imageData['Model']))
$this->imageMeta['model'] = $imageData['Model'];
if(isset($imageData['COMPUTED']['ApertureFNumber']))
{
$this->imageMeta['aperture'] = $imageData['COMPUTED']['ApertureFNumber'];
$this->imageMeta['aperture'] = str_replace('/','',$this->imageMeta['aperture']);
}
if(isset($imageData['ExposureTime']))
{
$exposure = explode('/',$imageData['ExposureTime']);
$exposure = round($exposure[1]/$exposure[0],-1);
$this->imageMeta['exposure'] = '1/' . $exposure . ' second';
}
if(isset($imageData['Flash']))
{
if($imageData['Flash'] > 0)
{
$this->imageMeta['flash'] = 'Yes';
} else {
$this->imageMeta['flash'] = 'No';
}
}
if(isset($imageData['FocalLength']))
{
$focus = explode('/',$imageData['FocalLength']);
$this->imageMeta['focalLength'] = round($focus[0]/$focus[1],2) . ' mm';
}
if(isset($imageData['DateTime']))
{
$date = $imageData['DateTime'];
$date = explode(' ',$date);
$date = str_replace(':','-',$date[0]) . ' ' . $date[1];
$this->imageMeta['dateTaken'] = date('m/d/Y g:i A',strtotime($date));
}
}
}



}
?>


Thumb class'ı ile ayrıntılı bilgiye Linkleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. adresinden ulaşabilirsiniz.




class/general.class.php






<?php
Class General
{
var $db;

/**
* Enter description here...
*
* @param unknown_type $db
* @return General
*/
function General(&$db)
{
$this-> Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. b = &$db;
}


/**
* Sayfalama fonksiyonu...
*
* @param string $index
* @param string $page
* @param string $action
* @param string $static
* @param int $p
* @param int $num
* @param int $limit
* @return string
*/
function Pagination($index,$page,$action,$static,$p,$num,$limit)
{
$nav = "";
if($num > $limit)
{
$p = (int) $p;
$total_page = ceil($num / $limit);
$tpl_on = "<li><a href=\"".$index."?page=".$page."&action=".$action.$static."&p={s}\">".$p."</a></li>";
$tpl_off = " <li><a href=\"".$index."?page=".$page."&action=".$action.$static."&p={s}\">{t}</a></li> ";

$pages = array ($p-3,$p-2,$p-1,$p,$p+1,$p+2,$p+3);
$pages = array_unique($pages);
//
$nav .= "<div class=\"pagination\"><ul>";

if($total_page > 1 && $p != 1)
$nav .= str_replace("{t}", "İlk", str_replace("{s}", 1, $tpl_off));

if($p > 1)
$nav .= str_replace("{t}", "<", str_replace("{s}", ($p-1), $tpl_off));

while(list($key,$val) = each($pages))
{
if($val >= 1 && $val <= $total_page)
{
if($p == $val)
$nav .= str_replace(array("{s}", "{t}"), $val, $tpl_on);
else
$nav .= str_replace(array("{s}", "{t}"), $val, $tpl_off);
}
}

if($p < $total_page)
$nav .= str_replace("{t}", ">", str_replace("{s}", ($p+1), $tpl_off));

if($total_page > 1 && $p != $total_page)
$nav .= str_replace("{t}", "Son", str_replace("{s}", $total_page, $tpl_off));

$nav .= "</ul></div>";
}
return $nav;
}

/**
* Cache yapilan resimler için Md5 isim olusturur...
*
* @param string $param
* @param int $height
* @param int $width
* @return string
*/
function CacheHash($param,$height="",$width="")
{
$hash = md5($param.$height.$width);

return $hash;
}

}
?>



Buraya kadar yazdığımız class ve fonksiyonlar sistemin ana işleyişi ile iligli kısımdı. Şimdi haber sistemini yapmaya başlayabiliriz.

alıntı


Web Sayfasını Ziyeret Edin Tüm Mesajlarını Bul
Alıntı Yaparak Cevapla
02-06-2008, 02:31 PM
Mesaj: #2
Cvp: 3 KATMANLI MİMARİ VE PHP
valla bukadar kod bana zarar sagolsunlar okulda basic kodlarını ezberliyim derken kafayı tırltıyordum Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. en sonunda sınavda 4program yaptırdı hoca bi işe yaradını gördüm ama şimdi hiçbirini hatırlamıyom Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz. Resimleri görüntüleyebilmeniz için üye girişi yapmanız gerekmektedir. Üye değilseniz buraya tıklayıp üye olabilirsiniz.
Tüm Mesajlarını Bul
Alıntı Yaparak Cevapla
« Önceki | Sonraki »
Cevapla 


Forum Atla:

İletişimGönülçelen.NetYukarıya dönİçeriğe DönHafifleştirilmiş SürümRSS Beslemesi