1

入力フィールドで、ユーザーは条件 (mysql から取得するデータ) を入力します。たとえば、ユーザーが月が 10 月 (または 10) の mysql 行を取得したいとします。

ここでユーザー入力を取得します$date_month = $_POST['date_month'];

次に、ページネーションの mysql ステートメントとコード

try {
$sql = $db->prepare("SELECT * FROM 2_1_journal WHERE RecordMonth = ? ");
$sql->execute(array($date_month));

foreach ($sql as $i => $row) {
}

$number_of_fetched_rows = $i;
$number_of_results_per_page = 100;
$total_pages = ceil($number_of_fetched_rows / $number_of_results_per_page);

if (isset($_GET['page']) && is_numeric($_GET['page'])) {
$show_page = $_GET['page'];

if ($show_page > 0 && $show_page <= $total_pages) {
$start = ($show_page -1) * $number_of_results_per_page;
$end = $start + $number_of_results_per_page; 
}
else {

$start = 0;
$end = $number_of_results_per_page; 
}   
}
else {
$start = 0;
$end = $number_of_results_per_page; 
}

for ($page_i = 1; $page_i <= $total_pages; $page_i++) {
echo "<a href='__filter_mysql_data.php?page=$page_i'>| $page_i |</a> ";
}

}

したがって、ユーザーが月 (10) を入力すると、スクリプトは月が 10 であるすべての行を表示します。ページ番号 1 を表示します。しかし、ユーザーが他のページ番号をクリックすると、スクリプトは mysql からのすべてのデータを表示します (10 だけでなくすべての月)

私が見ているもの-他のページ番号をクリックすると、ページがリロードされます。つまり、php変数の値が「消える」ことを意味します。ページのリロード$date_month値が設定されていない(失われた/「消えた」)後、理解できますか?価値を保つには?それとも、ページネーションのより良い解決策でしょうか?

アップデート。

動作は次のとおりです。

1) 入力フィールドで月 10 (10 月) を設定します。

2) ボタンをクリックして、月が 10 (10 月) の mysql から表示データを取得します。これまでのところ大丈夫です

3) ページ番号 2 をクリックして、mysql からのすべてのデータを表示します(10 (10 月) だけでなく、すべての月)

使用しようとしましLIMITたが、役に立ちません。

おそらく問題はこのコードに関連しています

for ($page_i = 1; $page_i <= $total_pages; $page_i++) {
echo "<a href='__filter_mysql_data.php?page=$page_i'>| $page_i |</a> ";
}

$page_i(私にとって)理解できない理由でクリックすると、mysqlからのすべての(フィルタリングされていない)データが表示されます。使用すると、mysql からフィルタリングされていないLIMIT結果も表示されます....

4

2 に答える 2

0

LIMITクエリで使用します。次のを見てください。次のようなものを試すことができます。

SELECT 
    * 
FROM 
    2_1_journal 
WHERE 
    RecordMonth = ? 
LIMIT [start_row],[number_of_rows_per_page]

たとえば、1 ページあたり 10 行の 2 ページがあるとしますLIMIT。2 つのクエリ (1 ページあたり 1 行) は次のようになります。

1) LIMIT 0,10
2)LIMIT 10,10

于 2013-06-17T06:54:02.297 に答える
0

次のようにクエリを変更する必要があります。

SELECT * FROM 2_1_journal WHERE RecordMonth = ? LIMIT = $number_of_results_per_page OFFSET ($page_number*$number_of_results_per_page);

ここでは、ページ番号も計算する必要があり、mysql の制限とオフセットの概念を使用する必要があります。

于 2013-06-17T06:59:04.737 に答える