当前位置: 首页 > 知识库问答 >
问题:

下一个结果/第2页只是重复搜索结果分页脚本的相同结果

杨乐
2023-03-14

我有一个带有分页页面的搜索结果,它只适用于第一个结果页面1。当用户输入具有11个结果的搜索关键字时,他们将进行搜索。php并正确查看结果:

«è第1页,共2页,显示11个结果中的1-8个›»

但是,当用户单击

"在2页中的第1页,显示11个结果中的1-8个"

前8个结果与预期的最后3个结果相同

这是我单击第2页的下一个箭头时看到的URL:http://example.com/search/2/?search_text=usertext

以下是完整的代码:

$search = $_GET['search_text'];   

try {

// Find out how many items are in the table
$total = $dbh->query("
SELECT
COUNT(*)
FROM
stories
WHERE
stories.category = \"$search\"
")
->fetchColumn();

// How many items to list per page
$limit = 8;

// How many pages will there be
$pages = ceil($total / $limit);

// What page are we currently on?
$page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT,
array(
'options' => array(
    'default'   => 1,
    'min_range' => 1,
),
)));

// Calculate the offset for the query
$offset = ($page - 1)  * $limit;

// Some information to display to the user
$start = $offset + 1;
$end = min(($offset + $limit), $total);

// The "back" link
$prevlink = ($page > 1) ? '<a href="?page=1" title="First page">&laquo;</a>   
<a href="?page=' . ($page - 1) . '" title="Previous page">&lsaquo;</a>' : 
'<span class="disabled">&laquo;</span> <span class="disabled">&lsaquo;
</span>';

 // The "forward" link
$nextlink = ($page < $pages) ? '<a href="?page=' . ($page + 1) .
'&search_text=' . $search . '" title="Next page">&rsaquo;</a> <a href="
?page=' . $pages . '" title="Last page">&raquo;</a>' : '<span
class="disabled">&rsaquo;</span> <span class="disabled">&raquo;</span>';

// Display the paging information
echo '<div id="paging"><p>', $prevlink, ' Page ', $page, ' of ', $pages, '
pages, displaying ', $start, '-', $end, ' of ', $total, ' results ',
$nextlink, ' </p></div>';



 // Prepare the paged query
 $stmt = $dbh->prepare('
    SELECT
        *
    FROM
        stories
    WHERE
        (stories.category = :input)
    ORDER BY
        SID
    LIMIT
        :limit
    OFFSET
        :offset
');

// Bind the query params
$stmt->bindParam(':input', $search, PDO::PARAM_STR);
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();


// Do we have any results?
if ($stmt->rowCount() > 0) {
    // Define how we want to fetch the results
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $iterator = new IteratorIterator($stmt);

    // Display the results

共有1个答案

常博裕
2023-03-14

一旦你点击其中一个页面链接,你就会丢失帖子数据

所以$search=$\u POST['search\u text'] 不起作用。除非你有理由不这样做,否则我不明白你为什么不能使用$\u GET来代替,然后将搜索文本放入你的链接中。例如

'<a href="?page=1&search_text=' . $search . '" title="First page">&laquo;</a>'

不要忘记更改表单以使用GET方法。

我将研究php函数http\u build\u query,以帮助在用户输入引号时创建链接。

 类似资料:
  • 我到处找了又找,但还是找不到解决问题的办法。我还不熟悉php和codeigniter,所以可能我已经错过了答案,但不管怎样,下面是我要做的。 这是我的控制器(c_index.php)-调用搜索函数并对结果数组执行分页。 这是我的视图(index.php)-基本上只是显示分页结果 我的模型(m_search.php)-基本上搜索数据库并返回结果数组。 类M_搜索扩展了CI_模型{ 现在我的问题是保留

  • 问题内容: 我必须从该URL依次单击每个搜索结果: 搜索准则 我首先从显示的文本中提取结果总数,以便可以设置迭代的上限 然后在范围(1,number)中像i一样捍卫循环: 但是,浏览完首页上的前10个结果后,列表索引超出范围(可能是因为没有更多可单击的链接)。我需要单击“下一步”以获取下10个结果,依此类推,直到完成所有搜索结果。我该怎么做呢? 任何帮助,将不胜感激! 问题答案: 问题是具有id的

  • 我正在使用基于Laravel和Twig的OctoberCMS。 十月有一个范围分页功能,但它缺乏我需要的功能,所以我必须使用Laravel返回结果和分页。 我有一个厨房分类和图像数据库记录。 我试图从URL中获取标识符,以过滤回数据库结果。 问题 代码返回自然图像并显示分页。但是当我点击一个页码时,url会变成或,但页面按钮停留在上,记录/图像不会更改。 这就像php在下一页重置,并再次显示第1页

  • 我到处寻找解决方案,尝试了不同的解决方案,包括Chip Bennett在这里详细解释的解决方案,但我似乎仍然无法让它工作。 结果的第一页工作正常,但是从第2页开始,它只显示索引模板,并且仍然显示页面未找到。这是我的代码: 功能。php 提取查询参数的代码 循环代码: 任何建议将不胜感激。 编辑: 我还注意到,当我尝试访问第2页时,URL被修改了。 这是第1页URL: 第2页URL:

  • 定义 结果页 图片展示 代码演示 import Result from 'pile/dist/components/result' <Result size="big" title="成功" message="用于表示操作成功" iconHtml={<span className="icon-toast_right"></span>} /> 属性 参数 描述 数据类型 默认值 size 三种展

  • 结果页通常来说可以认为进行一系列操作步骤后,作为流程结束的总结性页面。结果页的作用主要是告知用户操作处理结果以及必要的相关细节(可用于确认之前的操作是否有误)等信息;若该流程用于开启或关闭某些重要功能,可在结果页增加与该功能相关的描述性内容。 实现这个功能比较容易,使用微信 API wx.navigateTo()即可,mpvue框架中示例代码如下: <template> <div class=