2016-05-12 6 views
1

Ich erstelle dynamisch 10 Zeilen in einer Tabelle mit einer Schaltfläche am Ende jeder Zeile. Diese Zeilen sind alle in einem Formular enthalten. Wenn ich eine Taste drücken $_POSTarray(0) { } zurückgibt und die von php://input gesammelten Inhalte sindIdentifizieren, auf welche dynamisch generierte Schaltfläche geklickt wurde

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"

Dies ist um so einen entsprechenden Code:

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

Was muss ich hier ist eine Möglichkeit, zu erkennen, welche Taste war geklickt. Entweder über die ID oder wenn es eine Möglichkeit gibt, den Schaltflächen eindeutige IDs zuzuweisen, die dieses Problem lösen.

Die Variable $json wird ähnlich wie $rest_json aus einer Datei gelesen und funktioniert einwandfrei.

Ich habe gestern mit PHP angefangen, also sind alle Vorschläge und Meinungen, die helfen können, sehr willkommen.

+1

also, was hindert Sie aus jeder Taste eine eindeutige ID geben? Erhöhen Sie einfach eine Integer-Variable in jeder Schleife und fügen Sie 'id =" "' Oder etwas ähnliches hinzu? – icecub

+0

Ich habe das versucht, aber es hat mein Problem nicht gelöst. Ich ging davon aus, dass das Problem im Code lag und nicht wusste, auf welche Schaltfläche geklickt wurde, da php: // input eine Zeichenfolge wiederherstellt, die alle Daten enthält, die jede Schaltfläche zusammen senden würde. – Nethakaaru

Antwort

2

Eine Möglichkeit ist es, eine Anordnung der Tasten und verwenden Sie den Code oder etwas anderes einzigartig wie der Index zu erstellen:

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

Nun ist die Eingabe etwas aussehen sollte:

Jetzt

es

<input type="submit" name="submit[J7410]" value="Add To Cart"> 
wenn diese Taste angeklickt wird eine $_POST['submit']['J7410'] sein, um den Code Verwendung zu erhalten:

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

Ich akzeptiere das, weil es meine Frage beantwortet. Die Probleme bestehen weiterhin, dass var_dump ($ _ POST); gibt Array (0) {} zurück. – Nethakaaru

+0

Das ist seltsam. Zeigt 'var_dump (filter_input_array (INPUT_POST));' irgendwas? – AbraCadaver

+0

var_dump (filter_input_array (INPUT_POST)); gibt null zurück. – Nethakaaru

Verwandte Themen