我正在吃这个代码一段时间。在我继续之前,我真的不希望代码被重写,只是帮助我找到正确的方向因为我迷路了^^
所以这是我用来查询列表的代码。 $ 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个问题,即执行'search'函数时的$ 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客户也返回了27个值......所以我想通了。我需要以某种方式在$ customerlistquery中有一个额外的COUNT(custid)字段,它返回总金额并且可以用作$ total_records。 (至少我认为我弄清楚了。)
最好的选择是mysql_num_rows返回找到的总记录,但由于ASC限制,现在这是不可能的......
我完全被困在这里。欢迎任何帮助!!!
感谢名单。
编辑:2012年10月31日 - 11:50
好的,我找到了。我需要对$ customerlistquery使用SELECT COUNT(*)并用以下代码替换...($ 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'];
编辑:2012年10月31日 - 12:06
现在非常接近!尝试向我的$ customerlistquery添加一个新的表行COUNT(*)... 尝试一切^^很快它将起作用......我希望。
SELECT *
FROM customer
LEFT JOIN company
ON customer.compid=company.compid
WHERE
( SELECT COUNT(*)
FROM customer )
不确定我在做什么,需要一点时间只是在评论变得无关紧要之前告知我的进展..
答案 0 :(得分:1)
为什么你不像那样调试
while( $record=mysql_fetch_array($result) ) {
echo '<pre>";
print_r($record);
echo "</pre>";
}
并查看您的$记录