0

我正在处理带有许多收音机的调查多步表格。

他们有一些默认状态

用户对它们进行操作以选择他的偏好。

现在,客户希望在点击浏览器后退按钮或侧导航链接(一组指向调查先前阶段的链接)时,获得用户先前选择的单选状态。

以下是导航器的外观:

<ul>
<li><a href="index.php?site=form1">Step1</a></li>
<li><a href="index.php?site=form2">Step2</a></li>
<li><a href="index.php?site=form3">Step3</a></li>
</ul>

只有一个 $_SESSION 在整个调查过程中收集数据。

我知道我可以直接从 $_SESSION 加载信息,但是当请求来自导航器链接/后退按钮时,我需要替换默认状态。

4

3 回答 3

0

有两种主要方法,基本上你是说收音机的选择状态需要保存在表单的不同页面之间。

因此,当您返回之前所在的页面但未提交时,选择应该仍然相同。

有两种关键方法,使用 PHP 的服务器端或使用 Javascript 的客户端

PHP

您可以在网站上设置任何链接以提交表单,并且可以保存单选选项,然后在创建表单时可以检查先前选择的值

可以保存此信息,$_SESSION但他们每次更改页面时都需要提交表单(您可以更改链接来执行此操作)

Javascript

您可以编写一些 javascript 来记住选择的内容并将它们作为 cookie 存储在用户浏览器中,这可以在他们每次单击按钮时更新。当页面加载时,javascript 将检查 cookie(或本地存储)并加载以前的选项。

当他们完成并提交表单时,您将清除 javascript

基本示例

$('form input[type=radio]:checked')

一旦我有更多信息,我将进一步充实这个答案

于 2012-09-25T11:26:46.697 回答
0

发布表单后,您可以在会话中保存值。当再次访问上一页(甚至第一次加载)时,读取会话的值并检查指定的无线电。如果你第一次访问页面,会话中不会有数据,所以不会检查任何人。

您还可以使用 JavaScript 和 cookie 生动地存储选定的值。

于 2012-09-25T11:27:02.640 回答
0

一个非常简化的可能解决方案:

<?php
   session_start(); // this needs to be at the top of all pages using $_SESSION (before anything else) else $_SESSION will always be empty
   if($_POST['vehicle']){
      $_SESSION['checkbox1'] = $_POST['vehicle'];
   }
print_r($_SESSION); // remove this line after testing. It will show you the contents of the $_SESSION, which is handy for seeing when variables are set within it
?>

<!DOCTYPE html>
<html>
<body>
<form action="" method="post">
   <input type="checkbox" name="vehicle" value="Bike"<?php if($_SESSION['checkbox1'] == "Bike"){ echo " checked"}?>>I have a bike<br />
   <input type="checkbox" name="vehicle" value="Car"<?php if($_SESSION['checkbox1'] == "Car"){ echo " checked"}?>>I have a car <br />#
   <input type="submit" value="Go" />
</form>
</body>
</html>

您可以在隐藏的输入区域中添加在第一页生成的唯一 ID,该 ID 在发布时可以构成会话变量名称的一部分。从那里,信息将在该变量名下的 $_SESSION 中建立索引,从而更容易将数据拉回或创建新的表单会话。

希望我没有失去你。

于 2012-09-25T12:36:09.020 回答