2014-10-18 31 views
0

经过几个小时的试图找出我的分页脚本为什么没有与我的变量一起工作,我想出了一些你的帮助,我的POST变量没有被结转从我们的数据分页页面到页面。PHP:持续性POST变量跨分页页面

会话是处理这种情况的最佳方式吗?例如,我有这个:

session_start(); //start session 
$_SESSION["formdata"] = $_POST['City']; //get form data input 
$myvar = $_SESSION["formdata"]; 
$sql = "SELECT * FROM $tbl_name WHERE City = \"$myvar\" LIMIT $start, $limit"; //query 

无论如何,这似乎并没有工作。表单数据显示在第一页上,但后续页面为空白。感谢您的帮助和建议

CODE:

session_start(); 
 
\t 
 
    
 
\t 
 
\t include('sqlconnect.php'); \t // include your code to connect to DB. 
 
mysql_select_db("barter") or die(mysql_error()); 
 
\t $tbl_name="posts"; \t \t //your table name 
 
\t // How many adjacent pages should be shown on each side? 
 
\t $adjacents = 3; 
 
\t 
 
\t /* 
 
\t First get total number of rows in data table. 
 
\t If you have a WHERE clause in your query, make sure you mirror it here. 
 
\t */ 
 
\t $query = "SELECT COUNT(*) as num FROM $tbl_name"; 
 
\t $total_pages = mysql_fetch_array(mysql_query($query)); 
 
\t $total_pages = $total_pages[num]; 
 
\t 
 
\t /* Setup vars for query. */ 
 
\t $targetpage = "fp2.php"; \t //your file name (the name of this file) 
 
\t $limit = 3; \t \t \t \t \t \t \t \t //how many items to show per page 
 
\t $page = $_GET['page']; 
 
\t if($page) 
 
\t \t $start = ($page - 1) * $limit; \t \t \t //first item to display on this page 
 
\t else 
 
\t \t $start = 0; \t \t \t \t \t \t \t \t //if no page var is given, set start to 0 
 
\t 
 
\t /* Get data. */ 
 
\t 
 
\t $_SESSION["formdata"] = $_GET['City']; 
 
\t $myvar = $_SESSION["formdata"]; 
 
\t echo $myvar; 
 
\t $sql = "SELECT * FROM $tbl_name WHERE City = \"$myvar\" LIMIT $start, $limit"; 
 
\t $result = mysql_query($sql); 
 
\t 
 
\t /* Setup page vars for display. */ 
 
\t if ($page == 0) $page = 1; \t \t \t \t \t //if no page var is given, default to 1. 
 
\t $prev = $page - 1; \t \t \t \t \t \t \t //previous page is page - 1 
 
\t $next = $page + 1; \t \t \t \t \t \t \t //next page is page + 1 
 
\t $lastpage = ceil($total_pages/$limit); \t \t //lastpage is = total pages/items per page, rounded up. 
 
\t $lpm1 = $lastpage - 1; \t \t \t \t \t \t //last page minus 1 
 
\t 
 
\t /* 
 
\t \t Now we apply our rules and draw the pagination object. 
 
\t \t We're actually saving the code to a variable in case we want to draw it more than once. 
 
\t */ 
 
\t $pagination = ""; 
 
\t if($lastpage > 1) 
 
\t { \t 
 
\t \t $pagination .= "<div class=\"pagination\">"; 
 
\t \t //previous button 
 
\t \t if ($page > 1) 
 
\t \t \t $pagination.= "<a href=\"$targetpage?page=$prev\">previous</a>"; 
 
\t \t else 
 
\t \t \t $pagination.= "<span class=\"disabled\">previous</span>"; \t 
 
\t \t 
 
\t \t //pages \t 
 
\t \t if ($lastpage < 7 + ($adjacents * 2)) \t //not enough pages to bother breaking it up 
 
\t \t { \t 
 
\t \t \t for ($counter = 1; $counter <= $lastpage; $counter++) 
 
\t \t \t { 
 
\t \t \t \t if ($counter == $page) 
 
\t \t \t \t \t $pagination.= "<span class=\"current\">$counter</span>"; 
 
\t \t \t \t else 
 
\t \t \t \t \t $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; \t \t \t \t \t 
 
\t \t \t } 
 
\t \t } 
 
\t \t elseif($lastpage > 5 + ($adjacents * 2)) \t //enough pages to hide some 
 
\t \t { 
 
\t \t \t //close to beginning; only hide later pages 
 
\t \t \t if($page < 1 + ($adjacents * 2)) \t \t 
 
\t \t \t { 
 
\t \t \t \t for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) 
 
\t \t \t \t { 
 
\t \t \t \t \t if ($counter == $page) 
 
\t \t \t \t \t \t $pagination.= "<span class=\"current\">$counter</span>"; 
 
\t \t \t \t \t else 
 
\t \t \t \t \t \t $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; \t \t \t \t \t 
 
\t \t \t \t } 
 
\t \t \t \t $pagination.= "..."; 
 
\t \t \t \t $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>"; 
 
\t \t \t \t $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>"; \t \t 
 
\t \t \t } 
 
\t \t \t //in middle; hide some front and some back 
 
\t \t \t elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) 
 
\t \t \t { 
 
\t \t \t \t $pagination.= "<a href=\"$targetpage?page=1\">1</a>"; 
 
\t \t \t \t $pagination.= "<a href=\"$targetpage?page=2\">2</a>"; 
 
\t \t \t \t $pagination.= "..."; 
 
\t \t \t \t for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) 
 
\t \t \t \t { 
 
\t \t \t \t \t if ($counter == $page) 
 
\t \t \t \t \t \t $pagination.= "<span class=\"current\">$counter</span>"; 
 
\t \t \t \t \t else 
 
\t \t \t \t \t \t $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; \t \t \t \t \t 
 
\t \t \t \t } 
 
\t \t \t \t $pagination.= "..."; 
 
\t \t \t \t $pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>"; 
 
\t \t \t \t $pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>"; \t \t 
 
\t \t \t } 
 
\t \t \t //close to end; only hide early pages 
 
\t \t \t else 
 
\t \t \t { 
 
\t \t \t \t $pagination.= "<a href=\"$targetpage?page=1\">1</a>"; 
 
\t \t \t \t $pagination.= "<a href=\"$targetpage?page=2\">2</a>"; 
 
\t \t \t \t $pagination.= "..."; 
 
\t \t \t \t for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) 
 
\t \t \t \t { 
 
\t \t \t \t \t if ($counter == $page) 
 
\t \t \t \t \t \t $pagination.= "<span class=\"current\">$counter</span>"; 
 
\t \t \t \t \t else 
 
\t \t \t \t \t \t $pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>"; \t \t \t \t \t 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t } 
 
\t \t 
 
\t \t //next button 
 
\t \t if ($page < $counter - 1) 
 
\t \t \t $pagination.= "<a href=\"$targetpage?page=$next\">next</a>"; 
 
\t \t else 
 
\t \t \t $pagination.= "<span class=\"disabled\">next</span>"; 
 
\t \t $pagination.= "</div>\n"; \t \t 
 
\t } 
 
?> 
 

 
\t <?php 
 
\t \t while($row = mysql_fetch_array($result)) 
 
\t \t { 
 
\t 
 
\t \t echo ('<br>'); 
 
\t echo '<div style="margin-left:52%;">'; 
 
\t echo '<div style=" width:100%; . " id="Posts">'; 
 
\t 
 
\t echo '<h3>' . $row["Title"] .'</h3>'; 
 
\t echo 'posted by:' . $row["Name"] . "<br/>"; 
 
\t echo 'Posted On:' . $row["Time"] . "<br/>"; 
 
\t 
 
\t echo $row["postname"] . "<br/>"; 
 
\t 
 
\t echo $row["Post"] . "<br/>"; 
 
\t echo ('<a href=http://brightstardetailers.ddns.net/Barter/' . $row["postname"] . '.php' . '>Full Post</a>' . "<br/>"); 
 

 
\t 
 
\t echo '</div>'; 
 
\t echo '</div>'; 
 
\t 
 
\t \t } 
 
\t ?> 
 

 
<?=$pagination?>

+0

你怎么没有一直在做自己的一页?这将有所帮助。 – Rasclatt 2014-10-18 02:56:00

+0

我是。但脚本的分页部分将页码附加到URL的末尾,然后刷新页面 – user970638 2014-10-18 02:58:54

+0

如果它附加了URL,那么您是否使用'$ _GET'? – Rasclatt 2014-10-18 03:00:57

回答

1

你的分页程序加载了新的一页。它不会将POST请求转发到新的页面加载,所以当页面加载时,$_POST为空。通过常规的网页链接填充$_POST将不会有真正的好方法。您必须提交表单或通过AJAX进行分页。

我认为最简单的做法是跳过使用会话,而不是将您的分页链接包装在<form>中。使用您的$_POST数据填充此表单中的隐藏输入,并使用JavaScript来监听每个分页链接上的点击事件。当单击其中一个链接时,可以使用页码填充另一个隐藏的输入(如果要通过POST传递页码),或者修改表单的action属性以将页码包括在页面的GET部分中URL。然后用JavaScript提交表单。

这将使您的POST数据在单击分页链接之后填充,除了您想要的新页面。无需在会话中全局存储资料。

+0

同样的问题和在我的情况下,我想更好的选择移动到_GET并添加params到分页URL ... – raison 2017-06-21 08:41:55