2009-09-18 3 views
0

У меня было трудное время, разбирая страницы на код. Я думаю, что это связано с передачей переменной GET $ find на следующую страницу.Pagination при использовании переменной GET

В любом случае, как бы я разбивал код на код ниже, так что в таблице ниже показано только 100 строк на страницу?

Спасибо заранее,

Джон

<?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"; 

} 
?> 

ответ

0

вам нужно использовать

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

в вашем SQL заявление

2

Вы должны использовать LIMIT в запросе, чтобы рассказать сколько строк вы хотите и с чего начать.

Пропустите параметр, который сообщает сценарию, что вы хотите получить еще один фрагмент результатов, а не только первую партию.

Таким образом, для связи вы можете пройти по параметру page:

example.com/results.php?page=2 

Где page= расскажет сценарий, какую страницу вы хотите, чтобы вернуться.

Затем вы должны указать LIMIT количество строк, возвращаемых каждый раз, чтобы у вас был постоянный пейджинг.

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

Теперь в вашем сценарии вы будете проверять, если переменная page была установлена. Если нет, по умолчанию стартовая строка возвращается с первой. Но поскольку вы хотите возвращать разные страницы/наборы результатов, для начала в правильной строке требуется небольшая математика.

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; 

Теперь, установив правильную стартовую строку, настроить запрос SQL использовать переменные следующим образом:

$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"); 

Каждый раз, когда вы нажмете на страницу будет проверять, если $_GET["page"] есть , Если нет, то отобразится из первой строки. Если это так, выполните математику и определите, сколько строк нужно пройти и показать следующую страницу.

Смежные вопросы