0

我在一个页面上有几个相同的表格(用于评级)。表格如下所示:

    <form id="contact" name="contact" action="#" method="post">

    <input  id="titel" name="titel">
    <textarea id="msg" name="comment" class="txtarea"></textarea>

    <button id="send">Send</button>
     </form> 

我通过 ajax 将表单数据发送到我想将所有键 => 值对存储在数组中的页面。

这是我在发送表单数据的 php 页面上的内容:

$arr = $_POST; 

$array = array();

$array['titel'] = $arr['titel'];
$array['comment'] = $arr['comment'];

print_r($array);

当我发送第一个表单时,prin_r 给出: Array ( [title] => test [comment] => test2 )

这正是我想要的。但是当我发送下一个表单时,值不会插入到数组中,例如:

    Array ( [titel] => test [comment] => test2
    [titel] => test3 [comment] => test4

 ) 

事实上什么也没发生。值保持不变。

非常感谢任何帮助!

4

1 回答 1

1

主要是在这里总结评论。

1.表单和请求隔离

你说你提交了几个表格。每次向 PHP 脚本提交表单数据时,脚本都会逐行执行,完成后,整个过程将终止。当提交另一个表单时,这将是另一个脚本执行,其中没有您之前定义的可用变量。

这就是 HTTP 的工作方式。每个请求都是一个独立的执行。

“记住”绑定到特定客户端的数据的一种技术是创建会话。一个会话由一个 id 组成,它存储在客户端,默认情况下自动存储到一个 cookie 中,以及会话存储,它保存在服务器上,可以在多个独立的请求中重复使用。

在此处了解更多信息 http://php.net/manual/en/features.sessions.php

2. PHP 中的数组

数组键必须是唯一的。想象一下 - PHP 应该如何知道,如果这不是唯一约束,您想要访问哪个值。

你说“数组就像数据库结果的几行”

这看起来像这样

$result = array
(
    0 => array ( 'col1' => 'colval1' ),
    1 => array ( 'col1' => 'vol1val' )
)

你也可以做到的

$survey = array (
    'step1' => array(...)
);

像这样访问

$survey['step1']['..']

将其保存到会话中

session_start();
$_SESSION['step1'] = $survey['step1'];

在以后的请求中访问它

print_r( $_SESSION['step1'] );

希望这会有所帮助:) 圣诞快乐

于 2012-12-23T12:29:36.833 回答