lostyazilim

PHP YARDIM : Trend Hashtag yapımı

13 Mesajlar 1.966 Okunma
lstbozum
wmaraci reklam

OVER OVER WM Aracı Kullanıcı
  • Üyelik 01.12.2013
  • Yaş/Cinsiyet 26 / E
  • Meslek DÜ Bilgisayar Müh. Öğrencisi
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 158
  • Beğeniler 51 / 25
  • Ticaret 1, (%100)


Postlara ait tag'lerin id lerini bu şekilde sıraladım ve en popüler 5 hashtag kısmı yapmak istiyorum nasıl yaparım ?

Bir diğer sorum posts şablonunda date_Created sütünunda postların ne zaman açıldıklarını tutuyorum bu şekilde son 24 saatin en popüleri şeklinde bir sıralama yapmam mümkünmü ?
 

 

wmaraci
reklam

11yes11 11yes11 WM Aracı Kullanıcı
  • Üyelik 16.06.2018
  • Yaş/Cinsiyet 23 / E
  • Meslek Öğrenci
  • Konum İstanbul Anadolu
  • Ad Soyad Y** S**
  • Mesajlar 77
  • Beğeniler 7 / 9
  • Ticaret 0, (%0)
"SELECT * FROM xxx ORDER BY xxx desc limit 0,5"

Bu şekilde ypabilirsin tabloyu ilk xxx e ikinci xxx e de sıralamk istediğin veriyi yaz daah sonra veritabanından bu şekilde çek
 

 

OVER OVER WM Aracı Kullanıcı
  • Üyelik 01.12.2013
  • Yaş/Cinsiyet 26 / E
  • Meslek DÜ Bilgisayar Müh. Öğrencisi
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 158
  • Beğeniler 51 / 25
  • Ticaret 1, (%100)
11yes11 bu fonksiyon id leri büyükten küçüğe sıralamama yarar ben bunu yapmak istemiyorum en fazla kullanılandan en az kullanılana göre sıralamak istiyorum.
 

 

hsntngr hsntngr Kontör at Kullanıcı
  • Üyelik 21.09.2016
  • Yaş/Cinsiyet 31 / E
  • Meslek Full Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad H** T**
  • Mesajlar 1155
  • Beğeniler 99 / 327
  • Ticaret 3, (%100)
select tag_id, count(*) from *table* group by tag_id order by count(*) desc limit 0,5

şöyle bir şey deneyin hocam, bakalım nasıl bir sonuç alacaksınız ?
 

 

wmaraci
wmaraci

OVER OVER WM Aracı Kullanıcı
  • Üyelik 01.12.2013
  • Yaş/Cinsiyet 26 / E
  • Meslek DÜ Bilgisayar Müh. Öğrencisi
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 158
  • Beğeniler 51 / 25
  • Ticaret 1, (%100)
hsntngr #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*table* group by tag_id order by count(*) desc limit 0,5' at line 1
 

 

hsntngr hsntngr Kontör at Kullanıcı
  • Üyelik 21.09.2016
  • Yaş/Cinsiyet 31 / E
  • Meslek Full Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad H** T**
  • Mesajlar 1155
  • Beğeniler 99 / 327
  • Ticaret 3, (%100)
*table* yazan yere tablo adını yazıcaksın hocam
OVER

kişi bu mesajı beğendi.

OVER OVER WM Aracı Kullanıcı
  • Üyelik 01.12.2013
  • Yaş/Cinsiyet 26 / E
  • Meslek DÜ Bilgisayar Müh. Öğrencisi
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 158
  • Beğeniler 51 / 25
  • Ticaret 1, (%100)
hsntngr teşekkür ederim.
 

 

OVER OVER WM Aracı Kullanıcı
  • Üyelik 01.12.2013
  • Yaş/Cinsiyet 26 / E
  • Meslek DÜ Bilgisayar Müh. Öğrencisi
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 158
  • Beğeniler 51 / 25
  • Ticaret 1, (%100)
function get_populer_tags(){
$sorgu = db()->query( "select tag_id, count(*) from post_tags tag_id order by count(*) desc limit 0,5" );
$tagid = $sorgu->fetchAll(PDO::FETCH_OBJ);
foreach ($tagid as $tagname) {
$sorgu2 = db()->query("select * from tags where id = '$tagname->tag_id' ");
return $tagisim = $sorgu2->fetch(PDO::FETCH_LAZY);
}
}









Nerde hata yaptım acaba hsntngr
 

 

hsntngr hsntngr Kontör at Kullanıcı
  • Üyelik 21.09.2016
  • Yaş/Cinsiyet 31 / E
  • Meslek Full Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad H** T**
  • Mesajlar 1155
  • Beğeniler 99 / 327
  • Ticaret 3, (%100)
öncelikle sql injection saldırılarını önlemek için prepare execute yapısnı kullanman lazım hocam.

eğer ihtiyacın yoksa count(*) seçmeden tag_id leri çekelim, varsa gelen arraydan tag_idleri alman lazım.

daha sonra şöyle çekicez.


$sorgu2 = db()->prepare("select * from tags where id IN (?,?,?,?,?) ");
$db->execute($idler) //$idler = tag id lerinden oluşan array


bir query oluştururken her zaman sonucu daha az query ile elde etmeye çalşalım hocam. database ile ne kadar az ilişki kurarsak yüksek trafik alan sitelerde o kadar rahat ederiz.
 

 

OVER OVER WM Aracı Kullanıcı
  • Üyelik 01.12.2013
  • Yaş/Cinsiyet 26 / E
  • Meslek DÜ Bilgisayar Müh. Öğrencisi
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 158
  • Beğeniler 51 / 25
  • Ticaret 1, (%100)
@hsntngr hocam tag_id leri almam lazım şu şekilde açıklayayım

3 adet şablonum var
->post
-> post_tag
-> tag şeklinde

post tag şablonunda postların id si ve sahip oldukları tagların id leri mevcut
sıralamayı id şeklinde yapmam için aşağıya bıraktığım kod yeterli oldu

function get_populer_tags(){
$query = db()->query( "select tag_id, count(*) from post_tags group by tag_id order by count(*) desc " );
return $query->fetchAll(PDO::FETCH_ASSOC);
}


Ancak sonuç listesi elime şu şekilde geldi.



bende id leri ile tagların isimlerini çekmek için join kullanmaya çalıştım fakat fazla anlamadığımdan dolayı başarısız oldum. Eğer zamanınız varsa canlı olarak yardım edebilirmisiniz bana? Fazla zamanınızı alacağımı sanmıyorum.
 

 

wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al