v2.5.2
Giriş yap

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

rephp7
501 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
1166 gün önce

Doğru anladıysam şöyle de yapabilirsin.
Select'te seçim yaptığın an url'e yıl değeri gelecek bunu kontrol ederek card'ları getirebilirsin

    <form method="GET">
		<select name="yil" onChange="window.location.href=this.value" class="form-control">
				<?php foreach ($yillar as $yil): ?>
					<option value="<?=http://localhost/veriler?yil='.$yil["yil"].'?>"><?=$yil['yil']?></option>
				<?php endforeach ?>
		</select>
	</form>

Bu şekilde get değerini al ve sorguda kullan.

    if (isset($_GET['yil'])) {
	    $yil = $_GET['yil']
    }
    else{
	    $yil = '2021';
    }

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