我创建了一个包含大约20行条目的表单。当用户用户在开始填写表格后离开时,他将在回来后重新开始。我想在表单上保存数据,直到用户决定重置或保存。我红了一些关于会话和cookie的文档,但不知道如何将它插入我的表单。有人可以帮我实现这个目标吗?
entry form
<?php session_start();
?>
<form action="../action/subs/custompcorder.php/" method="post" id="ccomputer" >
<div id="intel">
<ul>
<li >
<input id="name" name="part_id[]" type="text"/>
<input id="quantity" name="quantity[]" type="text"/>
<input id="name-data" name="price[]" type="text" />
</li>
<li >
<input id="name" name="part_id[]" type="text"/>
<input id="quantity" name="quantity[]" type="text"/>
<input id="name-data" name="price[]" type="text" />
</li>
</ul>
</div>
<input id="submit" type="submit" value="Submit Order" name="submission"/>
processing form to save data in mysql db
<?php
包括'../ db / connect.php';
// insert order details
foreach (array('part_id', 'quantity', 'price') as $pos) {
foreach ($_POST[$pos] as $id => $row) {
$_POST[$pos][$id] = mysqli_real_escape_string($con, $row);
}
}
$ids = $_POST['part_id'];
$quantities = $_POST['quantity'];
$prices = $_POST['price'];
$items = array();
$size = count($ids);
for ($i = 0; $i < $size; $i++) {
// Check for part id
if (empty($ids[$i]) || empty($quantities[$i]) || empty($prices[$i])) {
continue;
}
$items[] = array(
"part_id" => $ids[$i],
"quantity" => $quantities[$i],
"price" => $prices[$i]
);
}
if (!empty($items)) {
$values = array();
foreach ($items as $item) {
$values[] = "('{$item['part_id']}', '{$item['quantity']}',"
. "'{$item['price']}','$orderid')";
}
$values = implode(", ", $values);
$sql = "INSERT INTO oz2ts_custompc_details (part_id, quantity, "
. "price,order_id) VALUES {$values} ;
";
$result = mysqli_query($con, $sql);
if ($result) {
echo 'Successful inserts: ' . mysqli_affected_rows($con);
} else {
echo 'query failed: ' . mysqli_error($con);
}
}
?>
答案 0 :(得分:1)
这可能不会像你想象的那么简单。 您需要使用AJAX将表单内容发送到脚本,并将其保存到会话中。无论您是定期执行此操作还是表单中的内容更改都取决于您。
此问题可帮助您入门:How to update SESSION variable with jQuery + AJAX, is it even possible?
编辑:忘记提及,标记为正确的答案几乎应该做你想要的,除非提交表单。正如我所提到的,您希望每隔一段时间或用户更改表单时执行此操作。查看前者setInterval(可能是最简单的选项)。
而不是使用$("#formid").submit(function(){CODE HERE}
,它更像setInterval(function(){CODE HERE}, 10000)
...
如果您在获得任何帮助后需要任何帮助,请发布您的尝试,我可以帮您一臂之力。
答案 1 :(得分:1)
我认为我们需要(首先)实现什么是会话和&amp;饼干
关于会话,您可以执行以下操作:
<?php
session_start();
$_SESSION['first_one'] = "DATA ENTERED BY USER";
// this will actually save the data to a session
&安培;检索会话中保存的数据只需使用($ _SESSION ['first_one'])
关于cookie,您可以执行以下操作;
setcookie('first_one', "DATA ENTERED BY USER", time()+3600);
/* expire in 3600 seconds (1 hour) */
还要从用户cookie中检索数据,只需使用($ _COOKIE ['first_one'])
我建议你阅读更多内容: