• 22-04-2015, 18:59:41
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba,

    Birkaç gündür çözemediğim bir problemim var, neredeyse denemediğim hiç bir yol kalmadı. Umarım çözüm buluruz.

    <?php
    error_reporting(E_ALL & ~E_NOTICE);
    require_once('header.php');
    require_once(basename(($_GET['page']!='' ? $_GET['page'] : 'home') . '.php'));
    require_once('footer.php');
    ?>
    şeklinde bir index sayfam var.

    menu.php dosyamdaki linklere ?page=post&id=6 gibi ulaşıyorum (id ler db den geliyor vs)

    buraya kadar bir sorun yoktu ancak ne zaman pagination a ihtiyaç duydum sorunlar baş gösterdi.

    ?page=category&kategori_adi=Deneme

    şeklinde Deneme kategorime girdiğimde

    $page = "?page=category&kategori_adi=$kategori_adi";
    $limit = "10"; // Kaç kayıtta bir sayfalama yapılacak ?
    $sayfa = $_GET['paged'];
    
    if(empty($_GET['paged'])) { $paged ="1"; }
    
    if(!is_numeric($_GET['paged'])) { header("location:$page&paged=1"); }
    şeklinde bir başlangıcım var. mantık olarak paged değerim gelmediyse veya sayısal değilse 1 e eşitleyip header'da verdiğim yere gitmesini istiyorum.

    ama sonuç pek öyle olmuyor

    Warning: Cannot modify header information - headers already sent by (output started at

    şeklinde bir hata veriyor.

    index sayfamı
    <?php
    error_reporting(E_ALL & ~E_NOTICE);
    session_start();
    require_once('header.php');
    require_once(basename(($_GET['page']!='' ? $_GET['page'] : 'home') . '.php'));
    require_once('footer.php');
    ?>
    şeklinde düzenleyip session_start koyduğumda ve sayfalama işlemi yapmaya başlamadan önce session_destroy(); eklediğimde bu kez

    Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in

    Warning: Cannot modify header information - headers already sent by (output started at

    hatalarını almaya başladım ve tıkandım

    dosyalarım utf-8 bomsuz (bazı yerlerde bu şekilde çözülebileceği yazıyordu ama çözüm olmadı)

    Yardım aranıyorum
  • 22-04-2015, 23:03:29
    #2
    oguzhan306 adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Birkaç gündür çözemediğim bir problemim var, neredeyse denemediğim hiç bir yol kalmadı. Umarım çözüm buluruz.

    <?php
    error_reporting(E_ALL & ~E_NOTICE);
    require_once('header.php');
    require_once(basename(($_GET['page']!='' ? $_GET['page'] : 'home') . '.php'));
    require_once('footer.php');
    ?>
    şeklinde bir index sayfam var.

    menu.php dosyamdaki linklere ?page=post&id=6 gibi ulaşıyorum (id ler db den geliyor vs)

    buraya kadar bir sorun yoktu ancak ne zaman pagination a ihtiyaç duydum sorunlar baş gösterdi.

    ?page=category&kategori_adi=Deneme

    şeklinde Deneme kategorime girdiğimde

    $page = "?page=category&kategori_adi=$kategori_adi";
    $limit = "10"; // Kaç kayıtta bir sayfalama yapılacak ?
    $sayfa = $_GET['paged'];
    
    if(empty($_GET['paged'])) { $paged ="1"; }
    
    if(!is_numeric($_GET['paged'])) { header("location:$page&paged=1"); }
    şeklinde bir başlangıcım var. mantık olarak paged değerim gelmediyse veya sayısal değilse 1 e eşitleyip header'da verdiğim yere gitmesini istiyorum.

    ama sonuç pek öyle olmuyor

    Warning: Cannot modify header information - headers already sent by (output started at

    şeklinde bir hata veriyor.

    index sayfamı
    <?php
    error_reporting(E_ALL & ~E_NOTICE);
    session_start();
    require_once('header.php');
    require_once(basename(($_GET['page']!='' ? $_GET['page'] : 'home') . '.php'));
    require_once('footer.php');
    ?>
    şeklinde düzenleyip session_start koyduğumda ve sayfalama işlemi yapmaya başlamadan önce session_destroy(); eklediğimde bu kez

    Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in

    Warning: Cannot modify header information - headers already sent by (output started at

    hatalarını almaya başladım ve tıkandım

    dosyalarım utf-8 bomsuz (bazı yerlerde bu şekilde çözülebileceği yazıyordu ama çözüm olmadı)

    Yardım aranıyorum
    Verdiği hatanın nedeni header fonksiyonundan önce herhangi bir çıktının olmaması gerektiğindendir.

    error_reporting(E_ALL & ~E_NOTICE); ile hataları açıyorsunuz herhangi bir noksanda beni uyar diye belirtmişsiniz.

    $sayfa = $_GET['paged']; 
    
    if(empty($_GET['paged'])) { $paged ="1"; }

    bu kısımda $_GET['paged'] değişkeni tanımlanmadan geldiği için hatalarda açık olduğundan bu değişken tanımlı değil uyarısını vermekte sen bunu yönlendirmeden dolayı farketmiyor olabilirsin.

    Çözüm için iki yöntem var.

    1- error_reporting(E_ALL & ~E_NOTICE); kısmını error_reporting(0); olarak düzenlersen.

    2-

    $sayfa = $_GET['paged']; 
    
    if(empty($_GET['paged'])) { $paged ="1"; }
    kısmını

    if ( isset($_GET['paged']) && $_GET['paged'] ){
    $sayfa = $_GET['paged'];
    } else {
    $sayfa = 1;
    }
    olarak değiştirirsen sorun düzelecektir
  • 23-04-2015, 12:12:10
    #3
    Bu şekilde çalıştı (önce sql hatası verdi ama değişken adındanmış çözdüm )

    Ama şimdi sanıyorum benim sayfalama kodumda sorun var.

    <ul class="pagination clearfix page_margin_top_section">
    					<li class="left">
    						<a href="<?php echo $page; ?>&paged=<?php echo ($paged > 1) ? $paged-1 : "#"; ?>" title="">&nbsp;</a>
    					</li>
    					
    					<? for($i=1; $i < $kac_tane; $i++) { ?>
    					<li <?php echo ($i == $paged ) ? " class=\"selected\"": null; ?>>
    					<?php echo "<a href=".$page."&paged=$i>$i</a>"; ?>
    					</li> 
    					<? } ?>
    					
    					<li class="right">
    					<a href="<?php echo $page; ?>&paged=<?php echo $paged+1; ?>" title="">&nbsp;</a>
    					</li>
    				</ul>
    şeklinde de sayfa numaralarım ve önceki sonraki kısmı çıkıyor. Ama sorun şu mesela son sayfa sayısı 3 diyelim sağ oku (sonraki) tıkladığımda 4 çıkıyor ama haliyle 4 yok. 1. sayfadayken sol ok # oluyor son sayfadayken sağ ok # linki olması için ne yapmalıyım?
  • 23-04-2015, 13:41:49
    #4
     <li class="right"> 
                        <a href="<?php echo $page; ?>&paged=<?php echo ($paged < $toplamSayfaSayisi) ? $paged+1 : "#"; ?>" title="">&nbsp;</a> 
                        </li>
    $toplamSayfaSayisi değişkenine toplam kaç sayfa olacağını belirtirsen $paged değişkenin ile karşılaştırıp sonuncumu anlayabilirsin.

    ToplamSayfa = Toplam içerik sayısı / her sayfada gösterilecek içerik sayısı

    şeklinde alabilirsin

    İzlediğin yolun çok doğru olduğunu söyleyemiyorum . Sayfalama için bir çok hazır fonskyon bulabilirsin. Bu fonksiyonları inceleyip yapını düzeltmelisin.
  • 23-04-2015, 13:53:57
    #5
    en doğrusunu yaptım diye bir iddiam yok, gelişime açığım, doğruyu bulalım o zaman

    $page = "?page=category&kategori_adi=$kategori_adi";
    $limit = "10"; 
    
    // Bu bölüm yardımla geldi teşekkürler :)
    if ( isset($_GET['paged']) && $_GET['paged'] ){ 
    $paged = $_GET['paged']; 
    } else { 
    $paged = 1; 
    } 
    
    
    $girdi = mysql_query("	SELECT sorgum WHERE Kategoriler.kategori_adi='$kategori_adi'");
    $sayi = mysql_num_rows($girdi); // toplam mySQL kayıt sayısı
    $kac_tane = $sayi / $limit; // Kaç sayfa olacak
    
    if($kac_tane/$limit!="0") { $kac_tane++; }
     
    $son = ($paged-1)*$limit;
    $query = mysql_query("SELECT sorgum LIMIT $son,$limit"); 
      
    ?>
    şeklinde sayı buluyorum vs vs

    ve

    <ul class="pagination clearfix page_margin_top_section"> 
                        <li class="left"> 
                            <a href="<?php echo $page; ?>&paged=<?php echo ($paged > 1) ? $paged-1 : "#"; ?>" title="">&nbsp;</a> 
                        </li> 
                         
                        <? for($i=1; $i < $kac_tane; $i++) { ?> 
                        <li <?php echo ($i == $paged ) ? " class=\"selected\"": null; ?>> 
                        <?php echo "<a href=".$page."&paged=$i>$i</a>"; ?> 
                        </li>  
                        <? } ?> 
                         
                        <li class="right"> 
                        <a href="<?php echo $page; ?>&paged=<?php echo $paged+1; ?>" title="">&nbsp;</a> 
                        </li> 
                    </ul>
    şeklinde de bölünmüş sayfalar oluşturuyorum. Bunun neresinde yol hatası olabilir (gerçekten anlamak için soruyorum bazen yazı dilinde yanlış anlaşmalar olabiliyor)

    bu sistemde en büyük problemim sağ okun hep +1 olarak devam etmesi (sayfa sayısı sona erse bile)
  • 24-04-2015, 10:37:57
    #6
    Daha iyi nasıl olabilir için
    https://github.com/selcodiyebiri/sPagination.Class.PHP

    Senin kodunun devamı için

    $page = "?page=category&kategori_adi=$kategori_adi"; 
    $limit = "10";  
    
    // Bu bölüm yardımla geldi teşekkürler :) 
    if ( isset($_GET['paged']) && $_GET['paged'] ){  
    $paged = $_GET['paged'];  
    } else {  
    $paged = 1;  
    }  
    
    
    $girdi = mysql_query("    SELECT sorgum WHERE Kategoriler.kategori_adi='$kategori_adi'");
     $sayi = mysql_num_rows($girdi); // toplam mySQL kayıt sayısı 
    $toplam_sayfa= $sayi / $limit; 
    $kac_tane = $sayi / $limit; // Kaç sayfa olacak 
    
    if($kac_tane/$limit!="0") { $kac_tane++; } 
      
    $son = ($paged-1)*$limit; 
    $query = mysql_query("SELECT sorgum LIMIT $son,$limit");  
       
    ?>
    <ul class="pagination clearfix page_margin_top_section"> 
                        <li class="left"> 
                            <a href="<?php echo $page; ?>&paged=<?php echo ($paged > 1) ? $paged-1 : "#"; ?>" title="">&nbsp;</a>
                         </li> 
                         
                        <? for($i=1; $i < $kac_tane; $i++) { ?> 
                        <li <?php echo ($i == $paged ) ? " class=\"selected\"": null; ?>>
                         <?php echo "<a href=".$page."&paged=$i>$i</a>"; ?> 
                        </li>  
                        <? } ?> 
                         
                        <li class="right"> 
                        <a href="<?php echo $page; ?>&paged=<?php echo ($paged < $toplam_sayfa) ? $paged+1 : "#"; ?>" title="">&nbsp;</a> 
                        </li>
                    </ul>
    şeklinde düzenleyebilirsin. $kac_tane değişkenini niye arttırıyosun bilemediğim için $toplam_sayfa değişkenine toplamda olacak sayfa sayısını verip sonraki linkinde kullandım.
  • 24-04-2015, 17:35:08
    #7
    Link gerçekten çok işime yaradı çok teşekkürler
  • 26-04-2015, 18:25:51
    #8
    scriptin başına

    <?php ob_start(); ?>

    en sonuna

    <?php ob_end_flush(); ?>

    koyarsan bir daha Warning: Cannot modify header information - headers already sent by hatası almazsın.