• 22-07-2022, 17:03:30
    #1
    Selamlar Arkadaşalar.
    Bir datadable üzerinde server-side programlama yapıyorum.

    gitHub'ta emran adlı arkadaşın hazırlamış olduğu kütüphaneyi kullanıyorum.
    GITHUB EMRAN

    Sorum Şu
    Şimdi aşağıdaki kod bloğu çalışıyor. Ama mantıken veritabanı tablosundan tek bir sütunu alıyor.
    Burda benim koşul eklemem gerekli.
    $durum == 1 ise onaylayici_2_status sütununa geç orayı sorgula gibi birşey.

    iç içe bir kaçtane sorgu yapmam gerekiyor bu şekilde.
    Ne denediysem beceremedim. Araştırdım fakat baktığım kaynakları ya anlamadım ya da yetersiz geldi.

    Not: else koşulunu eklediğimde 'db' => '`sa`.`onaylayici_2_status`' gibi sorgu çalışmıyor.

    Yardımcı olabilecek arkadaşlar bir el atarsa sevinirim.
    array( 'db' => '`sa`.`onaylayici_1_status`',  'dt' => 7, 'field' => 'onaylayici_1_status',
            'formatter' => function ($durum, $row) {
                if ($durum == "0") {
                    $durum ="Onay Bekleniyor";
                }
                return $durum;            
            }
    
    
        )
  • 22-07-2022, 17:32:40
    #2
    Merhaba, kütüphaneyi incelemedim ve yapmak istediğiniz eğer buysa aşağıya örneğini bırakıyorum.
    array( 'db' => '`sa`.`onaylayici_1_status`',  'dt' => 7, 'field' => 'onaylayici_1_status',
            'formatter' => function ($durum, $row) {
                if ($durum == "0") {
                    $durum ="Onay Bekleniyor";
                }elseif(durum == "1"){  
                    array( 'db' => '`sa`.`onaylayici_1_status`',  'dt' => 7, 'field' => 'onaylayici_2_status', 'formatter' => function ($durum, $row) {
                           if ($durum == "0") {
                              $durum ="Onay Bekleniyor";
                          }
                         return $durum;            
               }
        )
                }
                return $durum;            
            }
        )
  • 22-07-2022, 17:47:12
    #3
    efekoca adlı üyeden alıntı: mesajı görüntüle
    Merhaba, kütüphaneyi incelemedim ve yapmak istediğiniz eğer buysa aşağıya örneğini bırakıyorum.
    array( 'db' => '`sa`.`onaylayici_1_status`',  'dt' => 7, 'field' => 'onaylayici_1_status',
            'formatter' => function ($durum, $row) {
                if ($durum == "0") {
                    $durum ="Onay Bekleniyor";
                }elseif(durum == "1"){  
                    array( 'db' => '`sa`.`onaylayici_1_status`',  'dt' => 7, 'field' => 'onaylayici_2_status', 'formatter' => function ($durum, $row) {
                           if ($durum == "0") {
                              $durum ="Onay Bekleniyor";
                          }
                         return $durum;            
               }
        )
                }
                return $durum;            
            }
        )

    bunu denemiştim. Bir işe yaramamıştı.
  • 23-07-2022, 14:40:44
    #4
    Tam soruyu anlamadım açıkcası, neden bu paketi kullandığınızı da. Daha kolay yapabileceğiniz bir çok db yönetim paketleri mevcut. Ama bu paketi kullanmak istiyorsanız detaylı bilgi verebilirseniz yardımcı olmaya çalışayım.
  • 23-07-2022, 15:06:26
    #5
    yvolkan adlı üyeden alıntı: mesajı görüntüle
    Tam soruyu anlamadım açıkcası, neden bu paketi kullandığınızı da. Daha kolay yapabileceğiniz bir çok db yönetim paketleri mevcut. Ama bu paketi kullanmak istiyorsanız detaylı bilgi verebilirseniz yardımcı olmaya çalışayım.
    Aslında vazgeçtim. Daha kolay bir yöntem buldum. Serverside olarak kullanmak zorundayım. Çükü databasede 5000den fazla kayıt var ve her geçen gün artıyor. Dolayısı ile normal foreach dögüsüyle çekersem bütün verileri birden çekmeye çalışıyor ve sonucunda sayfa açılış hızı baya düşüyor.

    Fakat Tafun Erbilen diye bir arkadaşın yöntemiyle çözdüm olayı. Teşekkür ederim hocam
  • 23-07-2022, 22:33:21
    #6
    emrezsy adlı üyeden alıntı: mesajı görüntüle
    Aslında vazgeçtim. Daha kolay bir yöntem buldum. Serverside olarak kullanmak zorundayım. Çükü databasede 5000den fazla kayıt var ve her geçen gün artıyor. Dolayısı ile normal foreach dögüsüyle çekersem bütün verileri birden çekmeye çalışıyor ve sonucunda sayfa açılış hızı baya düşüyor.

    Fakat Tafun Erbilen diye bir arkadaşın yöntemiyle çözdüm olayı. Teşekkür ederim hocam
    Hocam bende bunla uğraşıyorum, link atar mısınız acaba çözüme dair
  • 24-07-2022, 10:19:40
    #7
    Bende scriptlerimde datatables kullanıyorum. server side classı bana çok karmaşık gelmişti. class kullanmadan ajax postun yapıldığı her tablo istekleri için. Şu yapıda bir kodum var. Kendinize göre düzenleyebilirsiniz.
    if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' and $_SERVER['HTTP_REFERER'] == site_url('admin-duyurular')) {
        $toplam_veri = $db->from('menu')
        ->select('count(id) as total')
        ->total();
        $query = '';
        $output = array();
        $query .= 'SELECT * FROM duyurular ';
    
        if(isset($_POST["search"]["value"])) {
            $query .= 'WHERE duyuru LIKE "%'.$_POST["search"]["value"].'%"';
            $query .= 'OR link LIKE "%'.$_POST["search"]["value"].'%"';
        }
        $columns = array(
            0 => 'duyuru',
            1 => 'link'
        );
     
        if(isset($_POST["order"])) {
            $query .= ' ORDER BY '. $columns[$_POST['order'][0]['column']].' '.$_POST['order']['0']['dir'].' ';
        } else {
            $query .= ' ORDER BY id DESC ';
        }
        if($_POST["length"] != -1) {
            $query .= 'LIMIT '.$_POST['start'].','.$_POST['length'];
        }
        $statement = $db->prepare($query);
        $statement->execute();
        $result = $statement->fetchAll();
        $data = array();
        $filtered_rows = $statement->rowCount();
        foreach($result as $row) {
            $sub_array = array();
    
            $sub_array[] = $row["duyuru"];
            $sub_array[] = $row["link"];
            $sub_array[] = '<button type="button" name="sil" id="'.$row["id"].'" class="btn btn-danger btn-xs sil"><i class="fa fa-trash"></i></button>';
            $data[] = $sub_array;
        }
        $output = array(
            "draw" => intval($_POST["draw"]),
            "recordsTotal" => $filtered_rows,
            "recordsFiltered" => $toplam_veri,
            "data" => $data
        );
        echo json_encode($output);
    }
    Sonuç Mükemmel

    https://www.youtube.com/watch?v=XQsUYC67SE0
  • 30-07-2022, 10:10:26
    #8
    RuzgarISIK adlı üyeden alıntı: mesajı görüntüle
    Bende scriptlerimde datatables kullanıyorum. server side classı bana çok karmaşık gelmişti. class kullanmadan ajax postun yapıldığı her tablo istekleri için. Şu yapıda bir kodum var. Kendinize göre düzenleyebilirsiniz.
    if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' and $_SERVER['HTTP_REFERER'] == site_url('admin-duyurular')) {
        $toplam_veri = $db->from('menu')
        ->select('count(id) as total')
        ->total();
        $query = '';
        $output = array();
        $query .= 'SELECT * FROM duyurular ';
    
        if(isset($_POST["search"]["value"])) {
            $query .= 'WHERE duyuru LIKE "%'.$_POST["search"]["value"].'%"';
            $query .= 'OR link LIKE "%'.$_POST["search"]["value"].'%"';
        }
        $columns = array(
            0 => 'duyuru',
            1 => 'link'
        );
     
        if(isset($_POST["order"])) {
            $query .= ' ORDER BY '. $columns[$_POST['order'][0]['column']].' '.$_POST['order']['0']['dir'].' ';
        } else {
            $query .= ' ORDER BY id DESC ';
        }
        if($_POST["length"] != -1) {
            $query .= 'LIMIT '.$_POST['start'].','.$_POST['length'];
        }
        $statement = $db->prepare($query);
        $statement->execute();
        $result = $statement->fetchAll();
        $data = array();
        $filtered_rows = $statement->rowCount();
        foreach($result as $row) {
            $sub_array = array();
    
            $sub_array[] = $row["duyuru"];
            $sub_array[] = $row["link"];
            $sub_array[] = '<button type="button" name="sil" id="'.$row["id"].'" class="btn btn-danger btn-xs sil"><i class="fa fa-trash"></i></button>';
            $data[] = $sub_array;
        }
        $output = array(
            "draw" => intval($_POST["draw"]),
            "recordsTotal" => $filtered_rows,
            "recordsFiltered" => $toplam_veri,
            "data" => $data
        );
        echo json_encode($output);
    }
    Sonuç Mükemmel

    https://www.youtube.com/watch?v=XQsUYC67SE0
    Hocam bu kodunu mümkünse html tarafı ile birlikte atma imkanınız var mı acaba