フォームで値が送られてこない問題
失礼します。
自分の無知さ故にタイトルではとても内容が分かりづらいので、少し長くなってしまいますが説明させてください。
まずはコードを見ていただきたいです。
/********************追加処理**********************/
if(isset($_POST['id'])){
$key = isset($_SESSION['cart'][$_POST['id']]);
$id = 'こ↑こ↓';
print $id;
}else{
$id = 'のんのん';
print $id;
}
//セッション変数内にPOSTで送られてきたidと同じものが無かった場合の処理
if(isset($key)){
//送られてきたnumの準備
$num = $_POST['num'];
if(!$key){
//item_resultからpostでid,name,priceが送られてきたかを確認
if(isset($_POST['id'])){
if(isset($_POST['name'])){
if(isset($_POST['price'])){
//送られてきたデータを配列に格納
$item = array('id' => $_POST['id'],
'name' => $_POST['name'],
'price' => $_POST['price'],
'num' => $num,
'sum' => $_POST['price'] * $num);
}}}
//セッション変数「cart」に配列の中身を追加
if(isset($item)){
$_SESSION['cart'][$_POST['id']] = $item;
}
}else{
//$numとセッション変数内の送られてきたidの商品個数を足した値を$numに格納
$num += $_SESSION['cart'][$_POST['id']]['num'];
//セッション変数内の送られてきたidの合計金額を変数として用意
$sum = $_SESSION['cart'][$_POST['id']]['sum'];
if(isset($_POST['id'])){
if(isset($_POST['name'])){
if(isset($_POST['price'])){
if(isset($_POST['num'])){
//送られてきたデータを配列に格納
$item = array('id' => $_POST['id'],
'name' => $_POST['name'],
'price' => $_POST['price'],
'num' => $num,
'sum' => $sum += $_POST['price'] * $_POST['num']);
}}}}
//セッション変数「cart」に配列の中身を追加
if(isset($item)){
$_SESSION['cart'][$_POST['id']] = $item;
}
}
}
//表示するためにセッションの中身を配列に入れなおす
$print_cart = $_SESSION['cart'];
/*************************************************/
/*******************個数変更処理********************/
if(isset($_POST['aaa'])){
//きまし!が表示されるはず
print '<br />'.$_POST['aaa'].'<br />';
}
if(isset($_POST['id_c'])){
print '<br />'.$_POST['id_c'].'<br />';
if(isset($_POST['name_c'])){
if(isset($_POST['price_c'])){
if(isset($_POST['num_c'])){
送られてきたデータを配列に格納
$item = array('id' => $_POST['id_c'],
'name' => $_POST['name_c'],
'price' => $_POST['price_c'],
'num' => $num,
'sum' => $_POST['price_c'] * $_POST['num_c']
);
}else{
print 'numが(憤怒)';
}}else{
print 'printがああああ';
}}else{
print 'name入ってませんが!?';
}}else{
print 'id入ってません!';
}
//セッション変数「cart」に配列の中身を追加
if(isset($_POST['id_c'])){
if(isset($item)){
$_SESSION['cart'][$_POST['id_c']] = $item;
}
//表示するためにセッションの中身を配列に入れなおす
$print_cart = $_SESSION['cart'];
}
/*************************************************/
/*********************削除処理*********************/
if(isset($_POST['del'])){
$id = $_POST['del'];
foreach($print_cart as $i => $val){
//削除ボタンの押された時に送られたidとカート内の商品idが同じ物が見つかったら
if($val['id'] == $id){
//対象の商品を削除
unset($_SESSION['cart'][$i]);
}
}
$print_cart = $_SESSION['cart'];
}
/*************************************************/
var_dump($_SESSION['cart']);
//$_SESSION['cart'] = array();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta http-equiv="content-script-type" content="text/javascript" />
<meta http-equiv="content-style-type" content="text/css" />
<!-- StyleSheet記述
<link rel="stylesheet" href="./css/main.css" type="text/css" media="all" />
StyleSheet記述 -->
<!-- PAGE TITLE -->
<title>ページタイトル</title>
</head>
<body>
<h1>カートの中身</h1>
<?php
//セッション変数「cart」の中身を表示したい
if(isset($print_cart)){
foreach ($print_cart as $val){
?>
<form action="<?php print $url ?>" method="POST">
<table>
<tr>
<input type="hidden" name="aaa" value="きまし!">
<input type="hidden" neme="id_c" value="<?php print $val['id']; ?>">
<input type="hidden" neme="name_c" value="<?php print $val['name']; ?>">
<input type="hidden" neme="price_c" value="<?php print $val['price']; ?>">
<td><?php print $val['name']; ?></td>
<td><?php print $val['price']; ?></td>
<td><select name="num_c">
<option value="<?php print $val['num'] ?>"><?php print $val['num']; ?></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</td>
<?php if(isset($val['sum'])){ ?>
<td><?php print $val['sum']; ?></td>
<?php } ?>
<td><input type="submit" value="変更" /></td>
</form>
コードが汚くて申し訳ないですが、今の自分ではこれが精一杯です。ご了承ください。
必要だと思われる部分を抜粋しました。追加で必要でしたらコメントをお願いします。
今起こっている問題は、
<?php
//セッション変数「cart」の中身を表示したい
if(isset($print_cart)){
foreach ($print_cart as $val){
?>
<form action="<?php print $url ?>" method="POST">
<table>
<tr>
<input type="hidden" name="aaa" value="きまし!">
<input type="hidden" neme="id_c" value="<?php print $val['id']; ?>">
<input type="hidden" neme="name_c" value="<?php print $val['name']; ?>">
<input type="hidden" neme="price_c" value="<?php print $val['price']; ?>">
<td><?php print $val['name']; ?></td>
<td><?php print $val['price']; ?></td>
<td><select name="num_c">
<option value="<?php print $val['num'] ?>"><?php print $val['num']; ?></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</td>
<?php if(isset($val['sum'])){ ?>
<td><?php print $val['sum']; ?></td>
<?php } ?>
<td><input type="submit" value="変更" /></td>
</form>
このフォームのnum_cで個数を選択し、「変更」ボタンを押して
/*******************個数変更処理********************/
if(isset($_POST['aaa'])){
//きまし!が表示されるはず
print '<br />'.$_POST['aaa'].'<br />';
}
if(isset($_POST['id_c'])){
print '<br />'.$_POST['id_c'].'<br />';
if(isset($_POST['name_c'])){
if(isset($_POST['price_c'])){
if(isset($_POST['num_c'])){
送られてきたデータを配列に格納
$item = array('id' => $_POST['id_c'],
'name' => $_POST['name_c'],
'price' => $_POST['price_c'],
'num' => $num,
'sum' => $_POST['price_c'] * $_POST['num_c']
);
}else{
print 'numが(憤怒)';
}}else{
print 'printがああああ';
}}else{
print 'name入ってませんが!?';
}}else{
print 'id入ってません!';
}
//セッション変数「cart」に配列の中身を追加
if(isset($_POST['id_c'])){
if(isset($item)){
$_SESSION['cart'][$_POST['id_c']] = $item;
}
//表示するためにセッションの中身を配列に入れなおす
$print_cart = $_SESSION['cart'];
}
/*************************************************/
この処理を行いセッション変数内の配列のデータを変更し、表示し直したいのですが上手く行きません。
現在の状況としては、
if(isset($_POST['aaa'])){
//きまし!が表示されるはず
print '<br />'.$_POST['aaa'].'<br />';
}
この部分は表示されるので
<input type="hidden" name="aaa" value="きまし!">
hiddenでaaaは送られてきていると思うのですが、
<input type="hidden" neme="id_c" value="<?php print $val['id'] ?>">
このid_cから送られてこない(?)のか、elseに入って「idが入っていません!」が表示されてしまいます。
やりたい事は、数量を指定して変更ボタンを押したら、セッション変数内の配列の中の数量と合計金額を変更して表示を更新する処理です。
どうしたらよいでしょうか?
よろしくお願いします。