0

ページネーションに問題があります。ページネーションクエリのphpコードは次のとおりです。

$ <? if (isset($_GET["page"])) { 

    $Page = preg_replace("/[^0-9]/","", $_GET["page"]);
} else {
    $Page = 0;
}
$limit       = 10;
$StartFrom  = $limit * $Page;
$TotalFiles = mysql_num_rows(mysql_query("SELECT * FROM linkuri WHERE `categorie` = 'Afaceri' AND status = 1"));
$TotalPages = floor($TotalFiles / $limit); ?>

そしてそれを表示するコード:

$i = 0; while ($TotalPages >= $i) { echo '<a class="active imgf" style="opacity: 1;margin-bottom:3px; margin-top:3px;" href="afaceri.php?page='.$i.'">'.($i+1).'</a>';$i++;}

問題は、表示を次のようにしようとしていることです。PAGES: "BACK" 1 2 3 4 5 "NEXT"

4

2 に答える 2

2

まず、クエリの改善を提案したいと思います。行の合計を数えるには、次を使用します。

SELECT count(*) as `totalpost` FROM linkuri WHERE `categorie` = 'Afaceri' AND status = 1

次に、次のようにしてページネーションを作成します。

$totalPost = 50; //Dummy total post
$limit = 10;

$pages = $totalPost / $limit; //Giving 5

//Now we know there are five pages
for($i=1; $i<=$pages; $i++) {
  echo $i; // Better echo something like <a href="link">$i</a>
}

PS: これは非常に基本的な例です

ページネーション効果を作成するコツをつかんだら、このチュートリアルを確認してください

PHPでページネーションする方法は?

于 2012-10-28T06:48:03.713 に答える
0

同じ条件で 2 つの長いクエリを実行したくない場合は、これをテストすることを検討してください。

SELECT SQL_CALC_FOUND_ROWS, * FROM foo WHERE bar ORDER BY ouch

そしてその後

SELECT FOUND_ROWS() AS found

最初のクエリは条件と制限を含む結果を返し、2 番目のクエリは制限なしですべてのレコード数を返します

于 2012-10-28T07:04:09.843 に答える