• 09-12-2009, 18:14:34
    #1
    merhaba arkadaslar, php siteme etiket sistemi yapmak istiyorum fakat bununla ilgili hic kaynak bulamadim. kendi yaptigim php siteme nasil etiket sitemi yapabilirim?
  • 09-12-2009, 18:28:56
    #2
    Öncelikle veritabanında etiketler için tablo açmalısın

    Etiketler : etiketID KonuID etiketAdi

    Sonra virgülle etiketleri girebileceğin bir texbox ve submit yeri koyacaksın konuya

    Daha sonra explode ile kelimeleri tek tek hale çevirip veritabanına öyle kaydediyorsun

    Veri tabanına kaydolduktan sonra kalan olay standart mysql sorguları ile sitende yazdırmak

    Olayın mantığı bundan ibaret .
  • 10-12-2009, 02:19:16
    #3
    yanlız bu dediğin sistem db'yi çok doldurmaz mı? 1.000.000 kayıt varsa yaklaşık 4 - 5.000.000 etiket olur buda DB'yi çok yavaşlatmaz mı?

    Benim sistemim şu içeriğin bulunduğu tabloya etiket isimli bir text bölümü oluşturup içine :etiket1:etiket2:etiket3: gibi yazdırmak. Ararken ise etiket likes '%:etiket1:%' gibi seçmek daha mantıklı değil mi? Düzenlerkende eklemenin yapıldığı tarz düzenlenebilir... Yazdırırkende explode ile ayırıp yazdırılabilir.

    Mantıklı geldiyse geliştirebilirsiniz, burada paylaşabilirsiniz. Bende yararlanmış olurum.
  • 10-12-2009, 02:22:18
    #4
    Yeşil SEO İnt. Hiz.
    1.000.000 etikette mecbur rand() yapamıyosun..
    order by desc vs. yapılıyor..
    1.000.000 etiketi mysql den rand ile çeken daha görmedim
  • 10-12-2009, 02:54:29
    #5
    Üyeliği durduruldu
    id | icerik_id | etiket_title -------- id | icerik
    1--------1----------php-------------1--içerik
    2--------2----------asp-------------2--içerik2
    3--------3----------css-------------3--içerik3
    4--------4----------css-------------4--içerik4

    sorgu yaparken sql den karşılaştırma yaparsın explode ile bir sutuna fazla kelime girilirse örnek . etiket_title : id 1 icerik_id 2 etiket_title : asp-php-css şeklinde olur ve aynı kelimeleri tekrar tekrar ekler.

    yukarıdaki tabloda o sorun olmaz kayıt ederken explode ile belirtilen parametrede cümle parçalanır örnek(-) daha sonra veritabanına kayıt edilir.
    listele yapılırkende eşitleme ile olay çözülür.kısacası kategori mantığı nasılsa aynen öyle.

    kolay gelsin
  • 10-12-2009, 03:53:31
    #6
    @staticiation
    Amaç mysql'i daha performanslı kullanıp küçültmek değil mi? Mysql'in boyutu site hızını etkiliyor ve rand olup olmaması önemli değil.

    @BHCoder
    eregi_replace ile içindeki etiketin içini çok rahat değiştirebilirsin. Bunun daha birçok yolu var... Sonra aynı etiket içine 2 kere yazılmasınıda engelleyebilirsin. Ve eşdeğer etiketli konu sayısınıda like mantığı ile çekebilirsin.

    Bence Mysql'i çok daha temiz tutar.
  • 10-12-2009, 04:42:53
    #7
    Üyeliği durduruldu
    TrDunya adlı üyeden alıntı: mesajı görüntüle
    @staticiation
    Amaç mysql'i daha performanslı kullanıp küçültmek değil mi? Mysql'in boyutu site hızını etkiliyor ve rand olup olmaması önemli değil.

    @BHCoder
    eregi_replace ile içindeki etiketin içini çok rahat değiştirebilirsin. Bunun daha birçok yolu var... Sonra aynı etiket içine 2 kere yazılmasınıda engelleyebilirsin. Ve eşdeğer etiketli konu sayısınıda like mantığı ile çekebilirsin.

    Bence Mysql'i çok daha temiz tutar.
    rand olup olmaması önemli değil olurmu? mysqlde sistemi en çok yoran kasan fonksiyondur rand(). 50 milyon kayıt olsa bile, ona göre bir sunucu, düzenli optimize ve iyileştirmelerle ayakta tutulabilir büyük sistemler ki burda milyonlardan bahsediyorsunuz 5 - 6 milyon etiket nerde görülmüş? muhakkak spamdır okadar etiket
  • 10-12-2009, 04:56:10
    #8
    Üyeliği durduruldu
    TrDunya adlı üyeden alıntı: mesajı görüntüle
    @staticiation
    Amaç mysql'i daha performanslı kullanıp küçültmek değil mi? Mysql'in boyutu site hızını etkiliyor ve rand olup olmaması önemli değil.

    @BHCoder
    eregi_replace ile içindeki etiketin içini çok rahat değiştirebilirsin. Bunun daha birçok yolu var... Sonra aynı etiket içine 2 kere yazılmasınıda engelleyebilirsin. Ve eşdeğer etiketli konu sayısınıda like mantığı ile çekebilirsin.

    Bence Mysql'i çok daha temiz tutar.
    işin pratik yönü haricinde mysql performansı kod performansı olarak bakarsan işe daha iyi olur.

    biz çok fazla kyıt için yazmıştık onu. 10 tane vaya benzeri kayıt var ise senind eidğin yapılabilir.ama unutulmamalıdır ki 6 milyon kayıt varsa like mantığı pek işi yaramaz.
    en temizi id = icerik_id
    ayrıca devturkeli belirtmiş rand() fonksiyonu mysql aşırı derecede etkiler.
    seçim sizin tabiki
  • 10-12-2009, 08:44:28
    #9
    Üyeliği durduruldu
    TrDunya adlı üyeden alıntı: mesajı görüntüle
    @staticiation
    Amaç mysql'i daha performanslı kullanıp küçültmek değil mi? Mysql'in boyutu site hızını etkiliyor ve rand olup olmaması önemli değil.
    özellikle büyük boyutlu verilerde önemlidir hocam bu durum. onun yerine php ile sayi üretip aralik şeklinde gösterme gibi başka tekniklere kayilir. performansın nasıl çuvalladığını görmek için örnek veri seti oluşturup deneyebilirsinizde. Yanlış yönlendirmemiş olalim