这个问题对某些人来说是一个简单的问题,但我无法理解我需要做些什么来解决这个问题。
我有一个网页显示一个带有分页的表格。表上方是会话从上一页传递的一些信息,用户从下拉菜单中选择一个选项。
当用户分页到第二页等时,传递的信息将丢失,可能会对页面刷新执行。
我已经搜索并观看了许多关于Ajax,jquery和php等的教程(超过20个),但我无法理解我在看什么。当我遵循教程时,我无法解释可以解决我的问题的教程。
我想分步指南将是解决此问题的唯一方法,而不是让某人为我做这件事。
我肯定会感谢在这件事上的任何帮助。
我尝试传递到分页及以后的第二页的代码是变量、$brandname
、$picked
、$pickchek
。下面列出了代码的 php 部分。
echo "<div id=firstpick>";
$brandname = $_GET['brandname'];
$picked = $_GET['picked'];
$pickcheck = $_GET['pickcheck'];
$brands =($brandname);
$_SESSION['$brandname']= $brandname;
$pick =($picked);
$_SESSION['$picked']= $pick;
$picker =($pickcheck);
$_SESSION['$pickcheck']=$picker;
echo "</div>";
$tbl_name="pickme";
$adjacents = 3;
$query = "SELECT COUNT(*) as num FROM tirestock";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages["num"];
$targetpage = "connecttest.php"; //your file name (the name of this file)
$limit = 5; //how many items to show per page
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$page=mysql_real_escape_string($page);
if($page)
$start = ($page - 1) * $limit; //first item to display on this page
else
$start = 0;
$sql = "SELECT * FROM tirestock LIMIT $start, $limit";
$result = mysql_query($sql);
if ($page == 0) $page = 1; /if no page var is given, default to 1.
$prev = $page - 1; //previous page is page - 1
$next = $page + 1; //next page is page + 1
$lastpage = ceil($total_pages/$limit);//lastpage is = total pages / items per
$lpm1 = $lastpage - 1; //last page minus 1
$pagination = "";
if($lastpage > 1)
{
$pagination .= "<div class='"pagination'">";
//previous button
if ($page > 1)
$pagination.= "<a href='"$targetpage?page=$prev'">« previous</a>";
else
$pagination.= "<span class='"disabled'">« previous</span>";
//pages
if ($lastpage < 7 + ($adjacents * 2))//not enough pages to bother breaking
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span
class='"current'">$counter</span>";
else
$pagination.= "<a href='"$targetpage?
page=$counter'">$counter</a>";
}
}
elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some
{
//close to beginning; only hide later pages
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2);
$counter++)
{
if ($counter == $page)
$pagination.= "<span
class='"current'">$counter</span>";
else
$pagination.= "<a href='"$targetpage?
page=$counter'">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href='"$targetpage?
page=$lpm1'">$lpm1</a>";
$pagination.= "<a href='"$targetpage?
page=$lastpage'">$lastpage</a>";
}
//in middle; hide some front and some back
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<a href='"$targetpage?page=1'">1</a>";
$pagination.= "<a href='"$targetpage?page=2'">2</a>";
$pagination.= "...";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<span class='"current'">$counter</span>";
else
$pagination.= "<a href='"$targetpage?page=$counter'">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href='"$targetpage?page=$lpm1'">$lpm1</a>";
$pagination.= "<a href='"$targetpage?page=$lastpage'">$lastpage</a>";
}
//close to end; only hide early pages
else
{
$pagination.= "<a href='"$targetpage?page=1'">1</a>";
$pagination.= "<a href='"$targetpage?page=2'">2</a>";
$pagination.= "...";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class='"current'">$counter</span>";
else
$pagination.= "<a href='"$targetpage?page=$counter'">$counter</a>";
}
}
}
//next button
if ($page < $counter - 1)
$pagination.= "<a href='"$targetpage?page=$next'">next »</a>";
else
$pagination.= "<span class='"disabled'">next »</span>";
$pagination.= "</div>'n";
}
echo "<div style='font-weight:bold' text-align:center;><font size='5'>You picked Brand:
$brandname<br></br></hr></div>";
echo "<div style='font-weight:bold'><font size='5'>You picked Size: $picked<br></br></hr>
</div>";
echo "<div style='font-weight:bold'><font size='5'>You picked Type: $pickcheck<br></br>
</hr></div>";
附加品牌名称、拾取和拣选检查到分页脚本创建的链接。
<a href='"$targetpage?page=$prev&brandname=$brandname&picked=$picked&pickcheck=$pickcheck'">« previous</a>`
你知道如何在 Javascript 中使用 localStorage 吗?这里有一个教程,介绍如何让它在 php 中为你工作。http://www.devshed.com/c/a/PHP/Create-A-ClientSide-Cache-in-PHP/1/
您可以使用它来存储页面更改之间的变量。
当然,如果你没有JS,那么这将不是很有用!
您可以设置会话中页面之间丢失的数据,或者更好的解决方案是使用 ajax 进行分页。这个想法非常简单,您需要在分页链接上附加javascript中的单击处理程序,以使用ajax加载页面数据。如果你正在使用jquery,它会为你完成所有的艰苦工作。阅读jquery .ajax()或更简单的.load()方法,它们会有所帮助。
如果你的javascript知识有限,一个快速的解决方案是使用PHP会话来持久化页面之间的数据,如果你能理解它,一个更好的体验是使用ajax。理想情况下,您将实现两者,与渐进式增强保持一致,以便它在禁用 javascript 的情况下工作。
编辑:
点击处理程序的简单 jquery 示例是:
$(".pagination a").click(function(e){ // this line binds the handler to your pagination
e.preventDefault(); //this prevents the link being loaded as a new page, the default behaviour
var pageToLoad = $(this).attr("href"); //we get the url of the page to load in by ajax
$("#page-contents").load(pageToLoad); //replace the contents of the div with the id="page-contents" with the result of the ajax request.
});
这将要求您首先包含 jquery 库,并将要替换为分页的主要内容放在 id 为 #page-content 的元素中。请注意,分页链接中的 href 必须只返回要替换的页面片段,而不是整个 html 页面。你可以通过使用jquery load方法从你调用的url返回一个php块,或者只是在某个ID中加载完整html页面的块来做到这一点