現在PHPの勉強でECサイトのようなものを練習で作成しているのですが、カートに入れるボタンが一回押されるごとにその表示されている商品の代金を用意された変数にプラスしていきたいと考えているのですが、うまくできないです...
以下が僕が作成したコードになります。
以下はitem_list.phpのviewの画面です
php
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>商品一覧ページ</title> 6 <link type="text/css" rel="stylesheet" href="./assets/EC_site.css"> 7</head> 8 9<body> 10 <header> 11 <div class="header_box"> 12 <a href="item_list.php"> 13 <img class="logo" src="assets/css_img/logo.png" alt="CodeSHOP"> 14 </a> 15 16 <a class="cart"><img src="cart_logo.png"></a> 17 18 <p class="menu">ユーザー名:<?php echo $user_name;?></p> 19 20 21 22 <a class="nemu" href="logout.php">ログアウト</a> 23 24 </div> 25 </header> 26 <div> 27 <p><?php echo $succcess_msg; ?></p> 28 <ul> 29 <?php foreach($item_list as $value){ ?> 30 31 32 <li> 33 <img src="<?php echo $value['img']; ?>"> 34 <p><?php echo $value['product_nama']; ?></p> 35 <p>¥<?php echo $value['price']; ?></p> 36 37 <?php if($value['stock'] === '0'){ ?> 38 <p>売り切れ</p> 39 <?php }else{ ?> 40 <form method="post" action="item_list.php"> 41 <input type="hidden" name="product_id" value="<?php echo $value['product_id'];?>" > 42 <input type="hidden" name="img" value="<?php echo $value['img'];?>" > 43 <input type="hidden" name="price" value="<?php echo $value['price'];?>" > 44 45 <input type="submit" value="カートに入れる"> 46 47 </form> 48 <?php } ?> 49 </li> 50 51 52 <?php } ?> 53</ul> 54 </div> 55 56 57</body> 58 59 60 61</html>
そして以下はcontrolの画面になります。
php
1<?php 2//die(var_dump(isset($_SESSION['user_id']))); 3require_once '../include/config/const.php'; 4require_once '../include/model/function.php'; 5require_once '../include/model/item.php'; 6require_once '../include/model/user.php'; 7$price = 0; 8$item_list = array(); 9$item_stock = 0; 10$user_id = 0; 11$user_name = ''; 12$success_msg = ''; 13 14session_start(); 15 16//die(var_dump(isset($_SESSION['user_id']))); 17if(isset($_SESSION['user_id']) === FALSE){ 18 19 //ログインページにリダイレクト 20 header('Location:login.php'); 21 exit(); 22} 23 24$user_id = (int)$_SESSION['user_id']; 25 26$link = get_db_connect(); 27 28$user_name = get_login_name($link, $user_id); 29 30$item_list = get_itemlist($link); 31 32 33 34if($_SERVER['REQUEST_METHOD'] === 'POST'){ 35 36 //die(var_dump($_POST['price'])); 37 $price =$_POST['price']; 38 $img = $_POST['img']; 39 $item_id = $_POST['product_id']; 40 $cart_item_id = get_product_id($link); 41 42 43 foreach ($cart_item_id as $value) { 44 45 $extract_item_id[] = $value['item_id']; 46 47 } 48 49 50 51 //die(var_dump(in_array($item_id,$extract_item_id,true))); 52 53 if(in_array($item_id,$extract_item_id,true) === TRUE){ 54 55 $sql = 'UPDATE cart_table SET amount = amount + 1 WHERE item_id = ' . $item_id; 56 57 if(cart_sql($link,$sql) === TRUE){ 58 59 60 61 if($_SSESION['price'] !== null && $_SSESION['price'] !== $price){ 62 63 $_SSESION['price'] = $_SSESION['price'] + $price; 64 65 }else{ 66 67 $_SSESION['price'] = $price; 68 69 } 70 71 die(var_dump($_SESSION['price'])); 72 73 74 75 76 77 //die(var_dump($price)); 78 79 $success_msg = 'カートに登録しました'; 80 81 82 83 }else{ 84 85 $err_msg[] = 'cart_table:UPDATEエラー' . $sql; 86 } 87 88 }else{ 89 90 $sql = 'INSERT INTO cart_table(user_id,item_id,amount,img,created_date) 91 VALUES('. $user_id . ',' . $item_id . ',1,\'' . $img . '\',\'' . $date . '\')'; 92 93 $check = cart_sql($link,$sql); 94 95 96 if($check === FALSE){ 97 98 $err_msg[] = 'cart_table:insertエラー' . $sql; 99 }else{ 100 $success_msg = 'カートに登録しました'; 101 } 102 103 } 104} 105 106echo $_SSESION['price']; 107//die(var_dump($item_list)); 108 109//$item_stock = get_as_array($link,$sql); 110 111include_once '../include/view/item_list.php'; 112
データベースの値を代入した、item_listという配列の料金が代入されている変数、$value['price']をPOSTし、$priceで受け取り、 $_SESSION['price']に代入、そして2回目送られて来た際に$priceにまた 、$value['price']を代入し、セッションに詰め~、ということをやっていきたいのですが、うまくいかないといいますか、やり方がわかりません....
最終的には$_SESSION['price']を使用し、カートに入れるボタンを押される度にDBの値も更新させたいと考えています...
どなたかご回答くださる方いましたら、よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。