如何在保存数据之前在条目表单上运行脚本

时间:2014-03-14 00:17:31

标签: php mysql forms

您好我已经创建了一个参赛表格。在表单上,​​有一个名为' ordernum'我创建了一个脚本,它从订单表中获取最后一个ID,并在结果上获取广告1。当用户点击提交按钮时,我希望脚本在表单上的' ordernum'字段中插入数字,然后将数据发送到操作页面以插入到数据库。

脚本运行良好我只是不知道如何在数据插入之前使其工作。

脚本是:

    <script>

    function updateorder(){
$.post('../subs/name2.php', {name: name}, function(data) {
    $('#ordernum').val(data);
    });
     };

    </script>

    I did this on my form
    <form action="../subs/custompcorder.php/" method="post" id="form"  onsubmit="updateorder()">
    <input id="order" type="text" name="ordernumt"/> 
     </form>

4 个答案:

答案 0 :(得分:0)

这是一种不好的做法。您的PHP端知道要在插入中使用的下一个ID;为什么不把它作为表单处理代码的一部分抓取而不是将其作为单独的请求检索,然后将那个号码提交回PHP端? “下一个插入ID”永远不会 javascript需要为您处理的事情。

此外,请考虑您的代码 一次被许多人使用的情况:

  1. 用户a,b,c填写表格并按提交。
  2. 发布请求消息
  3. 同时发布请求通知id 10是nextavailable ID
  4. 发布请求全部返回10
  5. 每个表单更新为保留10并提交
  6. id 10被插入数据库3次,具体取决于您的数据库模式,要么所有数据库都插入了相同的ID,要么插入第一个,然后重复的两个键失败。
  7. 您永远不想从表中请求行的下一个ID,然后插入其中。最终,您最终会两次请求相同的ID,然后尝试插入两次。

    这正是数据库表存在AUTO_INCREMENT的原因。让您的数据库处理您的数据,然后使用SELECT LAST_INSERT_ID();在插入后将您插入应用程序的ID 拉出来。

答案 1 :(得分:0)

我的插入表单如下所示:为同一订单号创建了许多行。 order_id,order_id1,order_id2 ....应与订单表单中的下一个id相同。

  <?php
include '../db/connect.php';


$sql="INSERT INTO oz2ts_custompc_details (part_id, quantity, price, status_id,order_id)
VALUES

( '$ _ POST [PART_ID]', '$ _ POST [数量]', '$ _ POST [价格]', '$ _ POST [STATUS_ID]', '$ _ POST [ORDER_ID]'), ( '$ _POST [part_id2]', '$ _ POST [quantity2]', '$ _ POST [price2]', '$ _ POST [status_id2]', '$ _ POST [order_id2]'), ( '$ _POST [part_id3]', '$ _ POST [quantity3]', '$ _ POST [price3]', '$ _ POST [status_id3]', '$ _ POST [order_id3]')“;

$sql1="INSERT INTO oz2ts_custompc (platform)
VALUES
('$_POST[platform]')";

if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
if (!mysqli_query($con,$sql1))
{
die('Error: ' . mysqli_error($con));
}
echo "record(s) added";

?>

答案 2 :(得分:0)

我也可以这样说 我想在插入订单表后获得最后插入的订单数量 并在order_id中使用它代替$ _POST [order_id] $ _POST [order_id2]和$ _POST [order_id3]

   <?php
  include '../db/connect.php';


 $sql="INSERT INTO oz2ts_custompc (platform)
 VALUES
 ('$_POST[platform]')";


 $sql1="INSERT INTO oz2ts_custompc_details (part_id, quantity, price,   status_id,order_id)
 VALUES

(&#39; $ _ POST [PART_ID]&#39;&#39; $ _ POST [数量]&#39;&#39; $ _ POST [价格]&#39;,&#39; $ _POST [status_id]&#39;,&#39; $ _ POST [order_id]&#39;),(&#39; $ _ POST [part_id2]&#39;,&#39; $ _ POST [quantity2]& #39;,&#39; $ _ POST [price2]&#39;&#39; $ _ POST [status_id2]&#39;,&#39; $ _ POST [order _id2]&#39;),(& #39; $ _ POST [part_id3]&#39;&#39; $ _ POST [quantity3]&#39;&#39; $ _ POST [price3]&#39;&#39; $ _ POST [status_id3] &#39;,&#39; $ _ POST [order _id3]&#39;)&#34;;

 if (!mysqli_query($con,$sql))
 {
 die('Error: ' . mysqli_error($con));
 }
 if (!mysqli_query($con,$sql1))
 {
die('Error: ' . mysqli_error($con));
 }
 echo "record(s) added";

 ?>

答案 3 :(得分:0)

感谢您的建议。这对我这样的初学者来说很简单但很难。 以下是它的完成方式:

<?php
include '../db/connect.php';


$sql="INSERT INTO oz2ts_custompc (platform)
VALUES
('intel')";

if (!mysqli_query($con,$sql))

{
die('Error: ' . mysqli_error($con));
}
$orderid=mysqli_insert_id($con);
echo $orderid;


$sql1="INSERT INTO oz2ts_custompc_details (part_id, quantity, price,    status_id,order_id)
VALUES
('$_POST[part_id]','$_POST[quantity]','$_POST[price]','$_POST[status_id]','$orderid'),
  ('$_POST[part_id2]','$_POST[quantity2]','$_POST[price2]','$_POST[status_id2]','$orderid'),

( '$ _ POST [part_id3]', '$ _ POST [quantity3]', '$ _ POST [price3]', '$ _ POST [status_id3]', '$订单ID')“;

if (!mysqli_query($con,$sql1))
{
die('Error: ' . mysqli_error($con));
}
echo "record(s) added";

?>