2011-09-26 43 views
1

我试图显示来自6个不同表格的数据并使用分页,因此用户可以滚动浏览类似于购物网站的项目。php分页查询多个表

我正在使用下面的代码来显示一个字段称为请求ID从一个表格调用请求(作为一个测试)在10页的工作正常。

<?php 
include('connect.php'); 
$targetpage = "page.php";  
$limit = 10; 

$query = "SELECT COUNT(*) as num FROM request"; 
$total_pages = mysql_fetch_array(mysql_query($query)); 
$total_pages = $total_pages[num]; 

$stages = 3; 
$page = mysql_escape_string($_GET['page']); 
if($page){ 
$start = ($page - 1) * $limit; 
}else{ 
$start = 0; 
    }  
// Get page data 
$query1 = "SELECT * FROM request 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;      

$paginate = ''; 
if($lastpage > 1) 
{ 
$paginate .= "<div class='paginate'>"; 
// Previous 
if ($page > 1){ 
$paginate.= "<a href='$targetpage?page=$prev'>previous</a>"; 
}else{ 
$paginate.= "<span class='disabled'>previous</span>"; } 

// Pages  
if ($lastpage < 7 + ($stages * 2)) // Not enough pages to breaking it up 
{ 
for ($counter = 1; $counter <= $lastpage; $counter++) 
{ 
if ($counter == $page){ 
$paginate.= "<span class='current'>$counter</span>"; 
}else{ 
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
} 
} 
elseif($lastpage > 5 + ($stages * 2)) // Enough pages to hide a few? 
{ 
// Beginning only hide later pages 
if($page < 1 + ($stages * 2))  
{ 
for ($counter = 1; $counter < 4 + ($stages * 2); $counter++) 
{ 
if ($counter == $page){ 
$paginate.= "<span class='current'>$counter</span>"; 
}else{ 
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
} 
$paginate.= "..."; 
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>"; 
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";  
} 
// Middle hide some front and some back 
elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2)) 
{ 
$paginate.= "<a href='$targetpage?page=1'>1</a>";       
$paginate.= "<a href='$targetpage?page=2'>2</a>"; 
$paginate.= "..."; 
for ($counter = $page - $stages; $counter <= $page + $stages; $counter++) 
{ 
if ($counter == $page){ 
$paginate.= "<span class='current'>$counter</span>"; 
}else{ 
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
} 
$paginate.= "..."; 
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>"; 
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";  
} 
// End only hide early pages 
else 
{ 
$paginate.= "<a href='$targetpage?page=1'>1</a>"; 
$paginate.= "<a href='$targetpage?page=2'>2</a>"; 
$paginate.= "..."; 
for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++) 
{ 
if ($counter == $page){ 
$paginate.= "<span class='current'>$counter</span>"; 
}else{ 
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}      
} 
} 
} 
// Next 
if ($page < $counter - 1){ 
$paginate.= "<a href='$targetpage?page=$next'>next</a>"; 
}else{ 
$paginate.= "<span class='disabled'>next</span>"; 
} 
$paginate.= "</div>";  
} 
echo $total_pages.' Results'; 
// pagination 
echo $paginate; 
?> 
<ul> 
<?php 
while($row = mysql_fetch_array($result)) 
{  
echo '<li>'.$row['requestid'].'</li>'; 
} 
?> 

我现在试图使用以下查询显示总共6个表中的数据,它不起作用?

我不认为我在查询中正确使用了COUNT命令?

$query = "SELECT COUNT as num r.*, m.*, u.*, a.*, i.*, b.*, r.* 
FROM request r INNER JOIN movie m ON m.movieid = r.movieid 
INNER JOIN actor a ON a.actorid = r.actorid 
INNER JOIN users u ON u.userid = r.userid 
INNER JOIN item i ON i.itemid = r.itemid 
INNER JOIN brand b ON b.brandid = r.brandid 
WHERE gender = 'male'"; 
+0

请在文本中描述您要计数的内容。您目前的查询只会返回至少有一部电影的请求,至少有一个演员,至少有一个用户,至少有一个项目,至少有一个品牌,以及性别(用户?演员?)的性别是男性。 – bfavaretto

回答

0

这是你如何使用COUNT功能,你必须指定你计算的是什么。

SELECT COUNT(*) as num r.*, m.*, u.*, a.*, i.*, b.*, r.* 
FROM request r INNER JOIN movie m ON m.movieid = r.movieid 
INNER JOIN actor a ON a.actorid = r.actorid 
INNER JOIN users u ON u.userid = r.userid 
INNER JOIN item i ON i.itemid = r.itemid 
INNER JOIN brand b ON b.brandid = r.brandid 
WHERE gender = 'male'"; 
+0

这可能会为每行返回'1'作为'num',因为他也在选择其他所有内容。问题是,这个问题还不够清楚。 – bfavaretto

+0

我还不够清楚,我展示了如何使用计数功能。 –

+0

当我将查询更改为上述内容时,我收到一条错误消息:“警告:mysql_fetch_array():提供的参数不是********** styles.php中第46行的有效MySQL结果资源 –