入力フィールドで、ユーザーは条件 (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
結果も表示されます....