关于这个密码我有段时间在自食其力。在我继续之前,我真的不希望代码被重写,只要帮助我找到正确的方向,因为我迷路了^^
这是我用来查询列表的代码。$showitemsperlist可以设置为my the user,它显示每页应该显示许多项。。

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>";

我在这里看到一个问题,那就是执行'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 customer也返回27个值…所以我想出来了。我需要在$customerlistquery中添加一个COUNT(custid)字段,它返回总金额,可以用作$total_记录。(至少我想我弄明白了。)
最好的选择是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
很近了!正在尝试将COUNT(*)的新表行添加到我的$customerlistquery。。。
尝试一切^很快就会成功…我希望。
SELECT *
FROM customer
LEFT JOIN company
ON customer.compid=company.compid
WHERE
( SELECT COUNT(*)
  FROM customer )

不知道我在做什么,需要一点时间在评论变得无关紧要之前告诉我进展情况。。

最佳答案

你为什么不那样调试

while( $record=mysql_fetch_array($result) ) {
echo '<pre>";
print_r($record);
echo "</pre>";
}

看看你的记录

10-07 19:57