+ Yanıtla
Toplam 10 sonuçtan 1 ile 10 arası olanlar

Konu Başlığı: sayfada sadece son 10 yorum görülmesini istiyorum

  1. #1

    sayfada sadece son 10 yorum görülmesini istiyorum

    elimde şöyle küçük bir script var yorum yazıyoruz fakat 100 yorum olsada 1000 yorum olsada hepsini ilk sayfada gösteriyor ben sadece ilk yada son 10 tanesini göstermesini istiyorum , diğerleri 2. 3. sayfada olucak elimdeki kod bu

    PHP Kodu:
    // ##### GET COMMENTS #####
    $comments_query mysql_query ("SELECT * FROM comments LEFT JOIN users ON comments.user_id = users.user_id WHERE comments.file_id = '" intval($_GET['id']) . "' ORDER BY comments.added");
    while (
    $comment mysql_fetch_array ($comments_query))
    {
    $comment['comment'] = stripslashes ($comment['comment']);
    $comment['title'] = stripslashes ($comment['title']);
    $comment['added'] = date('F d, Y'$comment['added']);
    $comments .= $tpl->pull_template ('comment');

    bir arkadaş şöyle bir kod verdi ama çalışmadı ne yazıkki

    PHP Kodu:
    if (! $k ) { $k=0; }
    $comments_query mysql_query ("SELECT * FROM comments LEFT JOIN users ON comments.user_id = users.user_id WHERE comments.file_id = '" intval($_GET['id']) . "' ORDER BY comments.added LIMIT $k , 10");
    $hepsi_tab="SELECT * FROM comments LEFT JOIN users ON comments.user_id = users.user_id WHERE comments.file_id = '" intval($_GET['id']) . "' ORDER BY comments.added ";
    $hepsi=mysql_query($hepsi_tab);
    $toplam=@mysql_num_rows($hepsi);
    while (
    $comment mysql_fetch_array ($comments_query))
    {
    $comment['comment'] = stripslashes ($comment['comment']);
    $comment['title'] = stripslashes ($comment['title']);
    $comment['added'] = date('F d, Y'$comment['added']);
    $comments .= $tpl->pull_template ('comment');
    $i 0;
    while (
    $i $toplam) {$a $a 10
     
    echo 
    "<a href='?k=$i'>[$a]</a>";
    $i=$i 10;}

    bir incelermisiniz lütfen bu arada SEO url kullanıyorum script'de ve arkadaşın verdiği şekilde ekliyince siteadi.com/files/xxx.HTML linki yorumların 2. , 3. sayfasına tıklıyınca siteadi.com/files/xxx.HTML?k=10 siteadi.com/files/xxx.HTML?k=20 şeklinde oluyor fakat öyle görünsede yorumlar değişmiyor hep aynı ( ilk ) yorumlar görünüyor ve çalışmamasının sebebi SEO url olabilirmi ?

    bu arada kullandığım htaccess
    PHP Kodu:
    RewriteRule "^/?(page)/([0-9]+)-files.HTML$" index.PHP?page=$[Last]
    RewriteRule "^/?(category|file|type)/([0-9]+)[^/]+.HTML$" $1.PHP?id=$[Last]
    RewriteRule "^/?(category|file|type)/([0-9]+)/([0-9]+)[^/]+.HTML$" $1.PHP?id=$2&page=$[Last 
    Mesaj hotr1de tarafından 21.12.2006 (00:47) yeniden düzenlendi.

  2. #2

    Re: sayfada sadece son 10 yorum görülmesini istiyorum

    PHP Kodu:
    $SQL "SELECT * FROM comments 
      LEFT JOIN users ON comments.user_id = users.user_id 
      WHERE comments.file_id = '" 
    intval($_GET['id']) . "' 
      ORDER BY comments.added
      LIMIT 10"
    ;

    $comments_query mysql_query ($SQL); 
    query'de LIMIT parametresine bak
    Spoiler:
    imzaya sponsor?

  3. #3

    Re: sayfada sadece son 10 yorum görülmesini istiyorum

    Alıntı s3prin tarafından gönderilen mesaj: Mesajı Göster
    PHP Kodu:
    $SQL "SELECT * FROM comments 
      LEFT JOIN users ON comments.user_id = users.user_id 
      WHERE comments.file_id = '" 
    intval($_GET['id']) . "' 
      ORDER BY comments.added
      LIMIT 10"
    ;

    $comments_query mysql_query ($SQL); 
    query'de LIMIT parametresine bak

    diğerleri 2. 3. sayfada olucak bunu nasıl yapcaz önemli olanda bu zaten


    youtube'deki gibi 10 yorum ilk sayfada diğerleri 2. 3. 4. diye ayrılcak

  4. #4

    Re: sayfada sadece son 10 yorum görülmesini istiyorum

    şurada konuya değinilmiş ama ben olsam daha sade şekilde şöyle yapardım:

    PHP Kodu:
    // sayfa başına kayıt
    $perpage 10

    // kacinci sayfa istendi? SQL injection vs. kontrol etmek lazım :)
    if( intval($_GET['sayfa']) )
      
    $page $_GET['sayfa'];
    else
      
    $page 1;

    // o sayfada gösterilecek verileri al
    $SQL "SELECT * FROM comments 
      LEFT JOIN users ON comments.user_id = users.user_id 
      WHERE comments.file_id = '" 
    intval($_GET['id']) . "' 
      ORDER BY comments.added
      LIMIT "
    .$perpage*($page-1).", ".$perpage// BU SATIRA DIKKAT!

    $comments_query mysql_query ($SQL);

    // vs.
    // vs.
    // vs. 
    Dikkat yazdigim satırı LIMIT kullanımını kurcalarsan anlarsın nasıl çalıştığını. Örn; $page = 1 geldiyse LIMIT $perpage*($page-1).", ".$perpage formülünün çıktısı LIMIT 0, 10 olacaktır (sıfırıncı kayıttan başla 10 tane al)
    $page = 3 geldiyse çıktı LIMIT 20, 10 -> 20. kayıttan başla 10 tane al.. gibi

    Ayrica en altta sayfa 1 . 2 . 3 vs gostermek için;

    PHP Kodu:
    // toplam kayit sayisini bul -> $t_rec
    $SQL "SELECT COUNT(*) FROM comments 
      LEFT JOIN users ON comments.user_id = users.user_id 
      WHERE comments.file_id = '" 
    intval($_GET['id']) . "'";
    list(
    $t_rec) = mysql_fetch_rowmysql_query($SQL) );

    // bu kontrolü ozellestirebilirsin
    for($i=1$i<=ceil($t_rec/$perpage); $i++) {
      echo 
    "<a href='?sayfa=$i'>$i</a> | ";

    Burada da toplam potansiyel gösterimi olabilecek kayıtı COUNT(*) ile buluyoruz. Atıyorum 54 geldiyse bu 6 sayfa eder, o yüzden kayıt sayısı/sayfa başına değilde ceil($t_rec/$perpage) ile bölüyoruz. (Yukarıya yuvarlayıp.) Sonra da 1'den 6'ya kadar tek tek istediğin formatta yazdırıyorsun.

    Umarım yardımcı olabilmişimdir.
    Spoiler:
    imzaya sponsor?

  5. #5

    Re: sayfada sadece son 10 yorum görülmesini istiyorum

    burası hata veriyor
    PHP Kodu:
    LIMIT ".$perpage*($page-1)."".$perpage; 
    .$perpage*($page-1). bu yazım sitede bir örneğe baktım şöyle kullanmış
    PHP Kodu:
    ORDER BY added LIMIT ".$start."".$software['limit']); 
    burayı ona göre düzenliyebilirmisin pek anlamıyorumda ayrıca teşekkürler

  6. #6

    Re: sayfada sadece son 10 yorum görülmesini istiyorum

    Ohooo. Projeyi zip'leyip gönder, yapılmışını verelim.

    Şaka bir yana kod syntax'ı normal gözüküyor. Ne hatası verdiğini yapıştırırsan yardımcı olurum.

    Not: bu arada senin veridğin kodla benimkisi aynı mantık.
    Spoiler:
    imzaya sponsor?

  7. #7

    Re: sayfada sadece son 10 yorum görülmesini istiyorum

    kodu böyle çalıştırdım fakat bu seferde ?sayfa=2 , ?sayfa=3 'e geçincede aynı ilk 10 yorum görünüyor.

    PHP Kodu:
    // ##### GET COMMENTS ##### 
    $perpage 10
    if( 
    intval($_GET['sayfa']) )
      
    $page $_GET['sayfa'];
    else
      
    $page 1
      
    $comments_query mysql_query ("SELECT * FROM comments LEFT JOIN users ON comments.user_id = users.user_id WHERE comments.file_id = '" intval($_GET['id']) . "' ORDER BY comments.added LIMIT ".$perpage*($page-1).", $perpage");
    while (
    $comment mysql_fetch_array ($comments_query))
    {
        
    $comment['comment'] = stripslashes ($comment['comment']);
        
    $comment['title'] = stripslashes ($comment['title']);
        
    $comment['added'] = date('F d, Y'$comment['added']);
        
    $comments .= $tpl->pull_template ('comment');
    }
    // toplam kayit sayisini bul -> $t_rec
    $SQL "SELECT COUNT(*) FROM comments 
      LEFT JOIN users ON comments.user_id = users.user_id 
      WHERE comments.file_id = '" 
    intval($_GET['id']) . "'";
    list(
    $t_rec) = mysql_fetch_rowmysql_query($SQL) );

    // bu kontrolü ozellestirebilirsin
    for($i=1$i<=ceil($t_rec/$perpage); $i++) {
      echo 
    "<a href='?sayfa=$i'>$i</a> | ";


  8. #8

    Re: sayfada sadece son 10 yorum görülmesini istiyorum

    Bende gayet güzel sayfa sayfa gösteriyor.

    Şu satırı;
    PHP Kodu:
    $comments_query mysql_query ("SELECT * FROM comments LEFT JOIN users ON comments.user_id = users.user_id WHERE comments.file_id = '" intval($_GET['id']) . "' ORDER BY comments.added LIMIT ".$perpage*($page-1).", $perpage"); 
    şöyle yazıp HTML çıktısını verir misin; Her sayfa için ayrı ayrı çıktısını ver. Örn; ?sayfa=1 ?sayfa=2 .. gibi.
    PHP Kodu:
    $SQL "SELECT * FROM comments 
      LEFT JOIN users ON comments.user_id = users.user_id 
      WHERE comments.file_id = '" 
    intval($_GET['id']) . "' 
      ORDER BY comments.added 
      LIMIT "
    .$perpage*($page-1).", $perpage";
    echo 
    $SQL; exit; // <- SQL sorgu çıktısını istiyorum
    $comments_query mysql_query ($SQL); 
    Ayrıca neden 1000 karakterlik satırlarla kodlamaya ısrar ediyorsun ki. Temiz kod yaz ilerde kitap okur gibi ne yaptığını anlarsın.

    Dipnot: mysql_fetch_array($comments_query) döngüsünde de de mysql_fetch_assoc($comments_query) kullan, kullanacağın kadar değişken alır sunucuyu daha az yorarsın.
    Mesaj s5prin tarafından 21.12.2006 (14:29) yeniden düzenlendi. Açıklama: ek
    Spoiler:
    imzaya sponsor?

  9. #9

    Re: sayfada sadece son 10 yorum görülmesini istiyorum

    senin yazdığın gibi şu şekilde değiştirdim (aşağıda ) fakat her sayfada aynı şey yazıyor sanırım sorunda bu , her sayfada
    SELECT * FROM comments LEFT JOIN users ON comments.user_id = users.user_id WHERE comments.file_id = '50' ORDER BY comments.added LIMIT 0, 10
    PHP Kodu:
    // ##### GET COMMENTS #####
    $perpage 10
    if( 
    intval($_GET['sayfa']) )
      
    $page $_GET['sayfa'];
    else
      
    $page 1
      
    $SQL "SELECT * FROM comments 
      LEFT JOIN users ON comments.user_id = users.user_id 
      WHERE comments.file_id = '" 
    intval($_GET['id']) . "' 
      ORDER BY comments.added 
      LIMIT "
    .$perpage*($page-1).", $perpage";
    echo 
    $SQL; exit; // <- SQL sorgu çıktısını istiyorum
    $comments_query mysql_query ($SQL);

    while (
    $comment mysql_fetch_array ($comments_query))
    {
        
    $comment['comment'] = stripslashes ($comment['comment']);
        
    $comment['title'] = stripslashes ($comment['title']);
        
    $comment['added'] = date('F d, Y'$comment['added']);
        
    $comments .= $tpl->pull_template ('comment');
    }
    // toplam kayit sayisini bul -> $t_rec
    $SQL "SELECT COUNT(*) FROM comments 
      LEFT JOIN users ON comments.user_id = users.user_id 
      WHERE comments.file_id = '" 
    intval($_GET['id']) . "'";
    list(
    $t_rec) = mysql_fetch_rowmysql_query($SQL) );

    // bu kontrolü ozellestirebilirsin
    for($i=1$i<=ceil($t_rec/$perpage); $i++) {
      echo 
    "<a href='?sayfa=$i'>$i</a> | ";

    arkadaşın verdiği kod demiştim başta ondada aynı şekilde oldu sayfalar çıktı ama hepsi aynı yorum bir çıkamadım işin içinden :

  10. #10

    Re: sayfada sadece son 10 yorum görülmesini istiyorum

    Bende problemsiz çalışıyor. Şurada bir sorunun var;

    PHP Kodu:
    if( intval($_GET['sayfa']) )
      
    $page $_GET['sayfa'];
    else
      
    $page 1
    script.PHP?sayfa=x -> x ne gelirse gelsin intval($_GET['sayfa']) her zaman '0' üretiyor ve $page değişkenin default 1 oluyor.

    Çok basit bir yerde hata yapıyorsun muhtemelen. script'ini /script.PHP?sayfa=2 gibi elle çağırarak sayfanın en başına da $_GET dump yaparsan gelip gelmediğini görürsün;

    PHP Kodu:
    print_r($_GET); exit; 
    Spoiler:
    imzaya sponsor?

+ Yanıtla

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz