【发布时间】:2023-03-09 20:05:01
【问题描述】:
希望能得到专业人士的帮助。
我正在努力在 WooCommerce“order-details.php”页面上实现一个简单的代码生成器,以便客户可以自己去那里并生成他自己的软件代码。我是 PHP 的初学者,所以我被卡住了。在下面的代码中,我为订单中的每个产品显示了一个表单。客户应该能够输入一个号码,然后收到一个新号码来解锁他/她的软件。这可行,但问题是我不知道如何将值返回到生成它的表单,因此结果显示在所有表单上。
这是在循环中每个产品旁边创建的表单:
<?php if ( in_array( $order->status, array( 'completed' ) ) ) { ?>
<form method="post" action="<?php $_PHP_SELF ?>">
Req Code: <input type="text" name="req_code">
<input type="submit" name="<?php echo strtr($product_name, array (' ' => '-')); ?>" value="Generate License" />
</form>
<h2><?php echo $result; ?></h2>
<?php } ?>
当用户输入代码并单击“提交”时,将调用这些函数(在页面顶部)。根据提交的表单名称,调用相应的函数:
if (!empty($_POST['PRODUCT1'])) {
$result = test_input($_POST['req_code']);
if(!is_numeric($result)) $result = "Only numbers accepted.";
else $result = "Your PRODUCT1 activation code: " . $_POST['req_code']*1;
}
if (!empty($_POST['PRODUCT2'])) {
$result = test_input($_POST['req_code']);
if(!is_numeric($result)) $result = "Only numbers accepted.";
else $result = "Your PRODUCT2 activation code: " . $_POST['req_code']*2;
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
但正如我之前所说,全局变量 $result 已更新,当然会显示在所有表单下,而不仅仅是提交的表单。
希望我已经清楚地说明了问题所在。基本上,我如何将表单值返回到它来自的表单中?我做错了吗?有没有更好的方法?
任何帮助将不胜感激!
【问题讨论】:
-
您需要首先通过 PHP 使表单“可识别” - f.e.通过在每个包含相应产品 ID 的表单中插入一个额外的隐藏字段。然后,当您再次输出表单时,将当前产品 id 与随表单发送的产品 id 进行比较 - 并且仅输出两者匹配的那个表单的生成代码值。
-
嗨 CBroe - 我是个新手。我有没有机会看到一些与我发布的内容相关的示例代码?谢谢...
-
还有其他建议吗?我真的需要解决这个问题。
标签: php wordpress forms woocommerce