Merhaba arkadaşlar 2-3 yıl önce yazmış olduğum bir makaleydi daha önce hiç yayınlamamıştım bugün blogumda yayınladım, zamanında çok kişi soruyordu, ben de paylaşmak istedim.

Not : Açıklamalar kodlar arasında yer almaktadır.

lk Öncelikle Mysql’de Bir Veritabanı Oluşturalım
Bu Veri Tabanı’nın Adı ‘ makaleler ‘ olsun

Dreamweaver ,Notepad++,PHPDesigner veya Başka Bir Web Editor Programı Açalım,Bu Program Bize PHP Kodları Yazabilmemiz İçin Yardımcı Olacak

Adım 1 : ayar.php adında bir dosya oluşturuyoruz ve içerisine Şu Kodları Giriyoruz;


$vthost=”localhost”; // Mysql Hostumuz,Local'de Çalışıyorsak Burası localhost olacak
$vtkullanici=”root”; //Localhost'ta Çalıştığımız İçin Localhost Kullanıcı Adı root'tur.
$vtsifre=”dfffjhamp”; //Localhostta Çalıştığımız İçin Burasının Boş Olması Lazım Ama Ben Localime ŞifreAtadım
$vtadi=”makaleler”; //Az Önce Oluşturmuş Olduğumuz Veritabanı

$baglan=mysql_connect($vthost,$vttkullanici,$vtsifre);
if(! $baglan)die(“Veritabanı Bağlantısı Sağlanılamadı”);

mysql_connect_db($vtadi,$baglan)or die(“Mysql Bağlantısı Sağlanılamadı”);


?>


KODLARIN GENEL AÇIKLAMASI

mysql_connect(); //3 Arguman Alır,Bunlar Veritabanı Sunucusu,Veritabanı Kullanıcı Adı,Veritabani Şifresi,bu fonksiyon Mysql’e Bağlanmamızı Sağlar

mysql_connect_db(); // 2 Arguman Alır,Bunlar Veritabanına Bağlanmak için $baglan değişkeninden aldığımız veriler,Diğeri ise Oluşturmuş Olduğumuz ‘makaleler’adlı Mysql Veritabanına Ulaşmamızı Sağlar

Ayar.php Sayfasını Sunucudan Çağırdığınızda Beyaz Bir Sayfa ile Karşılaşıyorsanız,Bilinki Veritabanına Bağlantı Sağlanmıştır.Lakin “ Veritabanı Bağlantısı Sağlanılamadı “ Diye Bir Hata Alırsanız Bilinki Veritabanı’na Bağlantı Sağlanılamamıştır,Bu Sorunu Çözebilmek İçin $baglan değişkeninizi,yada $bağlan değişkeni içerisine yazmış olduğunuz değişkenleri gözden geçirin.
Eğer “ Mysql Bağlantısı Sağlanılamadı “ Diye Bir Hata Alırsanız Bilinki Ya Veritabanı Adını Yanlış Yazdınız,Yada Böyle bir Veritabanı Yok !

Adım 2 : Veritabanımızı Oluşturduk,Sırada Bu Veritabanının içinde Tablo Olusturmaya Geldi
‘ makaleler ‘ adlı veritabanımıza girdikten sonra ‘ kategori ‘ diye bir tablo olusturuyoruz,Alan Sayısı 2 Olsun
İlk Alana ‘ id ‘ adını veriyoruz Türü ‘ INT ‘ Olsun ‘ Uzunluk ve Değer Alanı ‘ , ‘ 11 ‘ Olsun,Eksta Bölümü ‘ auto_increment ‘ olsun ve Birincil Alanı ise ‘ Birincil ‘ Seçili Olsun.
2′ci Alana ‘ katadi ‘ adını eriyoruz,Türü ‘ Varchar ‘ Olsun,Uzunluk ve Değer Alanı ise ‘ 255 ‘ Olsun

Yukarıda Anlattığım işlemleri Yaptıysanız Şimdi Kaydet Butonuna Tıklayalım
Eğer Yapmadıysanız Ben Sizlere Direk SQL Kodunu Veriyorum ;

CREATE TABLE `kategori` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`katadi` VARCHAR( 225 ) NOT NULL
) ENGINE = MYISAM ;


Şimdi Kategori Adlı Tablomuzuda Olusturduktan Sonra

Adım 3 : index.php adında Bir Dosya Olusturuyoruz,Bu Dosyanın içine ayar.php dosyamızı include ediyoruz.

include(“ayar.php”); //Yani ayar.php adlı dosyamızı index.php dosyasına gömyüoruz
?>


