フォームの隠れた入力要素としてSELECTクエリの結果を渡そうとしています。実際には、結果のすべての行に対してフォームを作成しています。PHP:テーブル行をフォームの隠れ要素として渡します
隠し配列をフォームに渡すことができるので、テーブルの行を渡すこともできます。
これは、それを処理するコードの抜粋である:
$res = $conn->query($query);
while($row = $res->fetch()) {
echo '<form action="action.php" method="post">';
foreach ($row as $element) {
echo '<input type="hidden" name="row[]" value="'.$element.'">';
}
echo '<input type="submit" name="delete" value="Delete">';
echo "</form>";
}
すぐ、action.phpスクリプトが受信したばかりの行印刷:
<?php
echo "<pre>"; print_r($_POST['row']); echo "</pre>";
?>
をMySQLでクエリの結果であります
+--------+-------------+-----------+----------+------------+
| numero | id_producto | id_tienda | cantidad | f_pedido |
+--------+-------------+-----------+----------+------------+
| 7 | IXUS115HSAZ | 3 | 2 | 2015-10-01 |
+--------+-------------+-----------+----------+------------+
1 row in set (0.01 sec)
しかしaction.php内の行のますprint_rは、すべてのフィールドを倍増:
Array
(
[0] => 7
[1] => 7
[2] => IXUS115HSAZ
[3] => IXUS115HSAZ
[4] => 3
[5] => 3
[6] => 2
[7] => 2
[8] => 2015-10-01
[9] => 2015-10-01
)
私の間違いは何らかの形で明らかにする必要がありますが、どこにあるのかわかりません。 PDO fetch
方法は、最初のオプションパラメータfetch_style
として取る -
キーは 'PDO :: FETCH_ASSOC'です –
これを見てください(http://php.net/manual/en/mysqli-result.fetch-array.php)。デフォルトでは、数値と結合の両方をフェッチしています – cmorrissey
assoc配列のインデックスをアクションスクリプトの名前として取得する方法は?フォームでfetch(PDO :: FETCH_ASSOC)を使用しても、print_r()は数値インデックスのみを表示します。 – rodrunner