• 08-12-2012, 20:57:56
    #1
    PHP ile listeleme yapacağım aynı zamanda sayfalama yapacak kod lazım.

    Örneğin veritabanında 100 satır var. Her bir sayfada 20 satır listeleyecek, ikinci sayfada 21. satırdan başlayacak ve sıra numarası da 21 yazacak.

    Aşağıdaki kod ile istediğimi yaptırabiliyorum, ikinci sayfaya geçtiğimdede doğru veri çekiyor ancak sıra numarası ikinci sayfada da 1'den başlıyor. oysa 21'den başlaması gerekiyor. Son sayfayı açsam bile sıra numarası hep 1'den başlıyor. Umarım anlatabilmişimdir. Mümkünse bu kod üzerinde gerekli bir değişiklik, mümkün değilse çalışan bir kod vermenizi rica ediyorum.

    Teşekkürler...



    <?php
    // VERİTABANI BİLGİLERİ
    $dbhost = "localhost";
    $dbuser = "****";
    $dbpass = "***";
    $dbname = "****";
    //****************************************************************
    // ########## MYSQL Bağlantı Ayarları ############################
    $veri_yolu=mysql_connect("$dbhost","$dbuser","$dbpass") or die("<center><br>MySQL Bağlantı Hatası!</center>") ;
    mysql_select_db("$dbname", $veri_yolu) or die ("<br><center>Veri Tabanı Bulunamıyor!</center>");
    //****************************************************************
    // sayfa değişkenine değer atatmamışsa 1'e eşitliyoruz
    if(!isset($_GET['sayfa'])){
    $sayfa = 1;
    } else {
    $sayfa = $_GET['sayfa'];
    }
    //****************************************************************
    // sayfa başına kaç kayıt listelenecek
    $kacar = 20;
    //****************************************************************
    // Geçerli sayfadan itibaren kaç kayıt kaldığını buluyoruz
    $kactan = (($sayfa * $kacar) - $kacar);
    //****************************************************************
    // $kactan ve $kacar değişkenlerimizin aldığı değerlere göre bilgileri veritabanından alıyoruz
    $sonuc = mysql_query("SELECT * FROM $wpdb->posts LIMIT $kactan, $kacar");
    //****************************************************************
    // Sayfa Başında Tablo Başlıklarını hazırlıyoruz
    echo "<table align=\"center\" width=\"700\" border=\"1\" bordercolor=\"FFFFFF\" cellspacing=\"2\" cellpadding=\"2\"><tr bordercolor=\"6699FF\" bgcolor=\"6699FF\"><td width=\"60\" height=\"25\">Sıra No</td><td width=\"180\">Kullanıcı Adı</td><td width=\"180\">Adı</td><td width=\"180\">Soyadı</td></tr>";
    //****************************************************************
    $sirano = 1; // herkaydın sıra numarası için sırano değişkeni oluşturuyoruz
    //****************************************************************
    // Kayıtlarımızı ekranda gösteriyoruz
    while ($sorgu_verisi = mysql_fetch_array($sonuc)) {
    echo " <tr bordercolor=\"6699FF\"><td height=\"25\">$sirano</td><td>$sorgu_verisi[post_author]</td><td>$sorgu_verisi[post_title]</td><td>$sorgu_verisi[post_date]</td>";
    $sirano++;
    }
    echo "</tr></table>";
    //****************************************************************
    // Toplam kayıt sayısını veritabanından alıyoruz
    $toplam_kayit = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM $wpdb->posts"),0);
    //****************************************************************
    // ceil() fonksiyonumuz ile toplam sayfa adedini buluyoruz
    $toplam_sayfa = ceil($toplam_kayit / $kacar);
    //****************************************************************
    echo "<table width=\"700\" border=\"1\" bordercolor=\"FFFFFF\" align=\"center\" cellpadding=\"2\" cellspacing=\"2\"><tr class=\"tablobaslik\" bordercolor=\"000000\">";
    //****************************************************************
    // Önceki Kayıtların Gösterileceği Linkimiz
    echo "<td width=\"100\">";
    if($sayfa > 1){
    $prev = ($sayfa - 1);
    echo "<a href=\"".$_SERVER['PHP_SELF']."?sayfa=$prev\"> Önceki Sayfa</a>";}
    else { echo "Önceki Sayfa";}
    for($i = 1; $i <= $toplam_sayfa; $i++){
    if(($sayfa) == $i){
    echo "</td><td> Aktif Sayfa: ";
    echo "<b> $i </b>";
    } else {
    echo "<a href=\"".$_SERVER['PHP_SELF']."?sayfa=$i\"></a> ";
    }
    echo "</td>";
    }
    // Sonraki Kayıtlarımızın Gösterileceği Linkimiz
    echo "<td width=\"100\">";
    if($sayfa < $toplam_sayfa){
    $next = ($sayfa + 1);
    echo "<a href=/author/Maria/?sayfa=$next> Sonraki Sayfa</a></td>";}
    else { echo "Sonraki Sayfa";}
    echo "</td>";
    echo "<td>Toplam Kayıt : <b>$toplam_kayit</b> </td>";
    echo "<td>Toplam Sayfa : <b>$toplam_sayfa </b></td>";
    echo "</tr></table>";
    ?>

    VEYA AŞAĞIDAKİ KOD ÜZERİNDE İLGİLİ DEĞİŞİKLİK YAPABİLEN ..

      <?php
        $curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author));
        ?>
    	
    
    	
        <h4>All Poems by <?php echo $curauth->nickname; ?>:</h4>
    
    
    <!-- The Loop -->
    <ol>
    <ol>
    <?php query_posts($query_string.'&posts_per_page=25'); ?>
        <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    	
            <li>
                <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">
                <?php the_title(); ?></a>,
                <?php the_time('d M Y'); ?>
            </li>
    
        <?php endwhile; else: ?>
            <p><?php _e('No posts by this author.'); ?></p>
    
        <?php endif; ?>
    </ol></ol>
    <!-- End Loop -->
       
    <?php pagination($additional_loop->max_num_pages);?>
  • 08-12-2012, 21:19:40
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    $sirano = 1;
    bu kısmı:

    $sirano = ($sayfa <= 1) ? 1 : (($sayfa-1)*20)+1;
    yaparsan düzelir
  • 08-12-2012, 21:58:26
    #3
    acayip adlı üyeden alıntı: mesajı görüntüle
    $sirano = 1;
    bu kısmı:

    $sirano = ($sayfa <= 1) ? 1 : (($sayfa-1)*20)+1;
    yaparsan düzelir

    HOCAM SÜPERSİN. Düzeldi ancak eksik kalan birşey var. Burada sıralamayı veritabanındaki post_author a göre yaptırmak gerekiyor. Bu şekilde veritabanındaki bütün postları çekiyor. Hangi yazarın sayfasına girilirse o yazarın postlarının sıralanması gerekiyor.

    Aşağıdaki kod ile yazarın yazılarından yorum yapılanlar listeleniyor. Bu koda göre uyarlayabilir misiniz? Biraz zahmetli olacak ama yaparsanız çok sevinirim.

    <h4>Popular Poems of <?php the_author(); ?></h4>
    <ul>
    
    <?php 
    global $wp_query;
    $curauth = $wp_query->get_queried_object();
    $result = $wpdb->get_results("SELECT post_author,comment_count,ID,post_title FROM $wpdb->posts ORDER BY post_author = '" . $curauth->ID . "' and comment_count DESC LIMIT 0 , 10");
    foreach ($result as $post) {
    setup_postdata($post);
    $postid = $post->ID;
    $title = $post->post_title;
    $commentcount = $post->comment_count;
    if ($commentcount != 0) { ?>
    <li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
    <?php echo $title ?></a> {<?php echo $commentcount ?> Comments} </li>
    
    <?php } } } ?>
    </ul>