输入表格,如
<form action="<?php echo (htmlspecialchars($_SERVER["PHP_SELF"] .'?page=1')) ?>" method="post">
<input type='text' name='date_month' value='<?php echo $_POST['date_month'].$_GET['date_month']?>'>
</form>
然后收到输入
$post_date_month = $_POST['date_month'].$_GET['date_month'];
基于来自mysql的输入select / get过滤数据
由于可能有很多行数据,因此创建了分页。喜欢这个
for ($page_i = 1; $page_i <= $total_pages; $page_i++) {
echo "<a href='__filter_mysql_data.php?page=$page_i&date_month=$post_date_month&date_year=$post_date_year'>| $page_i |</a> ";
}
注意!如果在url中我不使用&date_month=$post_date_month
,那么当用户点击页码$page_i
时,脚本将显示来自mysql的所有数据(不基于{{ 1}};不仅是用户选择的月份,而是所有月份,因为页面重新加载后$post_date_month
“消失”。)
现在这是我唯一可行的解决方案(已经找到了几个分页类的例子,但这些例子对我来说非常复杂,所以不能在合理的时间内对我的需求进行修改)。因此决定创造一些简单的东西。
脚本可以根据需要运行,只有这个$_POST['date_month']
看起来有点'疯狂'。所以问题是:代码是否可接受(可以在脚本中使用)?使用相同的查询(单击),用户可以设置/传递$ _POST或$ _GET,而不是两者。
更新
基于ØHankyPankyØ建议(不幸删除)改变
$post_date_month = $_POST['date_month'].$_GET['date_month'];
到
$post_date_month = $_POST['date_month'].$_GET['date_month'];
答案 0 :(得分:1)
代码有点奇怪,但我认为这是可以接受的。只注意不要将$ _POST ang $ _GET变量传递给查询,因为它可以是Sql注入的向量。
答案 1 :(得分:1)
您可以像这样构建表单,但是当您使用POST
提交表单时,该特定变量将完全存储在$_POST['date_month']
中。
在您的情况下,当您提交表单时,您只会在page
中找到GET
变量(假设$_SERVER["PHP_SELF"]
中没有查询字符串)。
所以你必须使用:
$post_date_month = $_POST['date_month'];
但是,如果您希望用户仅以一种方式(post
或get
)提供月份,则最好使用类似的内容(为了清晰起见而写出来):
if (isset($_POST['date_month']))
{
$post_date_month = $_POST['date_month'];
}
elseif (isset($_GET['date_month']))
{
$post_date_month = $_GET['date_month'];
}
else
{
// no month given, so for example:
$post_date_month = '';
}