PHP Yıllık - Aylık Kategorilendirme

Merhaba, bu yazımda web sitenize ekleyebileceğiniz yıllık ve aylık kategorilendirme sistemi yapacağız. Kullanım açısından gerek sizin gerek site ziyaretçilerinin faydalanacağı sistemle, içeriklerinizi düzenli bir şekilde kategorize edebilirisiniz.

Kullanımı öncelikle yıllık parametre olacak şekilde listelenip daha sonra yıllara göre aylık listeleme yapıyor. Bu sayede seçilen yılın aylara göre alt bir kategorisi oluyor. 

Sistem çalışması tıklanan ayın ve bağlı olduğu yılın GET parametresiyle içeriklerinizi listeliyor. Listeleme işlemi için veritabanı sorgusu yaparak kayıtlı içerikleri listeler.

Gelelim yapımına;

Veritabanı sql dosyası;

Veritabani icerik_tarihi adlı sütunumuz datetime seçiyoruz ve varsayılanı CURRENT_TIMESTAMP yaporuz.

Veritabanı baglan.php bağlantısı;

Listeleme işlemlerinde kullanacağımız 4 farklı fonksiyon bulunmakta,

1.  function tarihlist($ay) fonksiyona gönderilen rakamları Türkçe aylara çeviren fonksiyon.

2. function tarihlink($ay) gönderilen rakamları Türkçe karakterlerden temizleyip linke çeviren.

3. function linktarih($ay) gönderilen link değerini rakamlara çeviren.

4. function arsiv($yil) gönderilen yılarda bulunan içeriklerin aylarını listeleyen sorgu.

Burada dikkat etmeniz gereken husus MONTH(icerik_tarih) ve YEAR(icerik_tarih) kısımlarıdır. Sorguda MONTH ile ifade edilen zaman fonksiyonu sütundaki datatime değerinin sadece aylarını çekmemizi sağlıyor. Bir diğeri olan WHERE koşulunda YEAR(icerik_tarih) kısmı ise sadece yıl olarak sormamızı sağlıyor. Böylelikle 2019 yılına ait içeriklerin eklendiği ayları listeleyecektir. GROUP BY diyerek aynı ayları tekil hale getiriyoruz.

 

Fonksiyonlar;

Fonksiyonları diğer sorgulardan önce yerleştirmek gerekiyor bu sayede göreve çağırıldığında önceden tanımlanmış olmasını sağlıyoruz.

Kategori Listeleme;

Kategorileri listeleme sorgumuz özel kılan iki kısım bulmakta 1. SELECT işleminde YEAR(icerik_tarih) adlı fonksiyonu kullanarak sadece yılları sorguluyoruz. 2.  listeleme yaparken döngüde oluşan yılları arsiv($ay) fonksiyonu ile alt kategori oluşturuyoruz.

 

İçerik listeleme sorgumuzda eğer get parametreleri varsa WHERE YEAR(icerik_tarih)=? AND MONTH(icerik_tarih)=? Olarak get ile gelen değerleri listeliyoruz. Burada MONTH(icerik_tarih) koşuluna uygun sonuçlar verebilmesi 3. function linktarih($ay) gönderilen link değerini rakamlara çeviriyoruz. Ve son olarak eşleşen içerikleri listeliyoruz.

Son olarak. htaccess dosyasına link uzantısının anlaşılır bir görünüme çevirmesini isterseniz aşağıdaki yönlendirme kodunu yazın;

RewriteEngine on

RewriteRule ^([0-9a-zA-Z-_]+)$   icerik.php?seo=$1 [L,QSA]

RewriteRule ^([0-9]+)/([a-zA-Z-_]+)$   index.php?yil=$1&ay=$2 [L,QSA]

 

Dosya Linki: İndir

Bu konu işinize yaradıysa lütfen oylama yaparak, beğenerek ya da yorum yaparak etkileşim kurun. Teşekkür ederim.