• 23-05-2018, 15:17:19
    #1
    <?
                    $sql = $db->prepare("SELECT *  FROM yazi  order by id DESC LIMIT 10");
                    $sql->execute();
                    while($anasayfa=$sql->fetch(PDO::FETCH_ASSOC)) {
                    echo $anasayfa['id'].' ==> '.$anasayfa["permazaman"].'</br>';
                    }
    ?>
    // ÇIKTI
    135 ==> 2018/05
    134 ==> 2018/05
    133 ==> 2018/05
    132 ==> 2018/04
    131 ==> 2018/04
    130 ==> 2018/04
    129 ==> 2018/03
    128 ==> 2018/03

    Merhaba arkadaşlar ufak bir sorunum var umarım yardımcı olursunuz olayım şöyle, veri listeleme yaparken aynı zamana ait verileri tek div'de toplamam gerekiyor(hiyerarşik düzeni zamanla sağlamam lazım) ve zamanı bir kez yazdırmam lazım aşağıda ulaşmak istediğim çıktıyı paylaştım şimdiden emek veren herkese teşekkürler.


    // İstediğim çıktı
    135 ==> 2018/05
        134 ==>
        133 ==>
    132 ==> 2018/04
       131 ==>
    129 ==> 2018/03
       128 ==>
  • 23-05-2018, 15:41:03
    #2
    Olay şöyle tam olarak :

    Öncelikle veriyi çektirip, bir tarih dizisi oluşturun. Sonra çektiğiniz verileri foreachten geçirin. Foreachten gelen tarihleri, tarih dizisi içerisinde arattırın. Yoksa eklesin önce. Daha sonra o tarih dizisine eklediğiniz tarihlerin altına dizi ekleyip, istediğiniz verileri o tarihlere yükleyin. Veriyi tam olarak göremediğim için tam olarak kod yapısını göremiyorum. Tek tarih alma olayını aşağıda anlattım.

    <?php
    
    $date = [];
    $data = [135 => "2018/08", 136 => "2018/08", 137 => "2018/09"];
    foreach ($data as $key=>$val){
         //  BURADA TARIH DIZISI ICINDE TARIHIMIZ YOKSA EKLEMESINI ISTEDIK
         if(!in_array($val, $date))
              array_push($date, $val);
    }
  • 23-05-2018, 17:07:39
    #3
    Merhaba,
    Php Data Object sınıfını kullanıyorsan öncelikle manual sayfasına bakmalısın.
    http://php.net/manual/en/book.pdo.php

    $sql = $db->prepare("SELECT * FROM yazi order by id DESC LIMIT 10");
    $sql->execute();

    prepare çalıştırılacak sql sorgusunu hazırlamak için kullanır, sorgunuz dışarıdan bir parametre almıyor hazır durumda.

    $sql = $db->query("SELECT * FROM yazi order by id DESC LIMIT 10");

    daha doğru bir kullanım.

    gruplama yapmak istiyosun

    while($anasayfa=$sql->fetch(PDO::FETCH_ASSOC)) {

    kullandığın fetch methodunun gruplama desteği var mı?
    http://php.net/manual/en/pdostatement.fetch.php

    fetch_style alabileceği parametrele bakarsanız gruplama desteklemiyor. tek bir satır veri döndüren bir methodun desteklememesi olağan.

    http://php.net/manual/en/pdostatement.fetchall.php

    fetch_style alabileceği parametrelere bakarsanız (PDO::FETCH_GROUP) gruplama desteği bulunuyor.

    $sql = $db->query("SELECT tarih_sutunu AS grup_icin,* FROM yazi order by id DESC LIMIT 10");
    $rows = $sql->fetchAll(PDO::FETCH_GROUP);

    birden fazla parametre özelliği eklemek için bitwise-OR kullanın diyor. bit seviyesinde OR (veya lojik kapısı) matematiksel olarak toplama işlemidir.

    $result = $sql->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);

    foreach ($result as $tarih=>$rows) {
    }

    iyi çalışmalar