当有人在搜索后编辑结果时如何获取搜索关键字

时间:2015-10-12 04:41:38

标签: php codeigniter search

在我的项目中有一些记录列表。用户可以按项目名称搜索记录。搜索用户可以编辑特定记录。用户点击“更新”按钮后进行编辑后,将重定向到列表页面,但搜索结果消失,所有记录都显示出来。

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

我正在使用codeigniter。

例如:

有10条记录的清单。用户通过" ABC"搜索记录。得到的结果是" ABC"像5条记录的项目来了。然后用户编辑一条记录并进行更新。更新后,我想用搜索键" ABC"显示5条记录。只要。现在它显示10(所有)记录,因为我在没有搜索键的列表页面上重定向。我不知道该怎么做。 :(

5 个答案:

答案 0 :(得分:0)

我个人所做的事就是在我的列表页面上我会有一个表格,通过 GET 方法提交给搜索功能。通过这种方式,我可以在URL中找到所有搜索参数,而我的URL将是这样的:

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

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

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

编辑功能完成时。我会选择此最后一页Param表单$_GET['lastpage'](或在CI中,您可以使用$this->input->get('lastpage'))来获取lastpage的编码值并解码它以获取所有以前的URL搜索参数。并使用附加到URL的搜索参数再次将用户重定向到serach功能。

答案 1 :(得分:0)

为了获取已键入的关键字。你有三个选择

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

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

答案 2 :(得分:0)

我解决了将视图划分为两种类型

时遇到的同样问题

1)显示所有记录的正常视图和

2)另一个视图,显示最近搜索到的所有密钥的最近搜索记录。

为了实现这一点,你需要存储搜索记录的ID和记录所在的位置,以存储在像TableforSearch这样的临时数据库表中,并在会话中存储像'ABC'这样的搜索键。

在搜索密钥'ABC'时,找到与密钥匹配的记录的ID,并将其与搜索密钥和UserId一起保存到Table TableforSearch。

然后使用Session获取密钥并使用密钥会话搜索表以获取具有搜索密钥的所有ID的行。 对于错误处理,查看表中的Ids是否尚未删除该记录。

最后显示搜索项目显示第二页,其他显示正常第一页

答案 3 :(得分:-1)

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

答案 4 :(得分:-1)

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