Şimdi bu konumuzda ben size,Web sayfalarında modul olarak kullanılan kategorilerin sınırsız yazılım biçimini anlatmak istiyorum.Aslında olay şu,benim web sayfamda da gözünüze çarpmıştır.Sağ tarafta diğer kategoriler diye bir bölüm var,işte burada her kategori sınırsız kategori mantığınla kodlanmıştır(yani tarafımca tabi)Örneğin admin panelde haber ekle kısmım var,burada tanımlı kısım şöyledir.Lütfen kategori ismini giriniz.Ekleyeceğiniz kategori var ise; bu kategorinin ismini giriniz.Var olan kategoriye atılan haber,o kategoride görüntülenecektir.Eğer yeni bir (var olmayan) kategori ismi yazarsanız.Otomatik olarak yeni kategori yaratılacaktır.
İşte bu nasıl yapılıyor gelin beraber görelim.Aslında dediğim gibi olay şu,Benim sayfalarımda seo olduğu için,görsel olarak göstermek belki mümkün olmayacak ama,işin mantığını deneysel yolla görürseniz çok daha sağlıklı sonuca varacaksınız.İşin tüm tüm püf noktası phpmyadmin de kategori diye bir alan açmak.İşte gelin tablomuz şöyle olsun.id,kategori,konu,makale tamamdır.Alanlarımızı oluşturduk.Şimdi kodlarımıza geçelim.Yalnız daha öncesinde ufak bir sizin yapacağınız şeyi söylemek istiyorum.Tablomuzu oluşturduktan sonra içine bilgi girin.ben bu makalede sadece bilgiyi kategorilendirme mantıgında çıktı alarak göstericem.siz tablonuza phpmyadminden yada hazırladığınız bir formdan 2 3 tane farklı farklı kategorilerde bilgi girin.Daha sonra aşağıdaki kodu çalıştıralım.
PHP Kodu:
<?php
$kategori=mysql_query("select distinct kategori from tablename ");
while ($kat=mysql_fetch_assoc($kategori) ) {
echo '<a href="kategoriler.php?kategori='.$kat['kategori'].'">
'.$kat['kategori'].'</a>';
}
mysql_free_result($kategori);
?>
Şimdi burada ne yaptık açıklayalım;
$kategori=mysql_query("select distinct kategori from tablename ");
bu komut ile tablomuzdan kategori isimlerini çekiyoruz.
Yalnız malumunuz 100 lerce kategori isminin hepsi aynı olacak diye bir kaide yok...cunku bir kategoride 20 makale varsa malumunuz
kategori isimleride hep aynı olarak gelecektir.Yani alt alta aynı kategori ismini 20 kez yazdırmaktansa farklı olan kategorileri bir kez yazdırmak
ve linklendirmek daha mantıklı olur değil mi.Yoksa işin manası kalmaz.O yüzden burada püf noktası çok önemli.distinct komutuyla,farklı kategorileri
sadece bir kez sayfamıza cekiyoruz.daha sonra while dongusuyle baskılıyoruz.O komutumuz da soyle;
<a href="kategoriler.php?kategori='.$kat['kategori'].'>
'.$kat['kategori'].'</a>'
bu komutla gordugunuz gibi
'.$kat['kategori'].' kategori ismine link veriyoruz.ve sayfamıza gelen her kategori ismine
<a href="kategoriler.php?kategori='.$kat['kategori'].'"> kategoriler.php?kategori=kategori_ismi gibi bir link verdik.burada örneğin haberler diye bir kategori açtıysanız.
haberler linki kategoriler.php?kategori=haberler linkine gidecektir.Bu kısmı sanıyorum anladınız.Şimdi ise kategoriler.php dosyamızı hazırlayalım.Yalnız benim sayfamda
dikkat ederseniz.Örneğin internet-haberleri kategorisine girdiğinizde burada haberin tamamı yok,belirlenmiş bir karaktere kadar kesilmiş hali ve devam linki var.İşte bizde
burda böyle yapalım isterseniz.Her kategoriye eklenen makaleyi devamini oku şeklinde göstertelim.kategoriler.php dosyamız şu şekilde.
PHP Kodu:
<?php
//mysql baglantısını include ediyoruz
include ("db.php");
baglan();
$kategori=$_GET['kategori'];
$kategoriler=mysql_query("select*from hakkimda where kategori='$kategori' order by id desc");
while ($rows=mysql_fetch_assoc($kategoriler) ) {
$bol=substr($rows['makale'],0,500);
echo ''.$rows['konu'].' '.$rows[tarih].'<br><br>'.$bol.'
<br><br>
<a href="kategoriler2.php?kategori='.$rows[kategori].'&id='.$rows[id].'">
devami</a>';
}
mysql_free_result($kategoriler);
?>
Şimdi bu kodumuzu açıklayalım.
$kategori=$_GET['kategori']; adres satırına gelen kategoriler.php?kategori=kategori_ismi linkten kategori_ismi kısmını almayı
get metoduyla yapıyoruz.daha sonra sorgumuzu gönderiyoruz.
$kategoriler=mysql_query("select * from hakkimda where kategori='$kategori' order by id desc");
bu komut ile get metoduyla aldıgımız
kategori isminde ki bölüme ait bilgileri sorgulatıyoruz.adres satırından haberler diye bir bilgi alınırsa bu sorgu bize haberler ile ilgili tum kategori
ismine sahip bilgileri bize çekecektir. order by id desc ile de en son eklenen den ilk eklenene dogru sıralamamız sağlar.Daha sonra ise;
$bol=substr($rows['makale'],0,500); bu komut ile yani substr ile makalemizi bölüyoruz ve ilk 500 karakterini alıyoruz.Daha sonra;
Kod Çizelgesi Kod Dili: php
echo ''.$rows['konu'].' '.$rows[tarih].'<br><br>'.$bol.'
<br><br>
<a href="kategoriler2.php?kategori='.$rows[kategori].'&id='.$rows[id].'">
devami</a>';
baskılıyoruz gördüğünüz gibi.konu ve tarih i ilk olarak çekip 2 satır aşağısına böldüğümüz haberin
ilk 500 unu basıyoruz.onunda 2 satır aşağısına devami diye bir link atıyoruz.linkimizde şu şekilde.
<a href="kategoriler2.php?kategori='.$rows[kategori].'&id='.$rows[id].'"> evet bu da ayrı bir sayfada tum makalelerin tamamını gosterecek şekilde linklendirilmiştir.ayrı bir sayfada tek getirdiğimiz özellik her makalenin kendi id özel numarasıyla adres satırına çekmektir.
cunku böldüğümüz haberi görmek için id numarasını adres satırında görmemiz mecburidir.aksi takdirde devami linkiyle yine sayfamız görüntülenmeyecektir.
o zaman gelelim son kısmımızı kodlamaya. kategoriler2.php dosyamızın kodlaması da aşağıdadır.
PHP Kodu:
<?php
$kategori=$_GET['kategori'];
$id=$_GET['id'];
$tablos=mysql_query("select*from hakkimda where kategori='$kategori' and id='$id'");
while ($reads=mysql_fetch_assoc($tablos) ) {
echo ''.$reads[konu].' '.$reads[tarih].'<br><br>'.$reads[makale].' ';
?>
kolay gelsin.başarılar
Makale Sahibi : Ali Gürbüz