etkiet sistemi
8
●730
- 09-12-2009, 18:14:34merhaba 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Ö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:16yanlı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:54:29Üyeliği durdurulduid | 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@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Üyeliği durduruldurand 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 etiketTrDunya adlı üyeden alıntı: mesajı görüntüle
- 10-12-2009, 04:56:10Üyeliği durdurulduişin pratik yönü haricinde mysql performansı kod performansı olarak bakarsan işe daha iyi olur.TrDunya adlı üyeden alıntı: mesajı görüntüle
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Üyeliği durdurulduö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ş olalimTrDunya adlı üyeden alıntı: mesajı görüntüle