WooCommerce多个表单将同一页面上的值返回到适当的表单

时间:2014-08-23 01:58:15

标签: php wordpress forms woocommerce

希望我能从专业人士那里得到一些帮助。

我正在努力在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已更新,当然,会以所有形式显示,而不仅仅是提交的表单。

希望我已经明确说明了问题所在。基本上,如何将表单值返回到它来自的表单中?我做错了吗?有没有更好的方法呢?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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>

希望这有助于其他人。

干杯!