我正在尝试创建一个从MYSQL数据库调用的网页,显示检索到的信息,然后以两种方式处理。
输入一个唯一的号码后,我会提出相关的详细信息,例如:
Order Number | Item
----------
1234 B111
1234 C333
1234 D999
在此之后,我想输入(更具体地说,扫描条形码)每个"项目"手动,确认已手动检查。
一旦完成,并且所有3个项目都已正确匹配,我想提交页面并将2个字段附加到数据库中(这部分没问题)。但是我不希望在每个项目都被检查之前可以实现这一点,因此在确认正确之前不会对DB进行任何提交。此外,如果扫描的内容不在此范围内,则会显示警告。
是否有人能够以最佳方式指出我正确的方向?我不是在完全解决方案之后,只是对最佳方法的总体方向。
答案 0 :(得分:1)
如果我理解正确,您将尝试以不同的步骤执行以下操作:
你要问的是处理整个第2步的好方法
我可以提出两种方式:
服务器端
制作一些额外的表来举行“会话”#39; 你的会议是这3个步骤。
ScanSessionHeader ScanSessionLine
例如
扫描订单时,使用更改日期时间创建标题记录并使其保持打开状态。
只要记录在这个'打开'州。您可以在网页上显示此内容,然后继续显示下一个扫描字段。
当您向后端提交产品系列时,请将产品条形码保存在ScanSessionLine及其验证状态中。
您可以在网页上显示此信息。
当需要提交整件事时,您就会关闭'标题,因此它不能再用于添加更多行。
如果所有行都经过正确验证,您可以一次性处理它们。
您可以通过将所有内容存储在SESSION变量中来执行相同的操作,但是当服务器重新启动时,整个扫描会话将会丢失。
这可以通过在没有主动绑定到此会话时显示任何打开的扫描会话来防止。 (通过在会话中保存ScanSessionHeader.ID),以便在服务器重新启动(或Apache重新启动)后继续。
使用异步服务器调用的客户端
检索订单后,您打开一个包含产品条形码字段的表单。
您可以从服务器端执行此操作,但我会从头开始使用JavaScript。
只要在字段中输入内容,就会进行AJAX调用: https://www.w3schools.com/xml/ajax_intro.asp
这会在后台加载带有参数的网页,在您使用此调用验证条形码后,您可以设置产品系列的状态。
扫描每个产品后,您都可以显示新的产品系列,以便添加更多产品。
只要所有行都被验证为正确,您就会一直显示整个表单的提交按钮。
但是,一旦页面重新加载,所有数据都会丢失。 例如,Javascript错误会阻止您进一步填写表单,以便用户重新加载。
您选择的路径取决于您的使用案例:
如果您想要一种安全的解决方案来保存扫描状态,请使用第一个解决方案并保存在数据库中。只需确保实现丢弃旧/停止扫描会话的方法。
如果您需要更快的速度,并且不想等待整页重新加载,并希望所有内容看起来更加花哨和活泼。使用异步服务器调用并使用JavaScript完成所有魔法。
您仍然可以将整个会话保存在数据库中,但是需要更多代码才能将会话恢复到用户正在查看的网页。
或者,如果你想要一个非常快速和肮脏的解决方案。将验证所需的所有数据传递到网页,让Javascript处理所有内容。
写下一些要求,我可以告诉你哪条路可能适合你。