Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用javascript和$_会话通过分页记录想要的用户信息_Php_Javascript - Fatal编程技术网

Php 使用javascript和$_会话通过分页记录想要的用户信息

Php 使用javascript和$_会话通过分页记录想要的用户信息,php,javascript,Php,Javascript,到目前为止,我有一个分页页面,显示数据库系统中的所有用户。每个页面显示30个用户,每个用户旁边都有一个复选框,我需要的是用户选择和取消选择这些用户的方式,以及这些选择的传播方式,因此,如果用户从第2页返回到第1页,第1页的所有用户仍将被选中 我还需要一种方法来记录这些信息,这样一旦用户查看了所有页面并单击提交表单,所有选中的用户信息都可以被处理。我正在考虑使用javascript来记录信息,并使用php会话来存储信息,但按照我现在尝试的方式,当用户单击复选框时,它不会被勾选 有没有人有更好的方法

到目前为止,我有一个分页页面,显示数据库系统中的所有用户。每个页面显示30个用户,每个用户旁边都有一个复选框,我需要的是用户选择和取消选择这些用户的方式,以及这些选择的传播方式,因此,如果用户从第2页返回到第1页,第1页的所有用户仍将被选中

我还需要一种方法来记录这些信息,这样一旦用户查看了所有页面并单击提交表单,所有选中的用户信息都可以被处理。我正在考虑使用javascript来记录信息,并使用php会话来存储信息,但按照我现在尝试的方式,当用户单击复选框时,它不会被勾选

有没有人有更好的方法来解决这个问题

谢谢

<script type="text/javascript">
function log_export($str) {   
document.check.data.value = $str;
document.check.submit();
}
</script>

<?php
if(isset($_POST['data'])) {
    echo $_POST['data'];
}
?>

<form name="check" method = "post" action = "">
<input type="hidden" name="data">
    <input type="checkbox" name="A" onclick="log_export('1')" />
    <input type="checkbox" name="B" onclick="log_export('2')" />
    <input type="checkbox" name="C" onclick="log_export('3')" />
</form>

为什么不更改表单方法以获取并创建分页链接,使其包含传递给表单的每个参数和页码。我认为,通过URL上传递的参数与发布的参数相比,处理这种情况会更加简单

您可以创建如下链接:

for ($i =0; $i < $max_page; $i++){
 echo "{$_SERVER['REQUEST_URI']}?$_SERVER['QUERY_STRING']&p={$i}";

您只需将后端更改为使用$\u GET而不是$\u POST即可。

实现这一点的方法不多,但我会避免使用javascript。您可以在$\u会话中使用数组跨页面保存列表

<form name="check" method = "post" action = "">
    <input type="checkbox" name="person[A]" />
</form>
这样,会话变量saved_列表将包含数组person及其所有复选框。但是,您需要小心不要每次都覆盖数组,因此添加

$_REQUEST['person'] = array_merge($_SESSION['saved_list'], $_REQUEST['person']);
…在此之前,如果我正确地记住了合并函数,应该保留它们

或者,您可以只使用html保存已勾选的复选框。当第2页收到来自第1页的结果时,它可以在第2页表单的末尾将其作为隐藏元素打印出来。通过这种方式,它们可以跨页面存在,但是如果一页有30个名称,这可能会变得有点笨拙

我建议将其存储在php会话数组中,这不应该真正涉及到使用Javascript,这会使事情变得过于复杂

$_REQUEST['person'] = array_merge($_SESSION['saved_list'], $_REQUEST['person']);