• 13-03-2013, 13:17:16
    #1
    Üyeliği durduruldu
    Merhaba arkadaşlar php de ana sayfaya içerikleri çekiyorum ama bir sorun var.

    LİMİT fonksiyonu ile sadece 5 tane gösteriyorum geride kalan konular gözükmüyor

    bloglarda olduğu gibi yazıların altında 1 2 3 4 ... gibi sayfa numaraları nasıl yaparım ?

    Yani 1. sayfada ise 5 konu ikinci ise diğer 5 ama bunu otomatik kendi tanımlamalı.

    umarım anlata bilmişimdir.
  • 13-03-2013, 13:44:38
    #2
    ŞU AN TÜM SİTELERİMDE DE KULLANDIĞIM ARAMA VE KATEGORİLERİ BİRDEN FAZLA SAYFADA LİSTELEME KODUNU PAYLAŞIYORUM.

    GELİŞTİRİLEBİLİR.



    <?php 
    $kat_sec = $k_id;
    $bassorgu = mysql_query("SELECT * FROM hbrci WHERE gizle = '0' AND kategori = '$kat_sec' ORDER by id DESC");
    $toplam_sayi = mysql_num_rows ( $bassorgu );			
    $sayfa_sayisi = ceil($toplam_sayi/18); // 18, sayfada göstericegimiz veri sayisi..
    $sayfa = $_GET[sayfa];
    if ( $sayfa == 0 ) {
    $sayfa=1;
    }
    if ($sayfa > $sayfa_sayisi ) {
    $sayfa = $sayfa_sayisi;
    }
    $k = (($sayfa-1)*18);
    $strSQL ="SELECT * FROM hbrci WHERE kategori = '$kat_sec' ORDER BY id DESC LIMIT $k,18";
    $bassorgu =  mysql_query($strSQL);
    while($basveri = mysql_fetch_array( $bassorgu )) { 
    $b_baslik = $basveri["baslik"];
    $b_id = $basveri["id"];
    $b_giris = $basveri["giris"];
    $b_resim = $basveri["resim"];
    $b_tarih = $basveri["tarih"];
    $b_saat = $basveri["saat"];
    ?>
    <div class="">
    <h4><a href="/<?=sil($k_kat)?>/<?=$b_id?>-<?=sil($b_baslik)?>.html"><?=$b_baslik?></a></h4>
    <p>
    <a href="/<?=sil($k_kat)?>/<?=$b_id?>-<?=sil($b_baslik)?>.html">
    <img src="/resim/<?=$b_resim?>" width="100" height="75" alt="" /></a><?=(substr($b_giris,0,100)) ?></p>
    </div>
    <?php } ?>
    bu kodda bir sayfada 18 dosya listelenir.
    sayfalamak için aşağıdaki bölümü de sitenize ekleyin.
    Gerekli düzenlemeleri mysql a göre yapın.

    SAYFALAMA

    <?php
    echo "";
    	echo '<li class="first"><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa=1">Birinci </a></li> '; 
    if ($sayfa == 1 ) {
    if ($sayfa_sayisi==1) { echo '<li><a href="#">'.$sayfa.'</a></li>'; }
    elseif ($sayfa_sayisi==2) { echo '<li><a href="#">'.$sayfa.'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+1).'">'.($sayfa
    
    +1).'</a></li>'; }
    elseif ($sayfa_sayisi==3) { echo '<li><a href="#">'.$sayfa.'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+1).'">'.($sayfa
    
    +1).'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+2).'">'.($sayfa+2).'</a></li>'; }
    elseif ($sayfa_sayisi==4) { echo '<li><a href="#">'.$sayfa.'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+1).'">'.($sayfa
    
    +1).'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+2).'">'.($sayfa+2).'</a></li> <li><a href="/sayfamiz.php?icliste='.
    
    ($kat_sec).'&sayfa='.($sayfa+3).'">'.($sayfa+3).'</a></li>'; }
    else {
    echo '<li><a href="#">'.$sayfa.'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+1).'">'.($sayfa+1).'</a></li> <li><a 
    
    href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+2).'">'.($sayfa+2).'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa
    
    +3).'">'.($sayfa+3).'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+4).'">'.($sayfa+4).'</a></li>';
    }}
    elseif ($sayfa == 2 ) {
    if ($sayfa_sayisi==2) { echo '<li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-1).'">'.($sayfa-1).'</a></li> <li><a href="#">'.
    
    $sayfa.'</a></li>'; }
    elseif ($sayfa_sayisi==3) { echo '<li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-1).'">'.($sayfa-1).'</a></li> <li><a href="#">'.$sayfa.' 
    
    </a></li><li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+1).'">'.($sayfa+1).'</a></li>'; }
    elseif ($sayfa_sayisi==4) { echo '<li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-1).'">'.($sayfa-1).'</a></li> <li><a href="#">'.$sayfa.' 
    
    </a></li><li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+1).'">'.($sayfa+1).'</a></li> <li><a href="/sayfamiz.php?icliste='.
    
    ($kat_sec).'&sayfa='.($sayfa+2).'">'.($sayfa+2).'</a></li>'; }
    else {
    echo '<li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-1).'">'.($sayfa-1).'</a></li> <li><a href="#">'.$sayfa.' </a></li><li><a 
    
    href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+1).'">'.($sayfa+1).'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa
    
    +2).'">'.($sayfa+2).'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+3).'">'.($sayfa+3).'</a></li>';
    }}
    elseif ($sayfa == $sayfa_sayisi) {
    if ($sayfa_sayisi==3) { echo '<li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-2).'">'.($sayfa-2).'</a></li> <li><a href="/sayfamiz.php?
    
    icliste='.($kat_sec).'&sayfa='.($sayfa-1).'">'.($sayfa-1).'</a></li> <li><a href="#">'.($sayfa).'</a></li>'; }
    elseif ($sayfa_sayisi==4) { echo '<li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-3).'">'.($sayfa-3).'</a></li> <li><a 
    
    href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-2).'">'.($sayfa-2).'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-
    
    1).'">'.($sayfa-1).'</a></li> <li><a href="#">'.($sayfa).'</a></li>'; }
    else {
    echo '<li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-4).'">'.($sayfa-4).'</a></li> <li><a href="/sayfamiz.php?icliste='.
    
    ($kat_sec).'&sayfa='.($sayfa-3).'">'.($sayfa-3).'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-2).'">'.($sayfa-2).'</a></li> 
    
    <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-1).'">'.($sayfa-1).'</a></li> <li><a href="#">'.($sayfa).'</a></li>';
    }}
    elseif ($sayfa == ($sayfa_sayisi-1) ) {
    if ($sayfa_sayisi==4) { echo '<li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-2).'">'.($sayfa-2).'</a></li> <li><a href="/sayfamiz.php?
    
    icliste='.($kat_sec).'&sayfa='.($sayfa-1).'">'.($sayfa-1).'</a></li> <li><a href="#">'.($sayfa).'</a></li> <li><a href="/sayfamiz.php?icliste='.
    
    ($kat_sec).'&sayfa='.($sayfa+1).'">'.($sayfa+1).'</a></li>'; }
    else {
    echo '<li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-3).'">'.($sayfa-3).'</a></li> <li><a href="/sayfamiz.php?icliste='.
    
    ($kat_sec).'&sayfa='.($sayfa-2).'">'.($sayfa-2).'</a></li> <li><a href="?/sayfamiz.phpicliste='.($kat_sec).'&sayfa='.($sayfa-1).'">'.($sayfa-1).'</a></li> 
    
    <li><a href="#">'.($sayfa).'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+1).'">'.($sayfa+1).'</a></li>';
    }}
    else {
    echo '<li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa-2).'">'.($sayfa-2).'</a></li> <li><a href="/sayfamiz.php?icliste='.
    
    ($kat_sec).'&sayfa='.($sayfa-1).'">'.($sayfa-1).'</a></li> <li><a href="#">'.($sayfa).'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.
    
    ($sayfa+1).'">'.($sayfa+1).'</a></li> <li><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.($sayfa+2).'">'.($sayfa+2).'</a></li>';
    }
    echo ' <li class="last"><a href="/sayfamiz.php?icliste='.($kat_sec).'&sayfa='.$sayfa_sayisi.'">Sonuncu</a></li>'; 
    echo "";
    ?>

    Sayfalamadaki
    /sayfamiz.php?icliste bölümünü değiştiriniz.
  • 13-03-2013, 14:01:11
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Sayfalamada mantık şu şekilde işler. Diyelim ki veribanınızda 100 tane veri var ve bunları 10 10 listelemek istiyorsunuz. Bu sayfa bilgisini bir şekilde almanız lazım. Örneğin;
    listele.php?sayfa=1
    listele.php?sayfa=2
    ....
    listele.php?sayfa=10

    şeklinde sayfayı alıyorsunuz.

    MySQL sorgunuzda LIMIT olacak. Anladığım kadarıyla LIMIT parametresini biliyorsunuz.

    SELECT * FROM tablo ORDER BY id DESC LIMIT 0,10

    Sorgu şu anlama gelir. "tablo" tablosundan tüm sonuçları çek, idye göre azalan şekilde sırala. Bu sıralama sonrasında en üstteki 10 veriyi al. Verileri alırken 0. veriden başla ve sadece 10 tanesini al. Şimdi buradan şuraya gidebiliriz.

    LIMIT 0,10 : 0'dan başla 10 tane veri çek.
    LIMIT 10,10 : 10dan başka 10 tane veri çek.
    LIMIT 20,10 : 20den başla 10 tane veri çek.
    vs .vs.

    Sayfa numarasını $_GET['sayfa'] şeklinde alalım ve $sayfa değişkenine atayalım . Bir de sayfa başı veri değişkeni olarak $sayfabasiveri değişkeni olsun.

    $sayfa = $_GET['sayfa'];
    if($sayfa==""){
         $sayfa=0;
    }
    
    $sayfabasiveri = 10;
    $itibaren = $sayfa*$sayfabasiveri;
    Sayfayı aldık, sayfa başı verimiz belli. Artık sadece sorguya bunları entegre edeceğiz.

    mysql_query("SELECT * FROM tablo ORDER BY id DESC LIMIT {$itibaren},{$sayfabasiveri}");
    Bu sorgu şu şekilde işleyecektir. $_GET['sayfa'] boş iken, $sayfa değişkeni 0 olacak. $itibaren değişkenimiz de 0x10= 0 olaca. Yani

    LIMIT 0,10

    $_GET['sayfa']=1 iken $sayfa değişkeni 1, $itibaren değişkeni 1x10=10 olacaktır. Yani

    LIMIT 10,10

    $_GET['sayfa']=2 iken $sayfa değişkeni 1, $itibaren değişkeni 2x10=10 olacaktır. Yani

    LIMIT 20,10


    Bu şekilde sayfa değerine göre sonuçların kaçıncı sonuçtan itibaren olduğunu göstermiş ve listelemiş olduk.

    Mantık budur. Geliştirmek size kalmı. Güvenlik kontrolleri, linkler, düzenlemeler bu geliştirmenin içinde. Örneği mantık oluşsun diye verdim. Yüzbinlerce açığı var bu kodların
  • 13-03-2013, 15:14:34
    #4
    Üyeliği durduruldu
    erginkeles adlı üyeden alıntı: mesajı görüntüle
    Sayfalamada mantık şu şekilde işler. Diyelim ki veribanınızda 100 tane veri var ve bunları 10 10 listelemek istiyorsunuz. Bu sayfa bilgisini bir şekilde almanız lazım. Örneğin;
    listele.php?sayfa=1
    listele.php?sayfa=2
    ....
    listele.php?sayfa=10

    şeklinde sayfayı alıyorsunuz.

    MySQL sorgunuzda LIMIT olacak. Anladığım kadarıyla LIMIT parametresini biliyorsunuz.

    SELECT * FROM tablo ORDER BY id DESC LIMIT 0,10

    Sorgu şu anlama gelir. "tablo" tablosundan tüm sonuçları çek, idye göre azalan şekilde sırala. Bu sıralama sonrasında en üstteki 10 veriyi al. Verileri alırken 0. veriden başla ve sadece 10 tanesini al. Şimdi buradan şuraya gidebiliriz.

    LIMIT 0,10 : 0'dan başla 10 tane veri çek.
    LIMIT 10,10 : 10dan başka 10 tane veri çek.
    LIMIT 20,10 : 20den başla 10 tane veri çek.
    vs .vs.

    Sayfa numarasını $_GET['sayfa'] şeklinde alalım ve $sayfa değişkenine atayalım . Bir de sayfa başı veri değişkeni olarak $sayfabasiveri değişkeni olsun.

    $sayfa = $_GET['sayfa'];
    if($sayfa==""){
         $sayfa=0;
    }
    
    $sayfabasiveri = 10;
    $itibaren = $sayfa*$sayfabasiveri;
    Sayfayı aldık, sayfa başı verimiz belli. Artık sadece sorguya bunları entegre edeceğiz.

    mysql_query("SELECT * FROM tablo ORDER BY id DESC LIMIT {$itibaren},{$sayfabasiveri}");
    Bu sorgu şu şekilde işleyecektir. $_GET['sayfa'] boş iken, $sayfa değişkeni 0 olacak. $itibaren değişkenimiz de 0x10= 0 olaca. Yani

    LIMIT 0,10

    $_GET['sayfa']=1 iken $sayfa değişkeni 1, $itibaren değişkeni 1x10=10 olacaktır. Yani

    LIMIT 10,10

    $_GET['sayfa']=2 iken $sayfa değişkeni 1, $itibaren değişkeni 2x10=10 olacaktır. Yani

    LIMIT 20,10


    Bu şekilde sayfa değerine göre sonuçların kaçıncı sonuçtan itibaren olduğunu göstermiş ve listelemiş olduk.

    Mantık budur. Geliştirmek size kalmı. Güvenlik kontrolleri, linkler, düzenlemeler bu geliştirmenin içinde. Örneği mantık oluşsun diye verdim. Yüzbinlerce açığı var bu kodların
    biraz yapmaya uraştım hiç veri çekmedi boş kaldı :S kafam iyice karıştı
  • 14-03-2013, 12:02:01
    #5
    StarkTech adlı üyeden alıntı: mesajı görüntüle
    biraz yapmaya uraştım hiç veri çekmedi boş kaldı :S kafam iyice karıştı
    Boş veri çekti ama hata vermediyse sorguda bir sıkıntı olabilir. İsterseniz öncelikle şöyle yapın. Değişkenlerle uğraşmayın.

    SELECT * FROM tablo ORDER BY id desc LIMIT 0,10

    SELECT * FROM tablo ORDER BY id desc LIMIT 10,10

    SELECT * FROM tablo ORDER BY id desc LIMIT 20,10


    şeklinde deneyin. Bakalım sonuç çekecek mi?