我正在吃自己一段時間關於這段代碼。在繼續之前,我真的不希望代碼被重寫,只是幫助我走向正確的方向,因爲我迷路了^^MySQL分頁與搜索功能,mysql_num_rows或mysql_fetch行?
所以這是我用來查詢列表的代碼。 $ showitemsperlist可以設定我的用戶,這表明應每頁顯示許多物品..
if (isset($_GET["page"]))
{
$page = $_GET["page"];
}
else
{
$page=1;
};
$start_from = ($page-1) * $showitemsperlist;
// THIS SECTION IS THE 'search' section. Items are shown according to user input.
if(isset($_POST['search']))
{
$search = $_POST['search'];
$terms = explode(" ", $search);
$customerlistquery = "
SELECT *
FROM customer
LEFT JOIN company
ON customer.compid=company.compid
WHERE
";
$i = 0;
foreach ($terms as $each)
{
if ($i++ > 0)
$customerlistquery .= ' OR ';
$customerlistquery .= "concat(custsurname, custforename, custmidname, custpostal, custphone1, custphone2, custfax, custnamecode) LIKE '%$each%' ";
}
$customerlistquery .= " ORDER BY $orderby ASC LIMIT $start_from, $showitemsperlist" ;
}
else
// IF NOT SEARCHING, JUST SHOW EVERYTHING.
{
$customerlistquery = "
SELECT *
FROM customer
LEFT JOIN company
ON customer.compid=company.compid
ORDER BY $orderby
ASC LIMIT $start_from, $showitemsperlist
";
}
// EXECUTE QUERY:
$result=mysql_query($customerlistquery) or die("query fout " . mysql_error());
的查詢工作以及所有,但低於此我使用此代碼行數頁:
$sql = "SELECT COUNT(custid) FROM customer";
$rs_result = mysql_query($sql);
$row = mysql_fetch_row($rs_result);
$total_records = $row[0];
$total_pages = ceil($total_records/$showitemsperlist);
echo "<p id='pagination'>";
if ($total_pages < 2)
{
echo "<br/>";
}
else
{
echo "Page: ";
for ($i=1; $i<=$total_pages; $i++)
{
echo "<a href='crm_custlist.php?page=".$i."' id='pagination'>".$i."</a>";
}
}
echo "</p>";
我在這裏看到1個問題,那就是執行'搜索'功能時的$ sql。如果我沒有執行'搜索',我確實會得到頁面鏈接,當我不'搜索'時,我也得到它們,因爲它是靜態的...不適應'搜索'查詢。
所以我試圖改變$ rs_result = mysql_query($ sql); ...($ customerlistquery),因爲它應該計算在那裏找到的結果,但是這給了我更多的頁面比它應該!
接下來我嘗試將fetch_row更改爲num_rows,它返回ASC限制之間的差異,所以這沒有幫助。
所以我需要統計總的結果,不能是別的。
我真的不明白:
$sql = "SELECT COUNT(custid) FROM customer";
$rs_result = mysql_query($sql);
$row = mysql_fetch_row($rs_result);
$total_records = $row[0];
返回27個值。 SELECT(custid)FROM customer也返回了27個值...所以我找到了答案。我需要以某種方式在$ customerlistquery中添加一個COUNT(custid)字段,該字段返回總金額並可用作$ total_records。 (至少我認爲我想通了。)
最好的選擇是mysql_num_rows返回發現的總記錄,但現在這是不可能的,因爲ASC LIMIT的...
我完全卡在這裏。任何幫助,歡迎!
Thanx。
編輯:31-10-2012 - 11:50
好的,我發現了。我需要使用SELECT COUNT(*)作爲$ customerlistquery,並使用以下代碼替換...($ sql):$ rs_result = mysql_query($ customerlistquery);.
這將返回我需要的值。但是現在我想要回顯的所有字段都是未定義索引。
使用下面這些行定義索引...用SELECT 合作,而不是與SELECT COUNT():
while($record=mysql_fetch_array($result))
{
$custid=$record['custid'];
$compid=$record['compid'];
$compname=$record['compname'];
$custsurname=$record['custsurname'];
編輯:31-10-2012 - 12:06
現在非常接近!試圖添加一個新的表格行(COUNT(*)到我的$ customerlistquery ... 嘗試一切^^很快它會工作......我希望。
SELECT *
FROM customer
LEFT JOIN company
ON customer.compid=company.compid
WHERE
(SELECT COUNT(*)
FROM customer)
不知道我在做什麼,需要一點時間剛剛通知我的進步之前的評論變得無關緊要..
是。我很愚蠢。但通過在phpmyadmin中運行查詢發現問題。現在我只需要將COUNT(*)作爲(table1)放入我的記錄字段(對於所有記錄)。現在想出來,那麼它應該可能工作。 –