在我的项目中有一些记录列表。用户可以按项目名称搜索记录。搜索用户可以编辑特定记录。用户点击“更新”按钮后进行编辑后,将重定向到列表页面,但搜索结果消失,所有记录都显示出来。
更新后,我想只显示搜索到的记录。如何获取搜索键?如果有其他更好的方法,我不想使用会话。
我正在使用codeigniter。
例如:
有10条记录的清单。用户通过" ABC"搜索记录。得到的结果是" ABC"像5条记录的项目来了。然后用户编辑一条记录并进行更新。更新后,我想用搜索键" ABC"显示5条记录。只要。现在它显示10(所有)记录,因为我在没有搜索键的列表页面上重定向。我不知道该怎么做。 :(
答案 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)
为了获取已键入的关键字。你有三个选择
由于您没有选择选项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'])
,再次运行搜索并显示结果。