PHP Mysql İle Bu Haftanın ve Geçen Haftanın Kayıtlarını Listelemek

Verileri php ve sql sorgularıyla anlamlı bir şekilde listelemek hepimizin ortak sorunu, yaparken çok araştırdığım konulardan bir tanesi de bu hafta pazartesiden pazara kadar olan kayıtları ve geçen pazartesiden geçen pazara olan kayıtları ayrı ayrı listelemekti, bunun için çeşitli çözüm sunan blogcu arkadaşların çözümlerini denedim ama sonuç alamadım çünkü herkes şu kodları vermiş

select * from tablo_adi where WHERE YEARWEEK(eklenme_tarihi) = YEARWEEK(CURRENT_DATE)
SELECT * FROM tablo_adi WHERE WEEK(eklenme_tarihi) = WEEK(CURDATE());

Bu kodları denediğinizde haftanın birinci günü olarak pazar geliyor ama günümüz Türkiyesinde bildiğiniz üzere haftanın birinci günü PAZARTESİ 🙂

Ben bu pazartesiden pazara kadar olan kayıtları listelemek için şunu kullanıyorum:

<?php 
$pazartesi=date("Y-m-d", strtotime("Monday", strtotime(date("Y-m-d"))));
$pazar=date("Y-m-d", strtotime("Sunday", strtotime(date("Y-m-d"))));
 
$sorgu_cumlesi="SELECT * FROM tablo_adi WHERE  (eklenme_tarihi BETWEEN '{$pazartesi}' AND '{$pazar}') ORDER BY id asc";
?>

**NOT: $pazartesi değişkeni içinde yer alan Monday=Pazartesi, eğer siz pazartesi günündeyseniz sıkıntısız çalışıyor fakat ertesi gün salı olduğunda yada diğer günlere girdiğinizde ekrana baktığınızda bu kod size gelecek haftanın pazartesi gününü verecektir.
$pazar değişkeni içinde yer alan Sunday=Pazar ifadesi de aynı şekilde gelecek haftanın pazar gününü verecektir. Geçmiş pazartesi yada pazar gününe gitmek için Last Monday yada Last Sunday ifadelerini strtotime içinde kullanmanız gerekiyor.

((Eğer bu işinizi görmeyecekse PHP Date ile 7 Gün Öncesini Bulup Farklı Formatlarda Yazdırma yazısına da bakabilirsiniz))

** Sorgu içinde geçen eklenme_tarihi ,  tablo_adi isimli tablonuzdaki verilerin kayıt tarihlerinin tutulduğu sütunun adıdır. Bu sütunun kayıt türü DATE olmalıdır.

Sorguladığımız verileri Ekrana Listelemek için while döngüsü ile sorgulananları getirip foreach ile yazdırıyorum kodların son hali şu şekilde;

<?php
$pazartesi=date("Y-m-d", strtotime("Monday", strtotime(date("Y-m-d"))));
$pazar=date("Y-m-d", strtotime("Sunday", strtotime(date("Y-m-d"))));
 
$sorgu_cumlesi="SELECT * FROM tablo_adi WHERE (eklenme_tarihi BETWEEN '{$pazartesi}' AND '{$pazar}') ORDER BY id asc";
$sorgug = mysql_query($sorgu_cumlesi);
while($satir=mysql_fetch_array($sorgug)) {
$getirilen[$satir['id']]=$satir;
}
?>
 
<table>
<thead>
<tr>
<th>#</th>
<th>Tarih</th>
<th>Açıklama</th>
</tr>
</thead>
<tbody>
<?php $sirano=1; ?>
<?php foreach ($getirilen as $buhafta) : ?>
<tr>
<td>
<?php $say = $sirano++; echo $say; ?>
</td>
<td>
<?php echo date('d.m.Y', strtotime($buhafta['eklenme_tarihi'])); ?>
</td>
<td>
<?php echo $buhafta['aciklama']; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>

Şimdi Sıra Geçen Haftanın Kayıtlarını Getirmekte (Yani Geçen Hafta Pazartesiden Geçen Hafta Pazara kadar olanlar) onun için de kodlarda sadece Last deyimini kullandım şu şekilde;

<?php
$oncekipazartesi=date("Y-m-d", strtotime("Last Monday", strtotime(date("Y-m-d"))));
$oncekipazar=date("Y-m-d", strtotime("Last Sunday", strtotime(date("Y-m-d"))));
 
$sorgu_cumlesi="SELECT * FROM tablo_adi WHERE (eklenme_tarihi BETWEEN '{$oncekipazartesi}' AND '{$oncekipazar}') ORDER BY id asc";
$sorgug = mysql_query($sorgu_cumlesi);
while($satir=mysql_fetch_array($sorgug)) {
$getirilen[$satir['id']]=$satir;
}
?>
 
<table>
<thead>
<tr>
<th>#</th>
<th>Tarih</th>
<th>Açıklama</th>
</tr>
</thead>
<tbody>
<?php $sirano=1; ?>
<?php foreach ($getirilen as $oncekihafta) : ?>
<tr>
<td>
<?php $say = $sirano++; echo $say; ?>
</td>
<td>
<?php echo date('d.m.Y', strtotime($oncekihafta['eklenme_tarihi'])); ?>
</td>
<td>
<?php echo $oncekihafta['aciklama']; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir