使用言語は、PHPとMySQLです。
例えばAの画面で下記のように書いており、$transcationは連想配列になっています。
<?php foreach($transcation_data as $transcation){ ?> <tr> <td><?=$transcation['date']?></td> <td><?=$transcation['account_name']?></td> <td><?=$transcation['account_sub_name']?></td> <td><?=$transcation['transaction_amount']?></td> <td><?=$transcation['transaction_remark']?></td> </tr> <?php } ?>
そして、foreachで使用している 連想配列$transcation_data をそのまま次のBの画面に持っていきたく
下記のように書きました。
<input type="hidden" name="transcation_data" value="<?=$transcation_data?>">
Bの画面の方では、
$_POST['transcation_data'];
としましたが、中身は空でした。セッションでも試してみましたが、駄目でした。
$_SESSION['transcation_data']
ご教示頂けると助かります。
宜しくお願い致します。
追記:情報が足りなかったようで申し訳ございません。
1.フォーム画面で下記事項を入力し2の画面へPOSTで送ります。
2.受け取ったPOSTをループにて多次元配列を作成し、画面に表示してます。
ここで使用している$transcation_dataにすべてのデータが入っているので、
次の画面に渡したいと考えています。
for($i=0; $i < 5; $i++){ if(!empty($_POST['date'.$i])){ $account_data = explode(",",$_POST['account_id'.$i]); $account_id = $account_data[1]; $account_name = $account_data[0]; $account_sub_data = explode(",",$_POST['account_sub'.$i]); $account_sub_id = $account_sub_data[0]; $account_sub_name = $account_sub_data[1]; $transcation_data[] = [ 'date' => $_POST['date'.$i], 'account_id' => $account_id, 'account_name' => $account_name, 'account_sub_id' => $account_sub_id, 'account_sub_name' => $account_sub_name, 'transaction_amount' => $_POST['transaction_amount'.$i], 'transaction_remark' => $_POST['transaction_remark'.$i] ]; }else{ continue; } }
formタグの中に下記を記載してPOST送信
<input type="hidden" name="transcation_data" value="<?=$transcation_data?>">
3.最後はDBに登録するファイルなのですが、ここでデータが受け取れていません。
$regi1 = $_POST['regi1'];//登録or更新を判断 if($_POST['transaction_data']){ $transaction_data = $_POST['transaction_data']; } if($_POST['transaction_id']){ $transaction_id = $_POST['transaction_id']; }//更新の場合は必要 require_once('../db/db.php'); //登録 if($regi1 == 1){ $sql = 'INSERT INTO transaction(account_id, account_sub_id, transaction_amount, transaction_remark, transaction_date, transaction_name) VALUES (?,?,?,?,?,?)'; $stmt = $db->prepare($sql); foreach(array_filter($transcation_data) as $transcation){ $stmt->bindValue(1, $transcation, PDO::PARAM_INT); $stmt->bindValue(2, $transcation, PDO::PARAM_INT); $stmt->bindValue(3, $transcation, PDO::PARAM_INT); $stmt->bindValue(4, $transcation, PDO::PARAM_STR); $stmt->bindValue(5, $transcation, PDO::PARAM_STR); $stmt->bindValue(6, $_SESSION["u_id"], PDO::PARAM_INT);//これのみログインからセッションを持ち回りし $stmt->execute(); } }
宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー