【问题标题】:Increment invoice number on html form submit in WordPress在 WordPress 中提交的 html 表单上增加发票编号
【发布时间】:2021-09-11 20:12:14
【问题描述】:

我一直在寻找几个小时,但我不了解 MySQL,所以我想知道是否有可能以另一种方式做到这一点。我有一个自定义的 html 付款表单,可将​​发票编号、金额和名称提交给付款处理器。我希望能够添加一个从 30200 开始的事务编号,并在每次将表单提交给处理器时自动递增 1。我写了一个简单的增量函数:

var i = 30200;
function buttonClick() {
    document.getElementById('transNum').value = ++i;
}

代码正确传递了递增的变量,但没有将新值存储在任何地方,我不知道如何存储它。每次提交表单时,事务编号都会设置为 30201。有没有办法将其存储在外部文件中并调用最后存储的编号?就像我说的我不了解 MySQL,所以将它存储在数据库中超出了我的理解。我必须有一种简单易懂的方法来完成此任务,但我找不到解决方案。

编辑几乎在那里(我希望)

经过大量研究,我正在尝试使用 mySQL 来完成这项任务。

所以我跟着一个 YouTube 视频,使用 phpMyAdmin 创建了一个名为 refNum 的表,然后创建了自动递增变量 refNumber 并将其设置为 30300。

我创建了一个 php 文件并将其上传到名为 reference.php 的服务器,其中包含以下代码:

<?php 
function get_refNum($ref){
global $wpdb;
$results = $wpdb->get_results("SELECT refNumber FROM refNum");
return $results;
};
?>

然后在我的表单中我编写了这段代码来调用页面并从数据库中获取结果:

 function getTransNumber(){
 $.ajax({
 url : '/reference.php',
 method : 'post',
 data : {$results},
 });
 $results = document.getElementById('invoiceNum').value;
 }
 window.onload = getTransNumber;

我的问题是现在我收到一个错误 Uncaught reference error: $results is not defined in my ajax call under data.这意味着要么我没有在我的 php 代码中正确获取数据,要么我没有传递数据。有人可以指出我正确的方向并告诉我我在这里做错了什么吗?

【问题讨论】:

  • 是在用户基础上增加还是在服务器端为所有用户增加?两种情况的解决方案都不同
  • 你应该为此在 mysql 表中创建一个自动编号列。
  • 每次有人提交付款时都需要增加。所以第一个数字应该是 30201,下一个付款应该是 30202,依此类推。我知道我应该使用 mysql 表,但我不知道如何,我一直在尝试自学,但我完全困惑,我找不到一个简单的做这种类型的场景来解释我需要做什么才能在 mysql 中创建一个表.
  • 提交付款时,应在服务器端 (php) 添加发票编号。无论如何,您可能应该将所有发票信息存储在数据库中。当你点击“提交”时会发生什么?去哪儿了?
  • 该表格实际上只收集发票编号和付款金额,然后您单击立即付款按钮,它会将您发送到 FirstData 以实际处理付款,所以我只想发送 3 条信息到他们。交易编号用于在有人付款时更新我的​​记录,因为有时某人支付发票需要几个月的时间,而且通过交易编号更容易核对。

标签: javascript php mysql wordpress forms


【解决方案1】:

如果您有一个全局号码,需要为访问该页面的任何人增加该号码(并且在页面关闭时不会忘记),那么您需要一些地方来存储上次使用的号码。

不管你是否了解 MySQL,正常的解决方案是使用某种数据库,虽然不一定是 MySQL。

【讨论】:

  • 这就是为什么我问是否有另一种方法来实现这一点,因为我不了解 mysql。如果 mysql 是这种方式,那么我什至不知道从哪里开始。我一直在尝试对此进行研究,但我找不到让数字从 30200 而不是 1 开始的方法?
  • @DragonetDesign 好吧,当我在 2003 年开始编写 PHP 时,我也不得不学习它。这并不容易,但我花了几天时间就弄清楚了基础知识。我建议您一次尝试解决 1 个问题,如果您遇到困难……请提出具体问题。他们通常很容易回答。如何让我的领域不从 1 开始,这绝对是很多人可以提供帮助的。
  • 只有花时间去了解 MySQL。
  • @DragonetDesign 回复有点粗鲁。问题仍然是您需要某种持久状态,而标准路径是某个数据库。我猜你是在假设我不是想给你最好的答案,而是故意给你一个你不想听到的答案;但我在这里花时间回答你的问题。
  • 即使这对您来说不是理想的答案,也许您至少可以尝试保持礼貌。在您的比喻中:假设您的测验需要工作微积分知识,您是否会对那些告诉您可能没有捷径的人生气?
【解决方案2】:

我不是 MySQL 大用户,但每列都可以拥有(或不拥有)一个 AutoIncrement 属性。

这是来自https://www.w3schools.com/sql/sql_autoincrement.asp的示例

创建表人员 ( Personid int NOT NULL AUTO_INCREMENT, 姓氏 varchar(255) 非空, 名字 varchar(255), 年龄整数, 主键(人物) );

插入时不需要您提供第一个字段。每次您创建记录时,它都会为您执行此操作。不完全确定如何将第一个设置为 32000。

【讨论】:

  • SQL - ALTER TABLE AUTO_INCREMENT=32000;看起来它可以用于设置第一个索引,然后从那里开始计数。
  • 我在哪里放置此代码?我为我的无知道歉,但我不知道 mysql,我正在尝试找到一个教程,但我似乎找不到初学者教程。我发现的所有内容都假设您知道在何处以及如何实现此代码。
  • 您好,这是在数据库表定义本身中添加的。希望您的安装附带 phpAdmin 之类的东西。这将显示您可以选择的所有选项。它还允许您将该代码粘贴到 SQL 窗口中以手动更改表。 youtube 上有很多关于这种操作的信息。我相信你可以在网上找到一门 MySQL 课程。
猜你喜欢
  • 2015-03-27
  • 1970-01-01
  • 2013-03-03
  • 2015-02-27
  • 2012-08-11
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多