Yukarıdaki Gibi ayar.php Dosyamızı index.php Dosyamıza include ettikten sonra,index.php içinde Bir Kategori Ekleme Formu Oluşturuyoruz

include(“ayar.php”);

Function KategoriEkle(){
echo “
”;
echo “Kategori Adı : ”;
echo “
”;
}
?>


Ben Bu Formumu Her Yerde Çağırabilmek için Bir Fonksiyon içinde yazdım,Fonksiyona ise ‘ KategoriEkle ‘ Adını verdim,İstediğim Yerlerde KategoriEkle(); Diye Çağırabilirim.
Oluşturduğumuz Formu ‘ KategoriKaydet ‘ adlı post’a gidiyor,Ben Bu Sayfayıda Bir Fonksiyon İçinde Yazacağım.

include(“ayar.php”);

Function KategoriEkle(){
echo “
”;
echo “Kategori Adı : ”;
echo “
”;
}

Function KategoriKaydet(){
//İlk Öncelikle Formdan Gelen Bilgileri Çekiyoruz
$kategoriadi=$_POST[“kategoriadi”];
//Şimdi ise Formdan Gelen $kategori adlı değişkeni Kontrol Ediyoruz,Boş mu Kontrolü
if($kategoriadi==””){
echo “Lütfen Kategori Adı Giriniz”;//Boş ise Bize Boyle Bir Hata Versin
exit(); //Kontrolden Çıkış Yapıyoruz
}else{
//Formdan Boş Değer Gelmesse,Formdan Gelen Bilgileri Veritabanına Yazdıracağız
$ekle=mysql_query(“insert into kategori (katadi) values ('$kategori')”);
//Şimdi ise $ekle değişkenini kontrol ettirelim,Eğer Veritabanına eklenmişse,Eklendi,Eklenmemiş ise Eklenmedi Diye Bir Hata Versin
if($ekle){
echo “$kategoriadi Eklendi”;

}else{
echo “$kategoriadi Eklenemedi”;
}
}

?>


Adım 4 : ‘ KategoriEkle ‘ ve ‘ KategoriKaydet ‘ Fonksiyonlarını Nasıl Çağıracağımızı Gösterelim
Bunun için ilk öncelikle $Git=$_GET[“Git”]; Adında Bir String Değişken Oluşturuyoruz,ve Bu Değişkeni Switch Anahtar Döngüsü ile kontrol ettiriyoruz,Bu Bölümde if ‘ i Switch’in Alternatifi olarak düşünebilirsiniz.Switch $Git adlı String Değişkenimizi Kontrol Edecek;

include(“ayar.php”);

Function KategoriEkle(){
echo “
”;
echo “Kategori Adı : ”;
echo “
”;
}

Function KategoriKaydet(){
//İlk Öncelikle Formdan Gelen Bilgileri Çekiyoruz
$kategoriadi=$_POST[“kategoriadi”];
//Şimdi ise Formdan Gelen $kategori adlı değişkeni Kontrol Ediyoruz,Boş mu Kontrolü
if($kategoriadi==””){
echo “Lütfen Kategori Adı Giriniz”;
exit(); //Kontrolden Çıkış Yapıyoruz
}else{
//Formdan Boş Değer Gelmesse,Formdan Gelen Bilgileri Veritabanına Yazdıracağız
$ekle=mysql_query(“insert into kategori (katadi) values ('$kategori')”);
//Şimdi ise $ekle değişkenini kontrol ettirelim,Eğer Veritabanına eklenmişse,Eklendi,Eklenmemiş ise Eklenmedi Diye Bir Hata Versin
if($ekle){
echo “$kategoriadi Eklendi”;

}else{
echo “$kategoriadi Eklenemedi”;
}
}
Function Anasayfa(){
echo “Burası Anasayfa”;
}
Switch($Git){
Default: //Bu Default if'in else kısmı gibi düşünebilirsiniz,bizim belirlediğimiz dışındakiler gelirse buradaki fonksiyon işlev görecektir.Bu Yüzden Yukarıda Anasayfa Diye Bir Fonksiyon Olusturdum;
Anasayfa(); // Eğer Git Değişkeni Boş veya Olmayan Bir Fonksiyona Eşitse Direk Anasayfa Fonksiyonu İşleve Girecektir
break; // Fonksiyonu Bul ve Durdur

case “KategoriEkle”: // $Git Değişkeni Eşitse KategoriEkle /index.php?Git=KategoriEkle Sayfasına Git
KategoriEkle(); // Bize KategoriEkle Fonksiyonunu Çağırsın
break;

case “KategoriKaydet”:
KategoriKaydet();
break;
}

?>


Eğer Kodlarınız Yukarıdaki Gibiyse,Tarayıcınızın Adres Satırına ‘ index.php?Git=KategoriEkle ‘ yazdığınızda Karşınıza ‘ KategoriEkle ‘ Sayfası Gelecektir.
Buraya Kadar Herşey Tamam ve Diğer Bir Adımımız Olan makale sayfası yapmak için gerekli olan bilgiler vermeye geldi

Adım 4 : ‘ makaleler ‘ adlı Veritabanımızda Şimdi ise ‘ makale ‘ adında bir tablo Olusturuyoruz,Bu Tablonun 6 Alanı Olacak Şekilde.
1. Alana ‘ id ‘ Adını Veriyoruz,Türü ‘ INT ‘,Uzunluk ve Değer Alanı ‘ 11 ‘,Ekstra Alanı ‘ auto_increment ‘,Birincil alanı ise ‘ Birincil Değer ‘ Olacak Şekilde
2.Alana ‘ baslik ‘ Adını Veriyoruz,Türü ‘ Varchar ,’ Uzunluk ve Değer Alanı ‘ 255 ‘
3.Alana ‘ makale_metni ‘ Adını Veriyoruz,Türü ‘ TEXT ‘,Uzunluk ve Değer Alanı ise Boş Olacak Şekilde
4.Alana ‘ tarih ‘ Adını Veriyoruz,Türü ‘ Varchar ‘,Uzunluk ve Değer Alanı ‘ 255 ‘
5.Alana ‘ hit ‘ Adını Veriyoruz,Türü ‘ INT ‘,Uzunluk ve Değer Alanı ‘ 11 ‘
6.Alana ‘ katid ‘ Adını Veriyoruz,Türü’ INT ‘ ,Uzunluk ve Değer Alanı ‘ 11 ‘

Kaydet Butonuna Tıklayıp Tablomuzu Olusturuyoruz.
Eğer Siz Olusturmadıysanız,Sizlere SQL Kodunu Veriyorum ;

CREATE TABLE `makale` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`baslik` VARCHAR( 225 ) NOT NULL ,
`makale_metni` TEXT NOT NULL ,
`tarih` VARCHAR( 225 ) NOT NULL ,
`hit` INT( 11 ) NOT NULL ,
`katid` INT( 11 ) NOT NULL
) ENGINE = MYISAM ;


Adım 5 : Şimdi ise index.php Dosyamızın İçinde MakaleEkle Adında Bir Fonksiyon Yazıyoruz,Bu Fonksiyonun İçerisinde MakaleEkle Formu Olacak

include(“ayar.php”);
Function MakaleEkle(){
echo "
"; //Sayfamızı MakaleKaydet Adlı Fonksiyona Post Ediyoruz
echo "";
echo ""; //input alanındaki name değerine baslik adini veriyoruz
echo “”;
echo "";
echo “”;
echo "
Başlık:
Kategori:
Makale:
";
echo "
";
}
Switch($Git){
Default:
Anasayfa();
break;

case “KategoriEkle”:
KategoriEkle();
break;

case “KategoriKaydet”:
KategoriKaydet();
break;

case “MakaleEkle”:
MakaleEkle();
break;
}
?>



Peki Bunlar Veritbanımızdaki kategori tablosunda ekli olan veriler,Nasıl Buraya Geldi mi Diyorsunuz ?,Hemen Anlatalım

$katcek=mysql_query(“SELECT * FROM kategori ORDER BY id DESC”); //İlk Öncelikle kategori tablomuzdaki verileri çekip listeletiyoruz
While($yaz=mysql_fetch_array($katcek)){
//While ile Bunları Bir Döngüye Sokuyoruz,Örneğin kategori tablosunda 1′ veya 1′den fazla alan varsa hepsini Combobox’ta Listeletecek
$id=$yaz[“id”];
$katadi=$yaz[“katadi”];
echo “”; //$katadi Yazan Yerde kategori adlı Tablomuzdak Çekmiş Olduğumuz Verileri Listeletiyoruz
}
Unutmadan,MakaleEkle Sayfamızı Switch Kontrolü İçine Ekliyoruz; case “MakaleEkle”: MakaleEkle(); break; Diye.

Bu Kadar Basit,MakaleEkle Sayfamızı MakaleKaydet Adlı Fonksiyona Post Etmişik,Şimdi MakaleKaydet Adında Bir Fonksiyon Olusturuyoruz ve Bunuda Switch Kontrol Döngüsünün İçerisine Ekliyoruz

Eklememizin Sebebi index.php Sayfası üzerinde çağırabilmemiz için !

include(“ayar.php”);

Function MakaleKaydet(){
//İlk Öncelikle Formdan Gelen Bilgileri Çekiyoruz
$baslik=$_POST[“baslik”];
$makalemetni=$_POST[“makalemetni”];
$kategori=$_POST[“kategori”];
$tarih=date(“d.m.y H:i:s”);
//Şimdi if kontrolüne sokalımieğer baslik ve makalemetni boş ise veritabanına yazdırmasın ve bize hata versin
if($baslik==”” or $makalemetni==””){
echo “Lütfen Boş Alan Bırakmayınız”;
}else{
//Eğer $baslik ve $makalemetni boş değil ise verilerimize veritabanına kaydettirelim
$ekle=mysql_query(“insert into makale(baslik,makale_metni,tarih,katid) values ('$baslik','$makalemetni','$tarih','$kategori')”);
//$ekle değişkenini kontrol ettiriyoruz eğer veritabanına eklenmiş ise bize Makaleniz eklendi desin,eklenmemiş ise hata versin
}
}
Switch($Git){
Default:
Anasayfa();
break;

case “MakaleKaydet”:
MakaleKaydet();
break;
}
?>


MakaleKaydet Fonksiyonumuzuda Yazdıktan Sonra,Sıra Eklediğimiz Makaleleri Çekmeye Geldi,Şimdi index.php içindeki Anasayfa Fonksiyonumuzun içine Eklediğimiz Makaleleri Çekeceğiz

Anasayfa Fonksiyonu içerisindeki kod düzeneği şöyle olmalıdır.

index.php

include(“ayar.php”);
Function Anasayfa(){
$sql=mysql_query(“SELECT * FROM makale ORDER BY id DESC LIMIT 0,10”); //Veritabanımızdaki makale tablosundaki son 10 satırı çekecek
While($yaz=mysql_fetch_array($sql)){
//makale tablosundan çektiğimiz son 10 veriyi While döngüsü içinde alt alta sıralıyoruz
$id=$yaz[“id”];
$baslik=$yaz[“id”];
$makalemetni=$yaz[“makale_metni”];
$tarih=$yaz[“tarih”];
$hit=$yaz[“hit”]; //Şu an Hit Alanını Yapmadık Ama İleride Bu alanıda Göreceksiniz
$katcek=mysql_fetch_array(mysql_query(“SELECT * FROM kategori WHERE id='$katid'”)); //kategori tablomuzdaki kategorileri çekiyoruz,eğer makale Bilim ve Teknoloji Kategorisine Eklenmişse,Sayfamzda Bilim ve Teknoloji Yazacak,Eğer Diğer Kategorilere Eklenmişse diğer Kategori Yazacak
$katadi=$katcek[“katadi”];
//Şimdi ise Bunları Sayfamızda Yazdıralım,Unutmayın Son 10 Makale Anasayfamızda Yayınlanacak

echo “Başlık : $baslik
”;
echo “Makale : $makalemetni
”;
echo “Bu Makale $hit kez Okundu
”;
echo “Eklenme Tarihi : $tarih
”;
echo “Makale Kategorisi >$katadi”; //$katadi'na Link Veriyoruz,Tıkladığımız Kategoriye Gitmesi için

}
}
?>

Şimdi Bu İşlemide Bitirdikten Sonra Sırada Kategoriler Sayfamızı Oluşurmaya Geldi.Bu Kategoriler Sayfamızda Veritabanımızdaki Kategorileri Çekip O Kategorilere Ait Makaleleri Listeleteceğiz.



index.php

include(“ayar.php”);

Function Kategoriicerik(){
$id=$_GET[“id”];
$katcek=mysql_query(“SELECT * FROM makale Where $katid='$id'”); //Eğer Kategoriler Fonksiyonundan Gelen Git Değeri Eşitse makale tablomuzdaki katid'ye Aşağıdaki işlemleri yap
While($yaz=mysql_fetch_array($katcek)){
$id=$yaz[“id”];
$baslik=$yaz[“baslik”];
echo “
$baslik”;
}
}

Switch($Git){
Default:
Anasayfa();
break;

case “Kategoriicerik”:
Kategoriicerik();
break;
}
?>


Not : Şimdi farkettim, vbulettin sistemi yazdığım ,php tagı içerisine aldığım kodlara müdahele etmiş,ekleme yapmış.#& işaretlerini kodlamanızda kullanmayınız görmüş olduğunuz kodlar sistem tarafından eklenmiştir.
Kaynak : > PHP ile Kategorileme Sistemi