2016-05-12 93 views
1

我在表中动态创建10行,并在每行末尾有一个按钮。这些行都包含在一个表单中。当我按下一个按钮$_POST返回array(0) { }php://input收集的内容识别哪个动态生成的按钮被点击

string(239) "code=J7410&amount=0&code=abc123&amount=0&code=42139&amount=0&code=BBTCG&amount=0&code=13064&amount=0&code=D40717&amount=0&code=D11255&amount=0&code=D40617&amount=0&code=D68691&amount=0&code=11-600.50.04&amount=0&code=9789170378041&amount=0"

这是所有相关代码:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 

<table> 
    <tr> 
     <td>ID</td> 
     <td>Name</td> 
     <td>VAT(%)</td> 
     <td>Price exl VAT</td> 
     <td>Amount</td> 
    </tr> 
<?php 
foreach ($json as $row) 
{ 
$code = $row['code']; 
echo "<tr>"; 
?> 
<td><input type="text" name="code" value="<?php echo $code?>" readonly title=""></td> 
    <?php 
echo "<td>" . $row['name'] . "</td>"; 
echo "<td>" . $row['vat'] . "</td>"; 
echo "<td>" . $row['price'] . "</td>"; 
echo "<td>" . "<input type='number' name='amount' value='0'>" . "</td>"; 
    ?> 
    <td><input type="submit" name="<?php $row['code'] ?>" value="Add To Cart"></td> 
    <?php 
echo "</tr>"; 
} 
echo "</table>"; 
echo "</form>"; 

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 

var_dump($_POST); 

$rest_json = file_get_contents("php://input"); 
var_dump($rest_json); 
} 

我在这里需要一些方法来确定哪些按钮是点击。通过ID或者是否有办法动态地给按钮解决这个问题的唯一标识符。

从文件中读取变量$json类似于$rest_json,并且工作完全正常。

我昨天从PHP开始,所以任何可以提供帮助的建议或意见都非常受欢迎。

+1

那么,什么阻止你从给每个按钮一个唯一的ID?只需在每个循环中增加一个整数变量并添加'id =“<?echo $ number;?>”'或类似的东西? – icecub

+0

我试过了,但没有解决我的问题。我认为问题在于代码中不知道哪个按钮被点击,因为php://输入恢复了一个包含每个按钮将发送的所有数据的字符串。 – Nethakaaru

回答

2

一种方法是创建按钮的数组,并使用代码或别的东西,唯一的指标:

<input type="submit" name="submit[<?php $row['code'] ?>]" value="Add To Cart"> 

现在输入应该是这个样子:

<input type="submit" name="submit[J7410]" value="Add To Cart"> 

现在有将是一个$_POST['submit']['J7410']如果该按钮被点击,所以得到代码使用:

$code = key($_POST['submit']); 
+0

我会接受这个,因为它回答了我的问题。虽然var_dump($ _ POST);问题仍然​​存在;返回数组(0){}。 – Nethakaaru

+0

这很奇怪。 'var_dump(filter_input_array(INPUT_POST));'显示什么? – AbraCadaver

+0

var_dump(filter_input_array(INPUT_POST));返回null。 – Nethakaaru