我正在尝试向搜索项页面添加分页功能。所以我添加了一个UL
为
echo '<ul>';
for($i=1; $i<=$pageCount; $i++)
{
echo '<li><a href="' . $_SERVER['PHP_SELF'] . '?page=' . $i . '">' . $i . '</a>';
}
echo '</ul>';
当我点击寻呼机中的Page No时,我可以通过
获取页码if (isset($_GET['page']))
{
$pageNo = $_GET['page'];
}
但我无法保留用户输入的文字来搜索项目。我尝试了$_POST['txtSearchText']
,但在刷新页面后它没有保留该值。
有没有办法在通过超链接点击自我加载页面后保留from值(不使用会话)?
答案 0 :(得分:6)
您可以让链接提交带有搜索参数的隐藏表单,也可以将它们序列化为查询字符串的参数,以便与页码一起发送。
在第一种情况下,您需要Javascript(因此您的“A”链接实际上会在表单中设置一个隐藏字段,并带有相应的页码,然后提交表单)。 在第二种情况下,您不需要它,但是您使查询字符串不那么人性化。
否则会有会话(您可以将搜索保存在会话对象中,也可以在分页链接中使用令牌,以便允许一次打开多个页面)甚至是cookie。
答案 1 :(得分:2)
如果您正在使用GET请求,则只需将搜索查询添加到链接:
echo '<ul>';
for($i=1; $i<=$pageCount; $i++)
{
echo '<li><a href="' . $_SERVER['PHP_SELF'] . '?page=' . $i . '&query='.url_encode($search_query).'">' . $i . '</a>';
}
echo '</ul>';
如果您希望使用POST请求,则应提交@Palantir表格或使用AJAX。
在两个浏览器标签中打开两个不同的查询时,由于可能发生冲突,我不会使用会话来存储搜索查询。
答案 2 :(得分:0)
对于基于GET的搜索分页,我所做的是创建一个名为“Params”的类,其中包括以下方法:readURLParams和generateURLParams。它还包含每个潜在参数的成员变量,例如搜索项,位置,页码,过滤器等。加载页面时,首先运行“readURLParams”,它将读取所有GET参数到对象的成员变量中。当您准备为分页功能创建链接时,您可以运行genereateURLParams,它将创建您将附加到分页链接的URL字符串。
现在您不再需要手动跟踪所有URL参数,如果要将方法更改为POST或其他形式的参数传递,则可以向该类添加其他功能。