PHP Veri sıralama
Bir istatistik tablosu için verileri SQL üzerinden DESC ile son 5 kayıt olacak şekilde çekiyorum. Fakat çektiğim veriler 6,5,4,3,2 şeklinde geliyor ASC Olarak çektiğimde ise son 5 kayıt yerine ilk 5 kayıt alıyorum. Yapmak istediğim verileri 2,3,4,5,6 şeklinde sıralayarak son 5 kaydı çekmek
Kullandığım fonksiyon
<code>
$query = $db->query("SELECT * FROM `stats` WHERE `kullanici_adi`='".$kullanici_adi."' ORDER BY id DESC LIMIT 5")
</code>
<img src="https://sanalkurs.net/files/1583613818.png">
Özet olarak ; ASC olarak çektiğim son veri Chart üzerinde ters olarak sıralnıyor bunu 2,3,4,5,6 Şeklinde sıralanmasını istiyorum
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
Aşağıdaki gibi tek iç içe mysql sorgusuyla çözebilirsin.
SELECT * FROM (
SELECT * FROM tablo ORDER BY id DESC LIMIT 0,5
) AS yeniTablo ORDER BY id ASC
Şöyle olabilir.
Stats tablosunda bir stats_tarih kısmı oluşturun.
ORDER BY stats_tarih DESC LIMIT 5 şeklinde Sql kodunu yazarsanız son zamanda eklenene 5 kaydı getirir. Ancak sıralama çoktan aza şeklinde olur.
Sizin istediğiniz gibi azdan çoka doğru çıktı alabilmek için php tarafında fetchAll(PDO::FETCH_ASSOC) kısmını array_reverse() fonksiyonundan geçirmek gerekir.
$query = $db->query("SELECT * FROM `stats` WHERE `kullanici_adi`='".$kullanici_adi."' ORDER BY stats_tarih DESC LIMIT 5");
$query->execute();
$sonuc = array_reverse( $query->fetchAll(PDO::FETCH_ASSOC) );