在输入字段中,用户输入条件 - 从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的所有(未过滤)数据。如果我使用LIMIT
,也会显示来自mysql的未过滤结果....
答案 0 :(得分:0)
在您的查询中使用LIMIT
,查看以下example,您可以尝试以下内容:
SELECT
*
FROM
2_1_journal
WHERE
RecordMonth = ?
LIMIT [start_row],[number_of_rows_per_page]
例如,假设您有2个页面,每页10行,那么2个查询的LIMIT
(每页一个)将是:
1)LIMIT 0,10
2)LIMIT 10,10
答案 1 :(得分:0)
您应该像这样更改您的查询:
SELECT * FROM 2_1_journal WHERE RecordMonth = ? LIMIT = $number_of_results_per_page OFFSET ($page_number*$number_of_results_per_page);
在这里你还需要计算页码,你应该使用mysql的限制和偏移概念。