2011-09-26 41 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結果資源 –