• 02-09-2021, 18:20:34
    #1
    Merhaba,
    PHP de veri tabanında eklenen ürünün listelemesini yaparken ilk önce veri tabanından tarih kontrolü yapmasını ve yıla göre bir başlık oluşturmasını (2019, 2020, 2021 gibi) daha sonra oluşan başlık içine girdiğimizde ise aylara göre sıralamasını (ocak, şubat, mart, nisan, mayıs gibi) daha sonra ayın içine girdiğimizde o aya ait bütün ürünlerin görüntülenmesini nasıl sağlayabiliriz. yeni yıla ait bir ürün girdiği zaman 2022 gibi bir başlık oluşturmasını ve hangi aylarda ürün varsa ayları oluşturmasını nasıl sağlayabiliriz. bu konu hakkında bilgisi olan arkadaşlar destek olabilir misiniz?
  • 02-09-2021, 21:34:26
    #2
    Bunu sorgu ile yapabilirsin SQL sorgusu ile
  • 02-09-2021, 21:39:19
    #3
    Bunu yapmanın bir düzine yolu var, ama benim yaklaşımım muhtemelen şöyle olurdu (tam bir uygulama değil, tüm kaba kod parçacıkları)
    İlk olarak, sorgu
    Alıntı
    select `name`
    , month(`date`) as date_month
    , year(`date`) as date_year
    from [Table]
    order by `date` desc
    Ardından, verileri istenen mantıksal gruplar halinde düzenleyin
    Alıntı
    $templateData = array();
    foreach ( $rows as $row )
    {
    $templateData[$row->date_year][$row->date_month][] = $row->name;
    }
    Alıntı
    Daha sonra bir şablonda
    <?php foreach ( $templateData as $year => $months ) : ?>
    <?php foreach ( $months as $month => $names ) : ?>
    <h2><?php echo $month, ' ', $year; ?></h2>
    <ul>
    <?php foreach ( $names as $name ) : ?>
    <li><?php echo $name; ?></li>
    <?php endforeach; ?>
    </ul>
    <?php endforeach; ?>
    <?php endforeach; ?>
    Mobilden bu kadar yazabildim ama fikir verir herhalde
  • 02-09-2021, 22:00:02
    #4
    Önce bir form gerek onu post edip değişkene atıp sql sorguna
    $yil = $_POST['yillar'];
    $ay = $_POST['aylar'];
     $tarihle = $db->query("SELECT * FROM tablo WHERE tarihsutunu BETWEEN '$yil-$ay-01 00:00:00' AND '$yil-$ay-31 00:00:00' ORDER BY id desc", PDO::FETCH_ASSOC);
    sonra foreach le çek
  • 03-09-2021, 12:12:55
    #5
    bu tarz bir yapı kullanabilirsiniz.

    if(isset($_GET['yil'], $_GET['ay'])){
    $sorgu = "SELECT adi as titlem FROM tablo WHERE YEAR(tarih)= '{$_GET['yil']}' AND MONTH(tarih)= '{$_GET['ay']}' ";
    }
    elseif(isset($_GET['yil'])){
    $sorgu = "SELECT MONTH(tarih) as titlem FROM tablo WHERE YEAR(tarih)= '{$_GET['yil']}' GROUP BY titlem";
    }
    else{
    $sorgu = "SELECT YEAR(tarih) as titlem FROM tablo WHERE tarih GROUP BY titlem";
    }
    
    $db = $genel->baglan;
    $query = $db->query($sorgu, PDO::FETCH_ASSOC);
    if ( $query ){
    
    foreach($query as $veri){
    echo $veri['titlem'].'<br />';
    }
    }
  • 03-09-2021, 12:38:51
    #6
    teşekkür ederim arkadaşlar destekleriniz için sorun çözüldü.