PHP İle Kategorilendirme ve Makale Sitesi Uygulaması

Merhaba arkadaşlar,
Bu yazımda sizlere en çok merak edilen ve her yerde sorulan PHP ile kategorilendirme işlemini çok ayrıntılı bir şekilde anlamaya çalışacağım.

Aslında PHP ile kategori işlemi tamamen biraz düşünme ile ve birkaç veritabanı sorgusu ile yapılan çok basit bir işlemdir. Şimdi başlayalım.

Evet arkadaşlar şu ana kadar motive oldunuz umarım.
1)İlk olarak bir tane veritabanımız olacak.
http://localhost/phpmyadmin
adresinden veya sizin adresiniz ne ise oradan bu işlemleri yapabilirsiniz.
Veritabanı Adımız : kategori_vt
Aşağıda veritabanımızı oluşturdum.

Kategori Veri Tabanı kategori_vt

Kategori Veri Tabanı kategori_vt


2)kategori_vt adlı veritabanımızda ise benim kullanacağım 3 adet tablo oluşturmam gerekiyor.
Bunların adları;
[ad#orta]

Makale_cesit
Makale_baslik
Makale_icerik

Makale_cesit tablosunda 2 alan bulunmaktadır . Birisi id’yi diğeri ise makale çeşitlerini tutmaktadır.
Tablomuzun tüm özellikleri resimde de gösterilmektedir. Sizde buna göre tablonuzu oluşturunuz.

makale_cesit tablosu

makale_cesit tablosu


Tabloma örnek olması açısından 4 tane veri girdim. Siz de istediğiniz şekilde verilerinizi girebilirsiniz.
makale_cesit tablosu içindekiler

makale_cesit tablosu içindekiler

Burada bizim için önemli olan id’lerdir. Biz işlemlerimizi id’ye göre yapacağız. Id’ye göre cesit’lerin neler olduğunu öğreneceğiz.

Makale_baslik tablomuzu oluşturalım. Burada 3 alan bulunmaktadır ve bunlar;
id_baslik : Makale Başlıklarının id’sini tutan integer değerleri tutar.
İd_cesit: Bu da hangi makaleye bağlı oldugunu yani makale_cesit tablosunda PHP ‘nin id’si 1 olduğundan buraya PHP altında bir başlık açmak istiyorsak id_cesit içine 1 yazmamız ve baslik kısmınada başlığımızı yazmalıyız.
Baslik: Makale başlığını buraya yazacağız.
Tablomuz yapısı aşağıdaki gibidir.

makale_baslik tablosu yapısı

makale_baslik tablosu yapısı

Örnek olması açısından birkaç başlık girdim.

makale_baslik içindekiler

makale_baslik içindekiler

Makale_icerik tablomuzu oluşturalım. Burada da 3 alan bulunmaktadır ve bunlar;
İd_icerik: İçeriklerin id’sini tutmaktadır.Bu numaraya göre ilgili makalenin içeriğini çekeceğiz.
İd_baslik: İçeriğin hangi başlığa kayıtlı olduğunu belirtir. Örneğin CSS-e giriş başlığının içeriğini yazıyorsak id_baslik kısmına makale_baslik tablosundaki id_baslik alanında olan 2 değerini bu tablomuzdaki id_baslik alanına girmeliyiz. Yani 2 değerini buraya girersek o başlığa kayıtlı içerik olacaktır.
İcerik: İlgili içeriklerimiz buraya yazılacaktır. TEXT tipindedir .

makale_icerik tablosu yapısı

makale_icerik tablosu yapısı

Örnek olarak birkaç içerik girdim.

makale_icerik içindekiler

makale_icerik içindekiler

Evet arkadaşlar veritabanı ve tablomuzla ilgili olan işlemleri yaptık ve bilgilerimizi girdik isek sıra PHP kodlama kısmına geldi. Şimdi kolay kısımı kaldı diyebiliriz.

Şimdi ilk olarak kaç adet kategori olursa olsun bunlar sayfamızda göstermemiz gerekecek. Yani kategori çeşitlerini çekeceğiz ve ekran linkli olara yazdıracağız. Bunun için ilk olarak veritabanımızla bağlantıyı sağlamamız gerekiyor.Sayfamızın kodları aşağıdadır. Sayfayı baglan.php olarak kaydetmelisiniz.

Baglan.php

<?php
$dbhost		="localhost";//Host adı
$dbuser		="root";//Kullanıcı adı
$dbpass		="123";//benim şifrem 123 olduğu için 123 yazıyorum
$dbadi		="kategori_vt";//Burada phpmyadmin kısmından oluşturulan veri tabanının adı olacak
	$baglanti=@mysql_connect($dbhost,$dbuser,$dbpass) or die("Veri tabanı ile bağlantı sağlanamıyor!");
	mysql_select_db($dbadi,$baglanti) or die("Veri tabanına bağlanılamadı!");
	mysql_query("SET NAMES 'latin5'");//Türkçe karakterlerde sorun yaşamamak için bu kodu ekledim.
?>

Yukarıda veritabanımıza bağlandık ve bu sayfamızı her sayfamızda kullanacağız.Eğer bağlantı sağlanmış ise web tarayıcımızda boş bir ekran gözükecektir. Aksi takdirdebağlanadı idye hata verir.

2. olarak makale çeşitlerini ekrana yazdırmamız gerekiyor.Sayfamızı Makale_cesitleri.php olarakkaydedelim.

Makale_cesitleri.php

<?php
include('baglan.php');//Veritabanı ile bağlantı dosyamızı çekiyoruz.
$sorgu = mysql_query("SELECT * FROM makale_cesit ORDER BY cesit");//Makale çeşitlerini alfabeye göre çekiyoruz.
while($cek = mysql_fetch_array($sorgu))//Döngü ile tabloda veri bitinceye kadar çek
	{
        $id = $cek['id'];
        $cesit= $cek['cesit'];
	echo "<a href=\"makale_basliklari.php?id=$id\">$cesit</a>"."<br>";//Ekrana yazdır.
	}
?>

Kodu çalıştırınca karşımıza gelecek görüntü makalelerin çeşitleri olacaktır.

makale çeşitleri

makale çeşitleri

3. olarak ise konularla ilgili hangi makaleler varsa bu makalelerin başlıklarını göstereceğimiz sayfamız olan makale_basliklari.php sayfamızı oluşturalım.

makale_basliklari.php

<?php
include('baglan.php');//Veritabanı ile bağlantı dosyamızı çekiyoruz.
$id = $_GET['id'];//İlgili makalenin id’si ona göre başlıkları çekecek
$sorgu = mysql_query("SELECT * FROM makale_baslik WHERE id_cesit='$id' ORDER BY baslik");//Başlıklar alfabeye göre sıralı şekilde gelecek..
while($row = mysql_fetch_array($sorgu)){//Döngümüz 
        $id_baslik = $row['id_baslik'];
        $baslik     = $row['baslik'];
 
echo "<a href=\"makale_icerik.php?id_baslik=$id_baslik\">$baslik</a>"."<br>";// Ekrana yazdıran kısım
}
?>

Kodu çalıştırınca karşımıza gelecek görüntü hangi makale çeşidi tıklandı ise onunla ilgili konular ekrana gelmelidir. Ben PHP’yi tıkladım ve PHP ile ilgili yazılmış olan makaleler kaşımda…

php kategorilendirme

php kategorilendirme

4. olarak ise hangi makalenin başlığına tıklandı ise o makalenin içeriğini ekranda göstereceğiz.Onun için makale_icerik.php sayfamızı kodlayalım.

makale_icerik.php

<?php
$id_baslik=$_GET["id_baslik"];//İlgili başlığın id_baslik’ini alarak ona göre içeriği çekecek
include('baglan.php');//Veritabanı ile bağlantı dosyamızı çekiyoruz.
$sorgu = mysql_query("SELECT * FROM makale_icerik WHERE id_baslik='$id_baslik' ");// Hangi makalenin id_baslik'i gelmiş ise ona göre sorgu yapıor ve ilgili içeriği çekiyor.
		$cek = mysql_fetch_array($sorgu);
        $icerik     = $cek['icerik'];
echo $icerik;//Ekrana yazdırma
 
?>

Kodu çalıştırınca karşımıza gelecek görüntü hangi başlık tıklandı ise onun içeriği olacaktır.

makale içerik

makale içerik

Gördüğünüz gibi tüm kodlarımız sağlıklı bir şekilde çalıştır ve kategorilendirme işlemimiz burada sona erdi. İnş. Sizlerin işine yarayan bir makale olmuştur.

Herkese Başarılar…

Hasan Huseyin İŞLER hakkında

Lise yıllarında programlama ile tanışan ve Q-Basic, Pascal, C başlangıç seviyesinde öğrenenir. Üniversite de TEF-BSÖ okurken diğer dillerin yanı sıra PHP'de kendini geliştirmeye devam ederek bunların yanında CSS, JS ve Wordpress sistemiyle ilgilenir. www.phpsorunu.com'un da yöneticisi ve yazarlarındandır.
Bu yazı Php kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

PHP İle Kategorilendirme ve Makale Sitesi Uygulaması için 15 cevap

  1. Mehmet der ki:

    Teşekkürler, umarım sitenizde sürekli güncel derslere yer verirsiniz.
    Tabi ki en faydalı olan video ders ancak video dersi pratiğe dökmek de oldukça önemli.

  2. Elimizden geldiği kadarıyla bilgilerimizi sade bir dille yeni arkadaşlara paylaşmayı amaçlıyorum. Her zaman için güncel derslere yer vermeye de özen gösteriyorum. Hayırlı kullanımlar…

  3. yasemin der ki:

    Güvenlik :

    if(is_numeric($_GET["id_baslik"])){$id_baslik=$_GET["id_baslik"];}

    ve

    $sorgu = mysql_query(sprintf("SELECT * FROM makale_icerik WHERE id_baslik='%d' ", $id_baslik));

    😉

  4. Yasemin arkdaşımızın yazmış olduğu kod ile scriptlerimizi daha güvenli hale getirebiliriz. Arkadaşımızın yaptığını açıklamak gerekirse…Tabiiki izniyle…

    is_numeric() fonksiyonuyla GET ile aldığımız verinin numara olduğunu kontrol ediyoruz… eğer numara ise $id_baslik değişkenine aktarıyoruz.

    SQL sorgu cümlesinde de sprintf() fonksiyonunda kullanılan %d ile de işaretli bir tam sayı belirttiğini gösteriyoruz.

    Gerçekten Yasemin arkadaşımıza teşekkür ediyoruz. Sistemimizde bu noktalar büyük güvenlik açıklarıdır. Bunun üzerine de en yakın zaman da PHP'de güvenlik konulu bir çok makale yazmamızın gerekli olduğunu anlamış olduk… Teşekkürler..

  5. yasemin der ki:

    Ben teşekkür ederim güzel yazılarınız için…

  6. ilahiler der ki:

    ben ikinizede teşekkür ederim 🙂 güzel bilgiler gerçekten bazılarını bilsekte php de sanırım gidiş yolları farklılık gösterebiliyor. bu maksatla herkesten bir fikir alabiliyorsunuz.

  7. murat der ki:

    Çok Güzel Anlatmişinizda bunlari sadece veri tabanın sql bölunmunde yapabiliyoruz demi , Bide bu eklemeleri php ile anlatsaniz Daha guzel Bence

  8. Mümin der ki:

    Merhaba Hocam Çok Güzel Anlatmışınız.Harika.Fakat Makale ekleme ve kategori ekleme gibi bişeyde gösterebilirmsniz?

    Teşekkürler.

    • Diğer makaleleride incelerseniz Veritabanına kayıt ekleme vb. türde makalelerde bunlarla ilgili php kodları yer almaktadır. Biraz bakarsanız kendinize uygun bir kod geliştirebilirsiniz.

  9. mehmet ali yıldız der ki:

    teşekkürler gerçekten aradığım sorunun en net ve basit cevabıydı. kodlar net ve anlaşılır tekrardan sağolun

  10. Engin der ki:

    Herşey için teşekkürler ancak, birde makalelere yorum ekleme ve sayfalama sistemini yazarsanız sevinirim.

    Lafı uzattım ama birşey sormak istiyorum. Bir butona tıklayınca diğer sayfaya yönlenmeden işlemimizi gerçekleştirecek jquery kodlarını örneklerle sitenizde yayınlarsanız teşekkürler. Bu arada siteniz kaynak olarak çok iyi.

  11. Öncelikle bilgilerimizi vaktimiz oldukça paylaşmaya çalışıyoruz fakat; ben birde buna yorum eklemeyi koyarsam hazır bir makale sitesi olmus olacak… Onu eğer ki zamanın olursa ya bir video olarak koyabilirim. Şu an benim size tavsiyem bir yorum tablosu yapın ve o tabloya hangi makalenin nosu ile kayıt ettiyseniz makalenin nosunu o oyrum sayfasına kaydedin ve makaleyi çekerken de yorumlar sayfasında o makale nosuna ait kayıtlı yorumları çekin bu şekilde bir ipucu verebilirim şimdilik. Diğer ekle siller zaten aynı…@Engin

  12. yusuf der ki:

    Makaleden hic bise anlamadim cunku php kodlama hakkinda alt yapi sahibi deilim.bundan dolayi anlamadim.Niye yorum yapiom anlayan arkadaslar oldugunu gordugum ve bu konuda emek sarfeden arkadasa bende anlayanlar adina tsk ederim verdigi emekten dolayi

    saygi ve sevgilerle

  13. Semih der ki:

    Kodlar gözükmüyor.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir