【问题标题】:WooCommerce multiple forms returning values on same page to appropriate formWooCommerce 多个表单将同一页面上的值返回到适当的表单
【发布时间】: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


【解决方案1】:

我已根据 CBroe 的建议回答了我自己的问题。我将此隐藏字段添加到我的表单中:

<input type="hidden" name="formName" value="<?php echo strtr($product_name, array (' ' => '-')); ?>">

然后我只在提交按钮被按下的表单上显示结果:

<h2><?php if ($_POST['formName']==strtr($product_name, array (' ' => '-'))) echo $result; ?></h2>

希望这对其他人有所帮助。

干杯!

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    相关资源
    最近更新 更多