• 04-12-2017, 14:56:35
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba arkadaşlar;
    Codeigniter'da bir proje geliştiriyorum. Kafama takılan bir konuda yardımınızı rica ediyorum. Kısaca şöyle izah edeyim:
    tools_helper.php dosyamda şöyle bir helper fonksiyonu tanımladım:
    function blok_haber($haber_kat){
        $ci =& get_instance();
        $sonuc = $ci->db->select('id, kategori, tarih, baslik, resim, durum')->from('haberler')
            ->where('kategori',$kaber_kat)->order_by('tarih','desc')->limit('4, 0')
            ->where('durum','1')
            ->get()->result_array();
        return $sonuc;
    }
    Bu fonksiyonu asayfa.php ve include'larında farklı yerlerde sadece KATEGORİLERİNİ ve LİMİTLERİNİ değişken atayarak değiştirip kullanmak istiyorum.
    <?php $haber_kat = $veri['haber_katid']; $blokahaberleri = blok_haber($haber_kat); foreach ($blokahaberleri as $veri_haber) { ?>
    // kodlarım...
    <?php } ?>
    KATEGORİ kısmını gördüğünüz gibi değişken atayarak çözdüm ve istediğim kategoriden habereri alıp view dosyamda ekrana basıyorum. Tek sıkıntım aynı şeyi LIMIT için nasıl yapabilirim? Helper'daki fonksiyona birden fazla değişken atayabilir miyim?
    Örneğin, LIMIT(4, 0) yerine LIMIT($adet, $basla) şeklinde değişkenleri nasıl tanımlayabilir ve view dosyamdaki foreach döngüsünde bu $adet ve $basla değişkenlerini ne şekilde fonksiyona gönderebilirim?
    Yardımlarınız ve önerileriniz için şimdiden teşekkürler.
  • 04-12-2017, 15:06:16
    #2
    İstediğin kadart parametre atayabilirsin,Varsayılan bir değer atayıp kullanabilirsin istersen sayfalarda kendin bir değer gönderebilirsin.
    function blok_haber($haber_kat,$limit=10,$sayfa=1){
        $ci =& get_instance();
        $sonuc = $ci->db->select('id, kategori, tarih, baslik, resim, durum')->from('haberler')
            ->where('kategori',$kaber_kat)->order_by('tarih','desc')->limit('4, 0')
            ->where('durum','1')
            ->get()->result_array();
        return $sonuc;
    }
  • 04-12-2017, 15:12:13
    #3
    CodeMaster_ adlı üyeden alıntı: mesajı görüntüle
    İstediğin kadart parametre atayabilirsin,Varsayılan bir değer atayıp kullanabilirsin istersen sayfalarda kendin bir değer gönderebilirsin.
    function blok_haber($haber_kat,$limit=10,$sayfa=1){ $ci =& get_instance(); $sonuc = $ci->db->select('id, kategori, tarih, baslik, resim, durum')->from('haberler') ->where('kategori',$kaber_kat)->order_by('tarih','desc')->limit('4, 0') ->where('durum','1') ->get()->result_array(); return $sonuc; }
    Üstadım, cevabınız için teşekkürler. Ben sayfadan değer göndermek istiyorum. Gönderdiğim koddaki fonksiyon ve view'daki foreach kod satırında bunları nasıl tanımlayacağımı gösterebilir misiniz? Ben denemeler yaptım ama hatalar vermişti malesef.
  • 04-12-2017, 15:27:21
    #4
    Denemedim ama mantık olarak yazdım çalışacaktır inşaAllah. Yapmak istediğin sayfalamaysa eğer

    function blok_haber($haber_kat,$sayfa=1,$limit=10)
        {    
            $total_page = $ci->db->select('id')->from('haberler')->where('kategori',$kaber_kat)->where('durum','1')->get()->num_rows();
            
            $page = isset($sayfa) ? (int) $sayfa : 1;
            if($page < 1) $page = 1;        
            if($page > $total_page) $page = $total_page;         
            $limit = ($page - 1) * $limit;
            
            $ci    =& get_instance();
            $sonuc = $ci->db->select('id, kategori, tarih, baslik, resim, durum')->from('haberler')
                ->where('kategori',$kaber_kat)->order_by('tarih','desc')->limit($limit.','.$page)
                ->where('durum','1')
                ->get()->result_array();
                
            return $sonuc['result'=>$sonuc,'total_page'=>$total_page];
        }
        
        $haber_kat      = $veri['haber_katid'];
        $page           = ($_GET['page']) ? $_GET['page'] : 1;
        $blokahaberleri = blok_haber($haber_kat,$page); 
        $blokahaberleri = $blokahaberleri['result'];
        $toplam_sayfa   = $blokahaberleri['total_page'];
        
        foreach ($blokahaberleri as $veri_haber) 
        {
            
        }
        
        for($s = 1; $s <= $toplam_sayfa; $s++) {
           if($sayfa == $s) { 
              echo $s . ' '; 
           } else {
              echo '<a href="?page=' . $s . '">' . $s . '</a> ';
           }
        }
  • 04-12-2017, 15:48:25
    #5
    CodeMaster_ adlı üyeden alıntı: mesajı görüntüle
    Denemedim ama mantık olarak yazdım çalışacaktır inşaAllah. Yapmak istediğin sayfalamaysa eğer

    function blok_haber($haber_kat,$sayfa=1,$limit=10) { $total_page = $ci->db->select('id')->from('haberler')->where('kategori',$kaber_kat)->where('durum','1')->get()->num_rows(); $page = isset($sayfa) ? (int) $sayfa : 1; if($page < 1) $page = 1; if($page > $total_page) $page = $total_page; $limit = ($page - 1) * $limit; $ci =& get_instance(); $sonuc = $ci->db->select('id, kategori, tarih, baslik, resim, durum')->from('haberler') ->where('kategori',$kaber_kat)->order_by('tarih','desc')->limit($limit.','.$page) ->where('durum','1') ->get()->result_array(); return $sonuc['result'=>$sonuc,'total_page'=>$total_page]; } $haber_kat = $veri['haber_katid']; $page = ($_GET['page']) ? $_GET['page'] : 1; $blokahaberleri = blok_haber($haber_kat,$page); $blokahaberleri = $blokahaberleri['result']; $toplam_sayfa = $blokahaberleri['total_page']; foreach ($blokahaberleri as $veri_haber) { } for($s = 1; $s <= $toplam_sayfa; $s++) { if($sayfa == $s) { echo $s . ' '; } else { echo '<a href="?page=' . $s . '">' . $s . '</a> '; } }
    Sayın hocam yapmak istediğim sayfalama değildi. Ama işlemin mantığını çözmemde yardımcı oldunuz. Gece sakin kafayla projemde deneyeceğim. Yardımınız için çok teşekkür ederim.