我制作了一些代码来过滤我的价格,但它不保存那个过滤器,我发布信息,当我刷新时,所有丢失。它只显示一个过滤页面,我知道更多的项目,但它只显示一页。
if(isset($_POST['sort'])){
$cena_no = trim($_POST['fl_cena_no']);
$cena_lidz = trim($_POST['fl_cena_lidz']);
if(empty($cena_lidz)){
$cena_lidz = '99999999999999999999999999999999';
}
if(empty($cena_no)){
$cena_no = '0';
}
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
$pages = mysql_query("SELECT * FROM zirglietas_pardod");
$pages = ceil(mysql_result($pages, 0) / 15);
$querystring = "";
foreach ($_GET as $key => $value) {
if ($key != "page") $querystring .= "$key=$value&";
}
$result = mysqli_query($con,"SELECT * FROM zirglietas_pardod WHERE cena >= $cena_no AND cena <= $cena_lidz ORDER BY cena ASC LIMIT " . (($page - 1) * 15) . ", 15 ");
}
Mby需要添加会话吗?
(p.s 2小时后我会回来,我可以回答)
答案 0 :(得分:0)
首先:不要使用mysql:http://us1.php.net/mysql_result。使用PDO或mysqli(就像你已经在它下面做了几行)。
您正在检查是否已设置$_POST['sort']
并准备$querystring
和$pages
变量,但您未在示例中使用它们。你到底想要什么?现在有点不清楚,所以我需要猜猜你想要什么。请删除不必要的代码或解释相关原因。
您正在按POST值设置排序。该值只能由该综合浏览量使用。提示:使用var_dump($_POST);
查看可以使用的变量。
您可以使用session(和/或Cookie),但另一个技巧是将排序值添加到网址,即index.php?orderby=name&order=desc
。由于您正在设置偏移量(LIMIT),我认为这是您想要的。这取决于你。
答案 1 :(得分:0)
if(isset($_POST['sort'])){
$cena_no = mysql_real_escape_string(trim($_POST['fl_cena_no']));
$cena_lidz = mysql_real_escape_string(trim($_POST['fl_cena_lidz']));
if(empty($cena_lidz)){
$cena_lidz = '99999999999999999999999999999999';
}
if(empty($cena_no)){
$cena_no = '0';
}
$_SESSION['sort'] = $_POST;
$result = mysqli_query($con,"SELECT * FROM zirglietas_pardod WHERE cena >= $cena_no AND cena <= $cena_lidz ORDER BY cena ASC");
}
并阅读
if (isset($_SESSION['sort'])){
$cena_no = $_SESSION['sort']['fl_cena_no'];
$cena_lidz = $_SESSION['sort']['fl_cena_lidz'];
if(empty($cena_lidz)){
$cena_lidz = '99999999999999999999999999999999';
}
if(empty($cena_no)){
$cena_no = '0';
}
$result = mysqli_query($con,"SELECT * FROM zirglietas_pardod WHERE cena >= $cena_no AND cena <= $cena_lidz ORDER BY cena ASC");
}
并且破坏会话,现在我可以继续下一步:)