2012-11-26 85 views
0

好吧,我有一个基本的PHP分页脚本,它有一个基本的下一个和上一个按钮。现在,这工作正常,直到我添加一个明确的条款。请参阅下面的代码。Php分页和MYSQL区别

$query = "SELECT COUNT(*) as num FROM $tableName WHERE engine='$type' AND manufacturer='$man' AND '$year' BETWEEN start_year AND end_year"; 
$total_pages = mysql_fetch_array(mysql_query($query)); 
$total_pages = $total_pages['num']; 
echo "$total_pages"; 
$stages = 3; 
$page = mysql_escape_string($_GET['page']); 
if($page){ 
    $start = ($page - 1) * $limit; 
}else{ 
    $start = 0; 
    } 

// Get page data 

$query1 = "SELECT Distinct model_group from $tableName WHERE engine='$type' AND manufacturer='$man' AND '$year' BETWEEN start_year AND end_year LIMIT $start, $limit"; 
$result = mysql_query($query1); 

// Initial page num setup 
if ($page == 0){$page = 1;} 
$prev = $page - 1; 
$next = $page + 1;       
$lastpage = ceil($total_pages/$limit);  
$LastPagem1 = $lastpage - 1; 

现在,如果我更改查询,查询1是

$query = "SELECT * From 

的代码工作正常,下面是我的下一个和上一个按钮的代码。

Previous Button 

    if ($page > 1){ 
     echo "<a href='$targetpage?page=$prev&type=$type&manufacturer=$manufacturer&year=$year'><div class='previous'><img src='images/PrevButton1.fw.png' width='108' height='58' style='border: none;'/></span></a>"; 
    }else{ 
     echo "<span class='disabled'><div class='previous'>Previous</span></span>"; } 

Next Button 


if ($page < $lastpage){ 
     echo "<a href='$targetpage?page=$next&type=$type&manufacturer=$manufacturer&year=$year'><div class='next'><img src='images/MoreButton1.fw.png' width='108' height='58' style='border: none;'/></span></a>"; 
    }else{ 
     echo "<span class='disabled'><div class='next'>More</span></span>"; 
    } 

是否有反正我可以包括计数查询的不同值?因为我认为它会向第二个查询返回不同的值。

回答

1

我认为你必须使用一个

SELECT COUNT(DISTINCT *) 

在您的第一条语句

MySQL中的更好的方法是在你的选择SQL_CALC_FOUND_ROWS选项解决您的分页问题:

SELECT SQL_CALC_FOUND_ROWS * FROM mysql.user LIMIT 1 

您的结果将是1行...但与

SELECT FOUND_ROWS(); 

你成为没有限制的结果数!

+0

+1用于提及sql_calc_found_rows –