【问题标题】:How to get search key when someone edit the result after search当有人在搜索后编辑结果时如何获取搜索键
【发布时间】:2016-01-09 11:26:18
【问题描述】:

在我的项目中有一些记录的列表。用户可以按项目名称搜索记录。搜索后用户可以编辑特定记录。编辑后,当用户现在单击更新按钮时,它正在重定向到列表页面,但搜索结果消失了,所有记录都在显示。

更新后我只想显示搜索到的记录而不是全部。如何找回搜索键?如果有其他更好的方法,我不想使用会话。

我正在使用 codeigniter。

例如:

有 10 条记录的列表。用户通过“ABC”搜索记录。结果来了,其中有 5 条记录之类的“ABC”项目来。然后用户编辑一条记录并更新它。更新后,我想仅显示带有搜索键“ABC”的 5 条记录。现在它显示 10(全部)记录,因为我在没有搜索键的列表页面上重定向。我不知道该怎么做。 :(

【问题讨论】:

  • 添加一些代码或创建一个演示

标签: php codeigniter search


【解决方案1】:

我个人会在我的列表页面上做类似的事情,我将有一个表单,该表单将通过 GET 方法提交给搜索功能。这样我就可以在 URL 中包含所有搜索参数,并且我的 URL 将是这样的:

exampledomain.com/users?name=steve&age=23

现在对于编辑页面,我将生成一个带有特殊参数的链接:lastpage,其值将是当前搜索参数的某种编码形式。因此,当用户进入编辑页面时,URL 将是这样的:

exampledomain.com/users/edit/34?lastpage=erasc1235234safvdadsrgdfgbvcdfgrt435

当编辑功能完成时。我会选择这个 lastpage 参数表单 $_GET['lastpage'](或者在 CI 中你可以使用 $this->input->get('lastpage'))来获取 lastpage 的编码值并对其进行解码以获取所有以前的 URL 搜索参数。并使用附加到 URL 的搜索参数再次将用户重定向到 serach 函数。

【讨论】:

  • 谢谢兄弟.. 但由于某种原因我不能使用 GET 方法。我在 post 中使用 post 方法有什么想法吗?
  • 另外一种方法是将 cookie 中的搜索参数保存为字符串。这样您就可以随时获取last_page cookie 变量的值并将用户重定向到上一页。
  • 我认为您需要将变量保存在某处。把你的变量放在一个临时隐藏的输入中怎么样?
【解决方案2】:

我解决了将视图分为两种类型时遇到的相同问题

1) 显示所有记录的普通视图和

2) 另一个视图显示所有最近搜索过的最后一个搜索键的记录。

要实现这一点,您需要将搜索记录的 ID 和从中获取记录的位置存储在临时数据库表(如 TableforSearch)中,并在会话中存储搜索键(如“ABC”)。

在搜索“ABC”键时,找到与该键匹配的记录的 ID,并将其与搜索键和 UserId 一起保存到 Table TableforSearch。

然后使用 Session 获取 Key 并在 Session 中使用 Key 搜索 table 以获取具有 Searched Key 的所有 Id 的行。 对于错误处理,请查看 Table 中存在的 Id 是否尚未为该记录删除。

最后在 Showing of searched items Show the second Page ,对于另一个显示正常的第一页

【讨论】:

    【解决方案3】:

    为了得到已经键入的关键字。你有三个选择

    • 将关键字保存为 GET 变量
    • 将关键字保存为隐藏输入
    • 将关键字保存为 SESSION 变量
    • 将关键字保存为 COOKIE 变量

    由于您不选择选项 3 和 4。您唯一的选择是创建一个 GET 变量。只需添加 domain.com/controller/function?keyword=ABC 并在控制器上将其作为 rldecode($_GET['keyword']); 获取或创建隐藏输入以保存您值并获取该值。

    【讨论】:

      【解决方案4】:

      一种解决方法是,当用户在列表页面中搜索任何内容时(我希望您的列表页面和搜索页面相同)而不是每次新搜索时,将搜索关键字存储在 localStorage 以及当用户更新记录时而不是重定向到列表页面以及来自localStorage 的搜索关键字。 (仅当您的列表页面和搜索页面相同时才建议这样做。即您使用传递给列表页面的一些参数来处理搜索。)

      【讨论】:

      • 是的,我的搜索和列表页面是相同的。 localstorage 在数据库中的意思?
      • 不,是HTML5 localStorage。您可以使用 javascript 处理它。 Link
      • 好的,感谢它为我带来的新东西。我们可以在本地存储中存储多个值吗?
      • 不错的概念,但是当我在编辑页面中编辑一个记录时。然后,当我单击“更新”按钮时,它会在列表页面上重定向,并且我在 localstorage 中得到空值。
      • 更新按钮链接中的关键字需要传递。
      【解决方案5】:

      将您的搜索条件保存在会话变量$_SESSION['mysearch'] = 'ABC' 中,并在重定向header("Location: /mysearch.php?criteria=" . urlencode($_SESSION['mysearch'])) 时使用它。 然后在“mysearch.php”中ureldecode($_GET['criteria']),再次运行搜索并显示结果。

      【讨论】:

      • 他说不想用session
      • 不,他说他不想使用会话,如果有其他更好的方法。这只是你的意见,你不能相信这是真的。
      猜你喜欢
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 2013-01-30
      相关资源
      最近更新 更多