Paginando via post com session
Olá meus amigos!
Estou tentando fazer uma paginação via $_POST ultilizando SESSION para passar as variáves adiante, pra quando o usuário avançar ou retornar as paginas a busca realizada continue fluindo.
Com $_GET eu consigo paginar normal, porém, acho que fica mais vulnerável, e com SESSION tudo ficaria mais legal.
Está aí o meu código abaixo, alguém pode ma ajudar, por gentileza?
<?php
session_start();
include "../db_connect.php";
?>
<form action="search.php" method="post">
<input type="text" name="name" />
<select name="type">
<option value="all">All</option>
<?php
// there is array for those
foreach($sort_by_s AS $num => $type) {
echo "<option value=\"".$num."\">".$type."</option>\n";
}
?>
</select>
<select name="encoder">
<option value="all">All</option>
<?php
// there is array for those
foreach($encoders AS $e) {
echo "<option value=\"".$e."\">".$e."</option>\n";
}
?>
</select>
<input type="submit" name="search" value="Search"/>
</form>
<?php
if(isset($_POST['search'])) {
//gets user input from form
$name = $_POST['name'];
$type = $_POST['type'];
$encoder = $_POST['encoder'];
//checks if name and type and encoder are selected
if($name && $type && $encoder) {
//name must be more than 2 chars
if(strlen($name) < 2) {
echo $name . " " . $type . " " . $encoder . "<br />shorts";
}else {
// if type isn't selected then make it empty
if($type == "all") {
$type = "";
//otherwise search from db for selected type
}else {
$type = " AND `type`='".$type."'";
}
//if encoder isn't selected make it empty
if($encoder == "all") {
$encoder = "";
//otherwise search from db for selected encoder
}else {
$encoder = " AND `encoder`='".$encoder."'";
}
// search query based on the checking on top
$searchSql = "SELECT * FROM `mov_index` WHERE `display`='1' AND `title` LIKE '%".$name."%' ".$type.$encoder;
#echo $sql;
$_SESSION['searchSql'] = $searchSql;
//echo $_SESSION['searchSql'];
//pagination security
$page =(!$_GET['page'] || $_GET['page'] < 0) ? "1" : $_GET['page'];
$page = ceil($page);
$limit = 25;
$start = $limit;
$end = $page*$limit-($limit);
if(isset($_GET['page'])) {
if(!is_int($start) && !is_int($end)) {
echo "ERRRORR";
die;
}elseif($start < 0 || $end < 0) {
echo "ERRRORR";
die;
}
}
//end of pagination security
//selects first 25 results from search query
$select_res = mysql_query($_SESSION['searchSql']." ORDER BY title DESC LIMIT ".$end.",".$start."") or die(mysql_error());
while($row = mysql_fetch_assoc($select_res)) {
//display results here
}
//pagination starts
//amount check is search query
$amount_check = $_SESSION['searchSql'];
$amount_check_res = mysql_query($amount_check) or die(mysql_error());
$amount_count = mysql_num_rows($amount_check_res);
$pages = ceil($amount_count/$limit);
$pag = $page - 1;
$pagesystem = "";
if($pages == 0) {
$pagesystem .= "No pages";
}else {
if($pages == 1) {
$pagesystem .= "Page 1";
}else {
if($pag == 0) {
$pagesystem .= "« First ";
}else {
$pagesystem .= "<a href=\"search.php?page=1\">« First</a> ";
}
if($pages > 1) {
if($page > 1) {
$pagesystem .= " <a href=\"search.php?page=".($page - 1)."\">Prev.</a> ";
}else {
$pagesystem .= " Prev. ";
}
if(($page - 2) >= 1) {
if(($page -2) > 1) {
$pagesystem .= "...";
}
$pagesystem .= " <a href=\"search.php?page=".($page - 2)."\">".($page - 2)."</a> <a href=\"search.php?page=".($page - 1)."\">".($page - 1)."</a> ";
}else {
if(($page - 1) >= 1) {
$pagesystem .= " <a href=\"search.php?page=".($page - 1)."\">".($page - 1). "</a> ";
}
}
}
$pagesystem .= $page . " ";
if($pages > 1) {
if(($page + 2) <= $pages) {
$pagesystem .= " <a href=\"search.php?page=".($page + 1)."\">".($page + 1)."</a> <a href=\"search.php?page=".($page + 2)."\">".($page + 2)."</a> ";
if(($page + 2) < $pages) {
$pagesystem .= "...";
}
}else {
if(($page + 1) <= $pages) {
$pagesystem .= " <a href=\"search.php?page=".($page + 1)."\">".($page + 1)."</a> ";
}
}
if($page < $pages) {
$pagesystem .= " <a href=\"search.php?page=".($page + 1)."\">Next</a> ";
}else {
$pagesystem .= " Next ";
}
}
if($page == $pages) {
$pagesystem .= " Last »";
}else {
$pagesystem .= " <a href=\"search.php?page=".($pages)."\">Last »</a> ";
}
}
}
//display pagination
echo $pagesystem;
}
}// end of if($name && $type && $encoder)
}//end of if(isset[post[search]])
?>
Sei que com $_GET é mais viável, mas prefiro com SESSION!Discussão (12)
Carregando comentários...