php - 如何在保存数据之前在输入表单上运行脚本

标签 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>

最佳答案

这是一个不好的做法。您的 PHP 端知道插入中要使用的下一个 ID;为什么不将其作为表单处理代码的一部分获取,而不是将其作为单独的请求检索,然后将数字提交回 PHP 端? “下一个插入 ID”永远不需要 JavaScript 为您处理。

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

  1. 用户 a、b、c 填写表单并按提交。
  2. 发布请求被触发
  3. 每个同时发出的请求通知 id 10 是下一个可用的 ID
  4. post请求全部返回10
  5. 每个表单都会更新为保存 10 个并提交
  6. 根据您的数据库架构,id 10 会被插入数据库 3 次,要么所有这些都使用相同的 ID 插入,要么插入第一个,而接下来的 2 个因重复键而失败。

您永远不想从表中请求行的下一个 ID,然后将其插入其中。最终您将请求相同的 ID 两次,然后尝试插入两次。

这正是数据库表存在 AUTO_INCRMENT 的原因。让您的数据库处理您的数据,然后使用SELECT LAST_INSERT_ID();在插入后提取您插入到应用程序中的ID。

关于php - 如何在保存数据之前在输入表单上运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22393740/

相关文章:

php - 将 mysql 时间戳转换为来自 Code igniter 的实际时间 mm dd yyyy hh mm

javascript - 输入未改变状态 REACTJS

php - 将数据库信息存储为数组

php - 使用 dev>null & 运行 exec() 命令不起作用,但 dev>null 可以

php - 保护 PHP 源文件免受 file_get_contents() 的影响?

mysql - 将查询从 mysql 转换为 php laravel?

jquery - 如何让所有标签在左侧对齐?

javascript - 使用 formHTML.append 将选项列表设置为在 java 中只读

php - 使用 php 脚本 smtp.gmail 发送电子邮件时出错 Pear Centos

php - 如何使用 jquery ajax 将 anchor 的值发送到 php