grafikcoder adlı üyeden alıntı: mesajı görüntüle
Öncelikle sana yardımcı olabilmek adına ben örnek diye bir veritaban oluşturdum. Bu veritabana konular ve yorumlar adında tablolar açtım.





Gördüğün gibi tablo içeriklerini bu şekilde yaptım, örnek olabilmesi için, sende farklı olduğunu biliyorum. ama birşeyler anlayabilmen için ve içinede birkaç veri girdim.

Sonra ise db.php adında dosya oluşturup içine şunları ekledim:

<?php
try {
    $db = new PDO("mysql:host=localhost;dbname=ornek", "root", "");
} catch ( PDOException $e ){
    print $e->getMessage();
}
?>
Bu bilidğimiz gibi pdo ile veritabana bağlanma kodlarıdır. Buradaki ayarları düzenlersin.

Daha sonra ise konuların listeleneceği sayfama şu kodları ekledim:

<h3>En Çok Yorum Alan Konular</h3>
<table border="1" cellpadding="5">
    <thead>
    <tr>
        <th>Sıralama</th>
        <th>Konu Başlığı</th>
        <th>Yorum Sayısı</th>
    </tr>
    </thead>
    <tbody>
    <?php
    $yorumlar = $db->prepare('SELECT count(*) as yorumsayisi,GROUP_CONCAT(yorum_id) as yorumlar,konular.* FROM yorumlar LEFT JOIN konular ON yorumlar.konu = konular.konular_id GROUP BY konu ORDER BY yorumsayisi DESC');
    $yorumlar->execute();
    $yorumlarlistele = $yorumlar->fetchAll(PDO::FETCH_ASSOC);

    if($yorumlarlistele){
        $siralama = 0;
        foreach($yorumlarlistele as $item){
            $siralama++;
            echo '<tr>';
            echo '<td>'.$siralama.'</td>';
            echo '<td>'.$item['konu_baslik'].'</td>';
            echo '<td>'.$item['yorumsayisi'].'</td>';
            echo '</tr>';
        }
    }
    ?>
    </tbody>
</table>
Tabi ben burada örnek olsun diye tablo içine aldım, kendine göre düzenleyebilirsin. Sonuç :




PDO ile veri çekim işlemini yukarıda sağladım.

Ama direk olarak sql sorgusunada vereyim.

SELECT count(*) as yorumsayisi,GROUP_CONCAT(yorum_id) as yorumlar,konular.* FROM yorumlar LEFT JOIN konular ON yorumlar.konu = konular.konular_id GROUP BY konu ORDER BY yorumsayisi DESC
Burada konular ve yorumlar tablolarını left join ile birleştirip, gerekli konumları eşleştiriyoruz. Group by ile konuları gruplandırıyoruz. GROUP_CONCAT ile yorum_id'leri aynı olanları konular başlığında topluyoruz. Bunu 1,5,6,7,8 gibi topluyor. Yani phpde implode olayı dediğimiz olaya benziyor. count(*) ilede bunları saydırıyoruz. sql sorgusunda gördüğün konular.* ise konular tablosunun elemanlarının hepsinide dahil et anlamındadır. Sql sorgumuz aslında şöyle gözükmektedir.

Kardeşim senden allah razı olsun dediklerini uyguladım hiç bir sorun çıkmadı.Tam istediğim gibi bir şey oldu mantığını dahi anlatmışsın.

Tek tek okuyarak mantığınıda öğrendim.Çok tşkler.Senide rahatsız ettiğim için özür dilerim.Zaman ayırmışsın tek tek anlatmışsın.

Ayrıca toprakmışız bende Çorum Sungurlu'danım