2012-06-12 46 views
0

我想我的分頁多稱爲SQL查詢中分頁結果,第1個工作正常,但頁面2..previous或下一個不及格的變量:MySQL查詢分頁多變量導致

<?php 


include "db.inc.php"; 

if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; }; 
$start_from = ($page-1) * 15; 

$term1 = $_REQUEST['term1']; 
$term2 = $_REQUEST['term2']; 
$term3 = $_REQUEST['term3']; 
$term4 = $_REQUEST['term4']; 
$sql ="SELECT * FROM cdrequests WHERE pname LIKE '%$term1%' AND date LIKE '%$term2%' AND date LIKE '%$term3%' AND dept LIKE '%$term4%' LIMIT $start_from, 15"; 


$rs_result = mysql_query ($sql); 
$num_rows = mysql_num_rows($rs_result); 
$query = mysql_query("SELECT * FROM cdrequests WHERE pname LIKE '%$term1%' AND date LIKE '%$term2%' AND date LIKE '%$term3%' AND dept LIKE '%$term4%'"); 
$number=mysql_num_rows($query); 
print "<font size=\"5\" color=white><b>CD Requests</b></font> </P>"; 


print "<table class=\"table1\" STYLE=\"word-wrap:break-word;\" width=1100 border=\"1\" bordercolor=\"#000000\" bgcolor=\"E6E6E6\" style=\"border-collapse: collapse\" cellpadding=\"2\" cellspacing=\"1\"> ............. 
?> 

<?php 

$term1 = $_REQUEST['term1']; 
$term2 = $_REQUEST['term2']; 
$term3 = $_REQUEST['term3']; 
$term4 = $_REQUEST['term4']; 


$sql = "SELECT COUNT(id) FROM cdrequests WHERE pname LIKE '%$term1%' AND date LIKE '%$term2%' AND date LIKE '%$term3%' AND dept LIKE '%$term4%'"; 
$rs_result = mysql_query($sql); 
$row = mysql_fetch_row($rs_result); 
$total_records = $row[0]; 
$total_pages = ceil($total_records/15); 


/****** build the pagination links ******/ 
// range of num links to show 
$range = 3; 



// if not on page 1, don't show back links 
if ($page > 1) { 
    // show << link to go back to page 1 
    echo " <a href='search2.php?page=1'><b>First</b></a> "; 
    // get previous page num 
    $prev = $page - 1; 
    // show < link to go back to 1 page 
    echo " <a href='search2.php?page=$prev'><b>&laquo;</b></a> "; 
} // end if 



// loop to show links to range of pages around current page 
for ($x = ($page - $range); $x < (($page + $range) + 1); $x++) { 
    // if it's a valid page number... 
    if (($x > 0) && ($x <= $total_pages)) { 
     // if we're on current page... 
     if ($x == $page) { 
     // 'highlight' it but don't make a link 
     echo " <font size='5' color=yellow><b> $x </b></font> "; 
     // if not current page... 
     } else { 
     // make it a link 
     echo " <a href='search2.php?page=$x'>$x</a> "; 
     } // end else 
    } // end if 
} // end for 


// if not on last page, show forward and last page links   
if ($page != $total_pages) { 
    // get next page 
    $next = $page + 1; 
    // echo forward link for next page 
    echo " <a href='search2.php?page=$next'><b>&raquo;</b></a> "; 
    // echo forward link for lastpage 
    echo " <a href='search2.php?page=$total_pages'><b>Last</b></a> "; 
} // end if 
/****** end build pagination links ******/ 
echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size='4' color=white>Total Records</font> <font size='5' color=yellow><b>$number</b></font>"; 

echo '</table>'; 

?> 

不知道我需要把在echo " <a href='search2.php?page=$next'><b>&raquo;</b></a> ";爲了調用條款

感謝

+3

請不要使用'mysql_ *'函數編寫新代碼。他們不再維護,社區已經開始[棄用程序](http://goo.gl/KJveJ)。查看[*紅色框*](http://goo.gl/GPmFd)?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/3gqF9)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/vFWnC)。 – orourkek

+0

PDO +1。沒有它,你的代碼是高度可注射的。 – bpeterson76

回答

0

這不行嗎?

... 
$start_from=$page*15 

$query = mysql_query("SELECT * FROM cdrequests WHERE ..."); 
$all_rows = mysql_num_rows($query); 
$totalPages = ceil($all_rows/15)-1; #How many pages? 
$sql = $query . " LIMIT $start_from,15"; 
print "<font size=\"5\" color=white><b>CD Requests</b></font> </P>"; 

print "<table class=\"table1\..." 
$terms= '&term1='.$term1 . '&term2='.$term2 . '&term3='.$term3 . '&term4='.$term4; 
if($totalPages>1){ 
#Paging Starts Now 
?> 
<div align="center"> 
<? if ($page > 1) { ?> 
<a href="search2.php?page=<? echo ($page-1); echo $terms; ?>">Previous</a> 
<a href="search2.php?page=1<? echo $terms; ?>">First</a> 
<? } ?> 
Page <? echo $page; ?> of <? echo $totalPages+1; ?> 

<? if ($page < $totalPages) { ?> 
<a href="search2.php?page<? echo ($page+1); echo $terms; ?>">Next</a> 
<a href="search2.php?page<? echo ($totalPages+1); echo $terms; ?>">Last</a> 
</div> 
<? } }?> 
+0

沒有沒有工作。我很感激幫助。 – user1356282

+0

注意:未定義的指數:term1 term2 term3 term4 我不保留/傳遞term1-4的變量 – user1356282

+0

@ user1356282,現在可以試試了嗎?它應該可以工作。讓if(isset($ _ REQUEST ['term1'])){//做點東西}'也是有用的,因爲這會阻止你再次發生錯誤。 – Bonzo

0

讓它對自己容易得多。建立一次表格。

應用jQuery的數據表給它

$('#table_id).datatables(); 

尋呼完成。真的很簡單!它只需要jQuery和DataTables plugin以及幾行CSS。作爲獎勵,它將過濾,排序,限制和更多,只需要每個功能的附加代碼行。此外,它可以與Themeroller風格,使大多數開發人員可以拉出更好看的桌子。