v2.5.2
Giriş yap

Yıllara göre veri çekmek, tek sorgu da mümkün mü?

rephp7
441 defa görüntülendi

Yazilar tablomdan yil sütununa göre ayrı ayrı kartlarda o yılın başlıklarını listeletmek istiyorum.

$buyil= date("Y");
$yillikyazilar = $db->vericek('yazilar', "where yil=?", array($buyil), "order by id desc");

Örneğin yukarıda ki sorguda bu yılın yazılarının başlıklarını 2021 yazıları diye adlandırdığım kartıma çekiyorum.

<div class="card-header">
    <!-- bu yıl : 2021 yılının yazıları kartı -->
 <h3 class="card-title"><?= $buyil; ?> Yılı Yazılarımız</h3>
 </div>
                    
<div class="card-body">

    <?php  
for ($i = 0; $i < count($yillikyazilar); $i++) {
    ?>
<li> <?= $yillikyazilar[$i]["baslik"]; ?></li>
<?php } ?>
</div>

Her card için ayrı ayrı mı veri çağırmalıyım ? bunun kolay yolu yok mu?

son 4 yıl için cardlar yapıp 5. card da da geri kalan tüm yılların başlıklarını çağırmak istiyorum?
nasıl yapabilirim? Yardımınızı rica ediyorum.

eminkurt
960 gün önce

İlk önce yılları al

    $query = $db->query(" SELECT yil FROM yazilar GROUP BY yil", PDO::FETCH_ASSOC);

Sonra yılları sırala. 2. bir sorgu ile card body içinde ilk sorgumuzdan gelen yıl verisine göre verileri çek

   <?php foreach ($query as $row): ?>
    <div class="card-header">
        <h3 class="card-title"><?= $row['yil']; ?> Yılı Yazılarımız</h3>
    </div>

    <div class="card-body">
        <?php 
        $query2 = $db->query(' SELECT * FROM yazilar WHERE yil =  '.$row['yil'].' ', PDO::FETCH_ASSOC);
        ?>

        <?php foreach ($query2 as $row2): ?>
            <li><?=$row2['baslik']?></li>
        <?php endforeach ?>


    </div>
<?php endforeach ?>