yanıyosun fuat abi
Aktif Üye
- Mesajlar
- 123
arkadaşlar şimdi bir yorum sistemi olduğunu düşünelim. yorum tablosunda "oy_up" ve "oy_down" şeklinde iki sütun var. yoruma verilen + ve - oyların kaydını tutuyor. yorumlar select ile "önce yeniler" "önce eskiler" ve "önce beğenilenler" olarak sıralanıyor ve yorumlarda sayfalama sistemi değil "devamını yükle" sistemi kullanılıyor. facebook ve twitter tarzı.
şimdi sayfayı eklenme sırasına göre sıralattığımda 20 tanem mesaj sıralanıyor diyelim ve altında "devamı" yazıyor. devamı deyince üsttekilerin altına bir 20 mesaj daha yükleniyor. bu tüm mesajlar bitene kadar bu şekilde devam ediyor. eklenme tarihine göre yaparken problem yok çünkü devamını yüklerken ki sql sorgumda "select * from yorumlar where id<$sonmesaj_id limit 20" tarzı bir sorgulama yapıyorum. yani 20. mesajın id numarasını alıp daha küçük ya da daha büyük id numarasına göre sıralatıp doğru sonuca ulaşıyorum.
problem "önce beğenilenler" dediğimde ortaya çıkıyor. bunu seçtiğimde oy_up-oy_down sayısına göre büyükten küçüğe doğru 20 tane yorumu güzelce sıralıyor. ama işte "devamı" bölümüne tıklayınca nasıl bir sorgu yapıcam? ben şuan son yorumun net oy sayısını alıp "select * from yorumlar where oy_up-oy_down<$oy_up-$oy_down limit 20" şeklinde yapıyorum. işte sorun tam da bu nokta.
mesela sayfayı açar açmaz 20 tane yorum sıralansın ilk mesajın oy sayısı +20 olsun sonra sırayla +19 diye gitsin son mesaj +3 olsun. ama daha bundan sonra 10 tane daha +3 oy alan yorum olduğunu düşün ama ben devam linkine tıkladığımda sorguda küçüktür ibaresi olduğu için +2 olanlardan devam ediyor. küçük eşit yapsam bu defa tüm +3'leri tekrar sıralıyor. neye göre nasıl sıralayacağımı şaşırdım. bu konuda fikir yürütebilecek olanların yardımını bekliyorum.
şimdi sayfayı eklenme sırasına göre sıralattığımda 20 tanem mesaj sıralanıyor diyelim ve altında "devamı" yazıyor. devamı deyince üsttekilerin altına bir 20 mesaj daha yükleniyor. bu tüm mesajlar bitene kadar bu şekilde devam ediyor. eklenme tarihine göre yaparken problem yok çünkü devamını yüklerken ki sql sorgumda "select * from yorumlar where id<$sonmesaj_id limit 20" tarzı bir sorgulama yapıyorum. yani 20. mesajın id numarasını alıp daha küçük ya da daha büyük id numarasına göre sıralatıp doğru sonuca ulaşıyorum.
problem "önce beğenilenler" dediğimde ortaya çıkıyor. bunu seçtiğimde oy_up-oy_down sayısına göre büyükten küçüğe doğru 20 tane yorumu güzelce sıralıyor. ama işte "devamı" bölümüne tıklayınca nasıl bir sorgu yapıcam? ben şuan son yorumun net oy sayısını alıp "select * from yorumlar where oy_up-oy_down<$oy_up-$oy_down limit 20" şeklinde yapıyorum. işte sorun tam da bu nokta.
mesela sayfayı açar açmaz 20 tane yorum sıralansın ilk mesajın oy sayısı +20 olsun sonra sırayla +19 diye gitsin son mesaj +3 olsun. ama daha bundan sonra 10 tane daha +3 oy alan yorum olduğunu düşün ama ben devam linkine tıkladığımda sorguda küçüktür ibaresi olduğu için +2 olanlardan devam ediyor. küçük eşit yapsam bu defa tüm +3'leri tekrar sıralıyor. neye göre nasıl sıralayacağımı şaşırdım. bu konuda fikir yürütebilecek olanların yardımını bekliyorum.