Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带搜索功能的MySQL分页、MySQL_num_行还是MySQL_fetch行?_Php_Mysql_Pagination_Search Engine_Rows - Fatal编程技术网

Php 带搜索功能的MySQL分页、MySQL_num_行还是MySQL_fetch行?

Php 带搜索功能的MySQL分页、MySQL_num_行还是MySQL_fetch行?,php,mysql,pagination,search-engine,rows,Php,Mysql,Pagination,Search Engine,Rows,我有一段时间对这段代码感到厌烦。在我继续之前,我真的不希望代码被重写,只要帮我找到正确的方向,因为我迷路了^^ 这就是我用来查询列表的代码$showitemsperlist可由用户设置,显示每页应显示的许多项目 if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; }; $start_from = ($page-1) * $showitemsperlist; // THIS SECTION

我有一段时间对这段代码感到厌烦。在我继续之前,我真的不希望代码被重写,只要帮我找到正确的方向,因为我迷路了^^

这就是我用来查询列表的代码$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>";
返回27个值。从customer中选择(custid)也会返回27个值…所以我算出了。我需要在$customerlistquery中增加一个COUNT(custid)字段,它返回总金额,可以用作$total\u记录。(至少我想我知道了。)

最好的选择是使用mysql_num_rows返回找到的总记录,但由于ASC限制,现在这是不可能的

我完全被困在这里了。欢迎任何帮助

塔克斯

编辑:31-10-2012-11:50

好的,我找到了。我需要对$customerlistquery使用SELECT COUNT(*),并将…($sql)替换为:$rs\u result=mysql\u query($customerlistquery)

这将返回我确实需要的值。但是现在我要回显的所有字段都是未定义的索引

使用以下几行定义索引…使用SELECT,而不是SELECT COUNT():

编辑:31-10-2012-12:06

非常接近!正在尝试向我的$customerlistquery添加一个名为COUNT(*)的新表行。。。 尝试一切^^^很快就会成功的…我希望

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>";
}
while($record=mysql\u fetch\u array($result)){
回声';
打印(记录);
回声“;
}

看看你的$record

你为什么不那样调试

while( $record=mysql_fetch_array($result) ) {
echo '<pre>";
print_r($record);
echo "</pre>";
}
while($record=mysql\u fetch\u array($result)){
回声';
打印(记录);
回声“;
}

并查看您的$record

True。我真蠢。但是通过在phpmyadmin中运行查询发现了问题。现在我只需要在我的记录字段(对于所有记录)中放置一个计数(*)(表1)。现在弄清楚这一点,它可能会起作用。我真蠢。但是通过在phpmyadmin中运行查询发现了问题。现在我只需要在我的记录字段(对于所有记录)中放置一个计数(*)(表1)。现在弄清楚这一点,它可能会起作用。
while( $record=mysql_fetch_array($result) ) {
echo '<pre>";
print_r($record);
echo "</pre>";
}