Pagination bir GET değişkeni kullanırken

2 Cevap php

Ben zor bir zaman aşağıdaki kodu paginating vardı. Ben GET değişkeni $ sonraki sayfaya bulabilirsiniz geçen ile ilgisi olduğunu düşünüyorum.

Aşağıdaki tablo, sayfa başına sadece 100 satırlarını gösterir, böylece neyse, nasıl, aşağıdaki kodu sayfalandırmak istiyorsunuz?

Teşekkür peşin,

John

<?php
ob_start();
session_start();
$find = strip_tags($_GET['find']);
$illegal = array("'", ".", "/", "\"", ";", "{", "}", "[", "]", "\\", "''", "'''", "''''", "'''''", "\\\\", "\\\\\\", "\\\\\\\\");
$find = str_replace($illegal, '', $find);
$find = trim ($find);
$find = strtolower($find);
$find = stripslashes($find);
$_SESSION['find'] = $find;
?>

<?
if ($searching =="yes")
{

if ($find == "")
{
session_write_close();
header("Location:http://www.site.com/index.php");
exit;
unset($_SESSION['find']);   

}

mysql_connect("mysqlv10", "username", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
$find = mysql_real_escape_string($find);

$result=mysql_query("SHOW TABLES FROM database LIKE '$find'")
or die(mysql_error());

if(mysql_num_rows($result)>0){
while($table=mysql_fetch_row($result)){
print "<p class=\"topic\">$table[0]</p>\n";
$r=mysql_query("SELECT * , votes_up - votes_down AS effective_vote FROM `$table[0]` WHERE site != '' ORDER BY effective_vote DESC");

print "<table class=\"navbar\">\n";
while($row=mysql_fetch_array($r)){

$effective_vote = $row['votes_up'] - $row['votes_down']; 

print "<tr>";

print "<td class='sitename'>".'<a type="amzn" category="products" class="links2">'.$row['site'].'</a>'."</td>";

print "<td class='votes'>".'<span class="votes_count" id="votes_count'.$row['id'].'">'.number_format($effective_vote).'</span>'."</td>";
print "<td class='ballot'>".'<span class="button" id="button'.$row['id'].'">'.'<a href="javascript:;" class="cell1" id="'.$row['id'].'">'.vote.'</a>'.'</span>'."</td>";
}
print "</tr>\n";
}
print "</table>\n";

}
?>

2 Cevap

Eğer kullanmanız gerekir

LIMIT (<pagenumber*amount of records you want to display>,< amount of records you want to display >)

SQL deyiminde

Siz istediğiniz kaç satır veritabanı ve nereden başlamak için anlatmak için sorguda LIMIT kullanmak zorunda.

Eğer sonuç başka bir yığın ve sadece ilk toplu istediğiniz komut söyler bir parametre iletmekten.

Böylece bağlantı için size page parametresi boyunca geçebilir:

example.com/results.php?page=2

Nerede page= Eğer dönmek istiyorum ne sayfası komut anlatacağım.

Sonra tutarlı belleği var ki LIMIT satır sayısı her zaman iade etmek isteyeceksiniz.

$results_cnt = 100; //--rows you want per page of results

Şimdi komut size page değişkeni ayarlanır olup olmadığını görmek için kontrol edeceğiz. Değilse, ilk dönmek için başlangıç ​​satır varsayılan. Eğer sonuç farklı sayfaları / setleri dönmek istiyorum Ama, biraz matematik doğru sıraya başlatmak için gereklidir.

if(isset($_GET["page"]) //--see if the variable is even there
{
    $page_num = (int)$_GET["page"]; //--forcing it to always be an integer

    $start_row = $results_cnt * ($page_num - 1);

    /* --
     what happens:
       ($results_cnt currently at 100)

     on page one (page=1), start at row 0
      math: 100 * (1 - 1) = 0

     on page two (page=2), start at row 100
      math: 100 * (2 - 1) = 100

     on page three (page=3), start at row 200
      math: 100 * (3 - 1) = 200

     etc.
    */
}
else
    $start_row = 0;

Şimdi, doğru bir başlangıç ​​satır ayarlamak sahip, bu yüzden gibi değişkenleri kullanmak için SQL sorgusu ayarlayın:

$r = mysql_query("SELECT *, votes_up - votes_down AS effective_vote 
                   FROM `$table[0]`
                   WHERE site != '' 
                   ORDER BY effective_vote DESC
                   LIMIT $start_row, $results_cnt");

Eğer sayfayı vurmak her zaman o $_GET["page"] olup olmadığını görmek için kontrol edilecektir. Eğer değilse, o zaman ilk satırdan görüntüler. Eğer durum bu ise, matematik yapmak ve üzerinden geçmek ve bir sonraki sayfayı göstermek için kaç satır çalışmak.