0

私は自分のサイトのレビュー セクションを作成しており、MySQL クエリによって返されたデータの量に基づいてページを生成したいと考えています。たとえば、15 MySQL Rows pr ページのように、$_GET[pageID] アプローチを調べてみましたが、単にそれを取得しないでください。

誰かが詳しく説明したり、提案をくれたりできますか? 現時点では、Sql の結果を reviews.php ページの div にエコーします。

私が現時点で持っているのはこれです:

<?php
$con = mysql_connect("localhost", "cencor","cencor");
 if (!$con) {
    die('<br /><br />Could not connect: ' . mysql_error());
}

function feedbackList() {
mysql_select_db("cencor") or die(mysql_error());

$localIP = $_SERVER['REMOTE_ADDR']; // get IP

$rows = mysql_query("SELECT * FROM feedback WHERE approved=1 ORDER BY sorting DESC");

while ($row = mysql_fetch_array($rows)) {

        echo '
        <div id="reviews">
            <div id="date">'. $row['date'] . "</div> <div id='time'>" . $row['time'] .'</div>
            <h2>'. $row['name'] .'</h2>
            <br>
            <p>'. $row['feedback'] .'</p>
        </div>
        ';
        }
}       
?>

時刻と日付は別のスクリプトで設定されているため、心配する必要はありません。このコードは正常に実行されます

4

2 に答える 2

0

まず、テーブル内のすべての行の数を取得します。

SELECT COUNT(*) FROM feedback WHERE approved=1

これで、ページ数がわかり、各ページへのリンクを表示できます。

最初のページをクエリします。

SELECT * FROM feedback WHERE approved=1 ORDER BY sorting DESC LIMIT 0, 15

これにより、テーブルの最初の15行が表示されます。次のページで使用します:

LIMIT 15, 15
LIMIT 30, 15
LIMIT 45, 15

等々。最初のLIMITパラメーターを必要な行のオフセットに置き換えるだけです。2番目のLIMITパラメーターは、返される行数です。

于 2013-02-04T17:56:40.837 に答える
0

すべてのレビューを 1 つの SQL ステートメントで返し、PHP の配列チャンク関数を使用してそれらを複数の配列に分割することができます。 http://php.net/manual/en/function.array-chunk.php 次に、ページ上の各配列を JS 変数として保存し、AJAX などを使用できます。

この関数に配列 (すべてのレビュー) と数値 (15 など) を渡すと、長さ 5 の可能な配列がいくつでも出力されます。したがって、配列に 150 のレビューがあり、制限したい場合15 レビューのページの場合、この関数はそれぞれ 15 要素の 10 個の配列を返します。

次に、レビューの各配列を取り、それをページとして表します。

または、ページごとに SQL で LIMIT を使用できます。次のようなものが必要です。

LIMIT 0, 15
LIMIT 15, 15
LIMIT 30, 15

...など

最初の数字は開始するインデックスで、2 番目の数字は表示する結果の数です。

したがって、 (15 * (pageNumber - 1)) のようなことを実行して、各ページの最初の番号を取得できます (pageNumber が 1 から始まると仮定)。

于 2013-02-04T18:06:41.143 に答える