以下のコードにつきまして、お聞きしたいことがあります。
php
1<?php 2session_start(); 3include 'shop_class.php'; 4 5if(!isset($_SESSION['id'])){ 6 header('Location:login.php'); 7} 8 9$shop = new Shop('mysql:host=localhost;dbname=ec_website','root','12345'); 10$product_list = $shop->line_up_product(); 11$stock_list =$shop->display_quantity(); 12$success_msg = ''; 13 14 15 16if($_POST){ 17 // var_dump($_POST); 18 // exit(); 19 $user_id = intval($_SESSION['id']); 20 $product_name = $_POST['name']; 21 22 $img = $_POST['img']; 23 $price = $_POST['price']; 24 $product_id = intval($_POST['product_id']); 25 26 //var_dump($product_id); 27 //exit(); 28 29 $item_check = $shop->cart_check($user_id,$product_id); 30 //var_dump($item_check); 31 32 33 34 35 if(!$item_check){ 36 // try{ 37 $shop->add_select_item($user_id,$product_id); 38 $shop->decrease_stock($product_id); 39 // }catch(PDOException $e){ 40 // echo $e->getMessage(); 41 // } 42 43 echo __LINE__; 44 45 $success_msg = 'カートに登録しました'; 46 47 48 49 header('Location:top.php'); 50 //exit(); 51 52 }else{ 53 $shop->update($product_id); 54 $shop->decrease_stock($product_id); 55 echo __LINE__ . PHP_EOL; 56 $success_msg = 'カートに登録しました。'; 57 58 header('Location:top.php'); 59 60 //exit(); 61 } 62 63} 64 65?> 66 67 68<!DOCTYPE html> 69<html lang="ja"> 70<head> 71 <meta charset="UTF-8"> 72 <link type="text/css" rel="stylesheet" href="./css/top.css"> 73 <title>トップページ</title> 74</head> 75<body> 76 <header class="header_box"> 77 <a href="top.php" class="top_logo"> 78 <img class="logo" src="./images/logo.png" alt="CodeShop"> 79 </a> 80 81 <p class="user_name"> 82 ユーザー名:<?php echo $_COOKIE['name']; ?> 83 </p> 84 <a href="cart.php"> 85 <img src="./images/cart.png"> 86 </a> 87 <a href="logout.php" class="logout"> 88 ログアウト 89 </a> 90 </header> 91 92 <p><?php echo $success_msg ?></p> 93 <div class="content"> 94 95 <?php for($i = 0; $i < count($product_list); $i++): ?> 96 <?php 97 $list = $product_list[$i]; 98 $stock = $stock_list[$i]; 99 // var_dump($list['id']); 100 101 ?> 102 103 <div class="content_list"> 104 <img src="<?=$list['img']?>" width="300px" height="300px"> 105 <div class="wrap_content"> 106 107 <p class="item_name"><?=$list['name']?></p> 108 <!-- <?php var_dump($list['item_id']); ?> --> 109 110 <p>¥<?=$list['price']?></p> 111 </div> 112 <?php if($stock['stock'] > 0): ?> 113 <form action="top.php" method="post"> 114 <input id="cart_btn" type="submit" value="カートに入れる" class="cart_send"> 115 <input type="hidden" name="name" value="<?=$list['name']?>"> 116 <input type="hidden" name="img" value="<?=$list['img']?>"> 117 <input type="hidden" name="price" value="<?=$list['price']?>"> 118 <input type="hidden" name="product_id" value="<?=$list['id']?>"> 119 <input type="hidden" name="user_id" value="<?=$_SESSION['id']?>"> 120 <?php else: ?> 121 <p class="err_msg"> 売り切れ</p> 122 123 <?php endif;?> 124 </form> 125 </div> 126 127 <?php endfor;?> 128 129 </div> 130 131 132</body> 133 134</html> 135
上記コードを実行した結果は、下記の画像になります。
カートにいれるボタンを押した後、$success_msgにより、「カートに登録しました」との表示を行いたいのですが、2重登録防止のために設定した、header関数の影響でうまくいきません。
セッション変数に成功メッセージを入れ、表示する方法も試したのですが、やはりうまくいきません。
そこで、javascriptの機能を使い、どうにかできないかと思っているのですが、上記問題を解決できる方法をご存じでしたら、教えて頂けないでしょうか。
ご教示いただけましたら、幸いです。
よろしくお願いします。
追記です。
ミニマムコードとともに、お聞きしたい部分をまとめた、質問を新たに立てさせて貰いました。
回答2件
あなたの回答
tips
プレビュー