-1

簡単なページネーション スクリプトを探していたところ、ここで見つかりました。これはうまく機能しているようです。

ただし、「2」をクリックすると、ページ 2 のように、既に存在するレコードの下にページ 2 のレコードが表示されます。したがって、基本的に 214 ページをクリックすると、1 ページにすべてのレコードが表示されます。

私はPHPの経験があまりないので、何が問題なのかわかりませんでしたpaginator.class.php。うまくいけば、ここの誰かができるでしょう。

これは、ページネーションを行うページのコードです。

else {
$query = "SELECT COUNT(*) FROM products";
$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_fetch_row($result);
$pages = new Paginator;  
$pages->items_total = $num_rows[0];  
$pages->mid_range = 9;  
$pages->paginate();  

$query1 = "SELECT serial, name, description, price, picture FROM products WHERE serial != '' ORDER BY serial ASC $pages->limit";
$result = mysql_query($query1) or die(mysql_error());
while ($row = mysql_fetch_array($result))
{
echo '<div style="margin-bottom:10px;display:inline-block;background-color:#E3E3E3;width:190px;height:200px;"><a href="'.$_SERVER['PHP_SELF'].'?serial='.$row['serial'].'"><img style="padding-top:10px;padding-left:25px;width:150px;height:150px;" src="'.htmlspecialchars($row['picture']).'"></a><br><div align="center"><b>'.htmlspecialchars($row['name']).'</b><br><h6>&euro;'.htmlspecialchars($row['price']).'</h6></div></div>&nbsp;';
};
echo '&nbsp;';
echo '<br><br><div style="margin-left:330px;">';
echo $pages->display_pages();
echo '</div>';
}

これpaginator.class.phpは、先ほど説明した Web サイトで見つけることができます。

4

1 に答える 1

0

問題はあなたの質問にあります:

"SELECT serial, name, description, price, picture FROM products WHERE serial != '' ORDER BY serial ASC $pages->limit"

$pages->limitの値を決定する必要があります。各ページに表示するレコードの数(引数のために10としましょう)を計算してから、現在のページを判別してLIMIT条件を設定するのではなく、私には思えます。

設定する必要があるのは次のようなものです。

LIMIT 30, 10

これは4ページ目です。レコード30〜40が表示されますが、これは、私が行っていると思われることではありません。

LIMIT 40

その行には、最大40のレコードが表示され、ウィンドウの下限は閉じられません。

参考までに、マニュアルのMySQLSELECT構文を見てみましょう。

于 2012-08-02T12:44:36.403 に答える