2016-05-12 10 views
1

各行の最後にボタンを付けてテーブルに10行を動的に作成しています。これらの行はすべてフォームに含まれています。私はここに必要なものクリックされた動的に生成されたボタンの特定

<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); 
} 

があったボタンを識別するためにいくつかの方法である:私はarray(0) { }を返す$_POSTボタンを押すと内容が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"

ですクリックしたIDを介して、またはこの問題を解決する固有の識別子をボタンに動的に与える方法があるかどうか。

$json$rest_jsonと同様にファイルから読み込まれ、完全に正常に動作します。

私は昨日PHPを使い始めましたので、助けとなる提案や意見は大歓迎です。

+1

一意のIDを各ボタンに与えることから?各ループの整数変数をインクリメントし、 'id =" <?echo $ number;?> "'またはそれに類するものを追加するだけです。 – icecub

+0

私はそれを試みましたが、私の問題は解決しませんでした。私は、php:// inputが各ボタンが結合して送るすべてのデータを含む文字列を回復するので、どのボタンがクリックされたのかわからないというコードで問題があると仮定しました。 – 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); array(0){}を返します。 – Nethakaaru

+0

それは変です。 'var_dump(filter_input_array(INPUT_POST));'は何かを表示しますか? – AbraCadaver

+0

var_dump(filter_input_array(INPUT_POST)); nullを返します。 – Nethakaaru

関連する問題