如何在我的表单中添加会话?

时间:2014-04-25 17:50:04

标签: php mysql forms

我创建了一个包含大约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);
  }
}
?>

2 个答案:

答案 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;饼干

  • 会话是保存在您的服务器上的文件,带有保存的数据。
  • 但Cookie是保存在CLIENTS BROWSER上的数据,主要用于临时使用。

关于会话,您可以执行以下操作:

<?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'])

我建议你阅读更多内容: