PHP etiket sistemi yapımı

Yazdığımız PHP scriptlerde etiket sistemi artık olmazsa olmaz bölümlerden birisi olmuş durumda. Peki bu etiket sistemini nasıl yaparız ? Bunun için çeşitli yöntemler bulunuyor. Veriyle beraber aynı tabloda etiket sütunu oluşturmak vs. Bu sistem çok hantal oluyor tabi. Daha esnek, daha kullanışlı bir sistemden bahsetmek istiyorum ben. Bu sistemde etiketlerimiz için ayrı bir etiket tablosu oluşturuyoruz. Bu sistemin önemli bir avantajı bir içeriğe istediğimiz kadar etiket ekleyebilmemiz. Basitçe sistemi anlatim. Öncelikle etiket tablomuzu oluşturuyoruz. Bu tablomuzda 3 alan olacak: etiket_id, etiket, icerik_id. Burda icerik_id olarak belirttiğimiz haber ekliyorsak eklediğimiz haberin id’si, başka bir veri giriyorsak o verinin id’si olacak. Yani daha somut bir örnek verecek olursak, bir haber giriyoruz ve bu haberin id’si 185 olsun. Bu habere ekleyeceğimiz etiketler de loper, etiket sistemi, php olsun. Etiket tablomuz içeriği eklediğimizde şu şekilde şekillenecek.

Etiketi içerik sayfasına çekme işini de tabiki id ile yapacağız. Örneğin bu son eklediğimiz içeriğin sayfasına girdiğimizde, yani id‘si 185 olan haberin sayfasına girdiğimizde etiket tablosundan icerik_id‘si 185 olan etiketleri çekeceğiz. Sonuç olarak; loper, etiket sistemi, php etiketlerini çekmiş olacağız.

Peki etiketleri nasıl tek tek ekleyeceğiz. En çok merak edilen, sorulan önemli bir nokta da burasıdır. Aslında çok basittir bu da. Bunun için explode() fonksiyonundan yararlanacağız. Fonksiyonun verilen texti, belirtilen işaretçiyi dikkate alarak parçalıyor. Yani biz etiket text alanına “loper, etiket sistemi, php” yazdığımızda, explode fonksiyonumuza da bölmesi gereken işaretin virgül olduğunu belirttiğimizde bu fonksiyon bütün halindeki bu yazıyı virgüllerden kesiyor ve 3 parça haline getiriyor. Bütün iş burada bitiyor. Geriye bu tek halde bulunan etiketleri veritabanımıza yazdırmak kalıyor. Bu yazdırma işlemini de foreach döngüsü ile yapacağız. Bu döngü etiketi bir dizi değişkenine atıyor ve sırayla bu değişkenleri çekiyor. Kodlama mantığını biraz biliyorsanız bu yapı hiç de yabancı gelmeyecektir size.

$etiket = $_POST['etiket'];

$ayir = explode(',', $etiket);

foreach($ayir as $a)

{

$etiketim = trim($a);

$insertSQL = sprintf("INSERT INTO etiket (etiket, icerik_id) VALUES (%s, %s)", GetSQLValueString($etiketim, "text"), GetSQLValueString($icerik_id, "int"));

mysql_select_db($database_etiketim, $etiketim); $sonuc = mysql_query($insertSQL, $etiketim) or die(mysql_error());

}

Kodumuzu kısaca anlatacak olursak önce yazı alanına girdiğimiz etiketi, etiket değişkenine atıyoruz. Daha sonra explode ile virgüllerden itibaren yazıyı böl diyoruz. Bunu ayir değişkenine atıyoruz. Burda ayir değişkeni dizi olarak yer alıyor. Daha sonra ise döngü yardımıyla etiketlerimizi tek tek veritabanımıza ekliyoruz. Bu kısımlardan fazla bahsetmiyorum. Zaten php script yazıp da etiket sistemi kısmında takılan birisi için burda mantığı görmek yeterli olacaktır diye düşünüyorum. Gene de aklınıza takılan yerler olursa sorularınızı sorabilirsiniz.

“PHP etiket sistemi yapımı” yazısı için 4 yorum yazılmış
  1. wolf diyor ki:

    bu mantık güzel ama bu veritabanında çok fazla yer kaplamaz mı? birde tam olarak etiketlemenin mantığı nedir?

  2. ibrahim diyor ki:

    peki benim aklıma takılan bir şey oldu. şimdi ben bir konu için bir etiket belirledim diyelim türkiye olsun başka bir konu içinde Türkiye adında bir etiket belirlersem veritabanında varsa kaydetmese ama etiket id sini konuya eklese böyle bir sistem cok mu uğraştırır

  3. eren diyor ki:

    bir başka etiketleme yöntemi de benden:

    1-içeriğimizi texboxumuza girelim
    2-replace fonksiyonu ile içeriğimizin tüm boşluklarını virgüle çevirelim
    3-explode fonksiyonuna virgülden ayır deyip içeriğimizin tamamını etiket haline getirelim
    4-alınan etiketleri dizi değişkenine aktaralım
    5-yine alınan dizi elemanları için bir fonksiyon oluşturup, tüm bu etiketleri linkleyelim ( < a href rel = " nofollow " > ) içine alalım yani…
    5-buradan veri tabanında içeriğin etiket adlı alanına bu href lenen etiketleri kkaydedelim.
    8-her makalenin linklenen etiketlerini hem makale gösterim sayfasında yazdıralım.
    7-tabi unutmadan linklerimizi şu şekilde oluşturalım:

    SELECT icerik FROM icerikler WHERE etiket=’etiket_dizisi[]‘

    böylece daha yazıyı kaydederken binlerce etiket oluşturmuş olucaz…
    fakat aynı etiketlerin kaydedilmemesi için dizilerinizi kontrol eden küçük bir if komutu eklemeniz gerekiyor elbette…
    iyi çalışmalar

  4. selim diyor ki:

    Teşekkürler eren ;)

Siz de yorumunuzu paylaşın...