나는이 코드에 대해 잠시 자신을 먹고 있습니다. 계속하기 전에 코드가 다시 작성되기를 기대하지 않고 그냥 잃어버린 길 때문에 올바른 방향으로 가도록 도와주세요. ^^검색 기능, mysql_num_rows 또는 mysql_fetch 행을 사용하는 MySQL 페이지 매김?
그래서 목록을 쿼리하는 데 사용하는 코드입니다. $ 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>";
여기서 '문제'라는 것이 하나 있는데, '검색'기능을 실행할 때 $ sql입니다. '검색'을 실행하지 않으면 페이지 링크를 얻습니다. 정적이 아니기 때문에 '검색'하지 않을 때도 얻을 수 있습니다. '검색'쿼리에 맞지 않습니다.
그래서 $ rs_result = mysql_query ($ sql)을 변경하려고했습니다. to ... ($ 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에 총 금액을 반환하고 $ total_records로 사용할 수있는 추가 COUNT (custid) 필드가 필요합니다.
최선의 선택이있는 총 레코드를 반환하는 mysql_num_rows도하는 것입니다 (적어도 나는. 나는 그것을 알아 냈다고 생각), 그러나 이것은
나는 완전히 난 ... 때문에 ASC 제한 이제 불가능하다 여기에 붙어있어. 어떤 도움을 환영합니다 !!!
고맙습니다.
편집 : 31-10-2012 - 나는 그것을 발견 11시 50분
좋아. $ customerlistquery에 SELECT COUNT (*)를 사용하고 ... ($ sql)을 $ rs_result = mysql_query ($ customerlistquery);로 바꿔야합니다.
이렇게하면 필요한 값을 반환합니다. 하지만 이제는 내가 정의한 모든 필드가 정의되지 않은 인덱스입니다. 12시 6분
- 31-10-2012 :
while($record=mysql_fetch_array($result))
{
$custid=$record['custid'];
$compid=$record['compid'];
$compname=$record['compname'];
$custsurname=$record['custsurname'];
편집 : 인덱스를 정의하기 위해 아래의이 라인을 사용하여
은 없습니다 ... SELECT COUNT ()와, SELECT 작업 아주 가깝다! 내 $ customerlistquery에 COUNT (*) 인 새 테이블 행을 추가하려고 시도했습니다. 곧 모든 것을 시도해보십시오 ^^ 곧 작동 할 것입니다.내가 뭘하는지
SELECT *
FROM customer
LEFT JOIN company
ON customer.compid=company.compid
WHERE
(SELECT COUNT(*)
FROM customer)
확실하지, 의견이 될 무관 전에 내 진행 상황을 알려주는 약간의 시간이 필요합니다 ..
를 참조하십시오. 나는 아주 어리 석다. 그러나 phpmyadmin에서 쿼리를 실행하여 문제를 발견했습니다. 이제 모든 레코드에 대해 내 레코드 필드에 COUNT (*)를 (table1)로 배치해야합니다. 그걸 알아 내면 아마도 효과가있을 것입니다. –