2017-11-14 15 views
-1

MySQLからデータをクエリしようとしています。ページテーブルを作成するにはデータテーブルが必要です。以下のコードを参照してください。制限の後に "OFFSET"を使用することがわかります。 "、"も使用できます "、"MySQL PHPページネーション - すべてのページで同じ結果を得るか全く結果なし

しかし、私は両方を試しましたが、結果は表示されず、結果が表示されますが、同じページでも同じ結果が表示されます。ここで

コードは次のとおりです。

// define how many results you want per page 
$results_per_page = 10; 

// find out the number of results stored in database 
$sql='SELECT * FROM ETF'; 
$result = mysqli_query($con,$sql); 

$number_of_results = mysqli_num_rows($result); 

// determine number of total pages available 
$number_of_pages = ceil($number_of_results/$results_per_page); 

// determine which page number visitor is currently on 
if (!isset($_GET["page"])) { 
    $page = 1; 
} else { 
    $page = $_GET["page"]; 
} 

// determine the sql LIMIT starting number for the results on the displaying page 
$this_page_first_result = ($page-1)*$results_per_page; 

// retrieve selected results from database and display them on page 
$sql='SELECT * FROM ETF LIMIT '. $this_page_first_result . " OFFSET " . $results_per_page; 

$result = mysqli_query($con, $sql); 

while($row = mysqli_fetch_assoc($result)) { 
    echo $row['ETF'] . ' ' . $row['ETF NAME']. '<br>'; 
} 


// display the links to the pages 
for ($page=1;$page<=$number_of_pages;$page++) { 
    echo '<a href="index.php/stocks/sec-forms/?page=' . $page . '">' . $page. '</a>'; 
} 
+0

オフセットを変更する必要があります。オフセット10を変更する必要があります。オフセット10の後に20をオフセットします。 –

+0

'OFFSET'は使用しないでください。 https://stackoverflow.com/a/48292658/1766831 –

答えて

0

私は "" あなたが使用して何を意味するかわからないんだけど:

  1. LIMITは10でなければなりません - つまり$ results_per_page(あなたの定数)

  2. オフセットは、使用しているページによって動的でなければなりません。 1ページ目で、OFFSET = 0(または、必要に応じて、1ページ目でOFFSETを省略することもできます)。 2ページで、例のOFFSETは10にする必要があります。

  3. ORDER BY句はどこですか? LIMIT/OFFSETが一貫して機能するには、これを行うことが重要です。

  4. これは最終的なプロダクションコードであるかどうかは分かりませんが、副次的な注意点があります。本番環境では、クエリで直接$ _GETを使用しないでください。あなたは現時点ではありませんが、上記のために何をするかによって、SQLインジェクションを防ぐために何かをする前に$ _GETパラメータが整数であることを確認してください。

+0

を参照してください。私のコードのこの部分のような料金は、データがページとは無関係に同じ値を繰り返す原因となっています。そのページを正しく取得できません。
//どのページ番号の訪問者が現在いるかを確認する if(!isset($ _ GET ["page"])){ $ page = 1; } else { $ page = $ _GET ["page"]; } //表示ページで結果のsql LIMIT開始番号を決定します。 $ this_page_first_result =($ page-1)* $ results_per_page; – Yousuf

+0

私のポイントを見てください1、LIMITを$ results_per_pageに設定しましたか? SQLを印刷(デバッグ)して、正しいかどうかを確認します。 – rishijd

関連する問題