前提・実現したいこと
カートに入れるボタンを押した瞬間に指定のidの商品を追加できるようにしたい。
発生している問題・エラーメッセージ
ボタンを押したら、追加はされました。
しかし、順番通りに追加されます(ちがうidの商品も追加されます。) 同じ商品を複数追加を行うことができません。
idカラムに設定してあるAUTO_INCREMENTが原因なのかと思って解除しましたが、
今度は逆にidが0のレコードが作成されました。 (2回目以降は追加されません。)
該当のソースコード
PHP ソースコード functions.php function insert_cart($link) { if ($_SERVER['REQUEST_METHOD'] !== 'POST') { return; } if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['sql_kind'] === 'cart') { $id_s = 0; $amount = 0; $name = ""; $new_time = date('Y-m-d H:i:s'); $sql = 'INSERT INTO cart_tb(id, name, amount, created_date, updated_date) VALUES(\''.$id_s.'\',\''.$name.'\',\''.$amount.'\',\''.$new_time.'\',\''.$new_time.'\')'; if ($result = mysqli_query($link, $sql) === TRUE) { $drink_id = mysqli_insert_id($link); } } } function update_item_id($link) { if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['sql_kind'] === 'cart') { $sql = 'UPDATE cart_tb, item_tb SET cart_tb.name = item_tb.name where cart_tb.id = item_tb.id'; if ($result = mysqli_query($link, $sql) === TRUE) { $drink_id = mysqli_insert_id($link); } } } function update_cart($link) { if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['sql_kind'] === 'cart') { if (isset($_POST['id_s']) === TRUE) { (int)$id_s = (int)$_POST['id_s']; $amount = +1; } $sql = 'UPDATE cart_tb SET amount = ' . $amount; if ($result = mysqli_query($link, $sql) === TRUE) { $drink_id = mysqli_insert_id($link); } } } item.php <?php require_once('../../include/model/functions.php'); require_once('../../include/conf/const.php'); $link = get_db_connect(); $data = do_sql($link); if (isset($_POST['cart'])) { $data = insert_cart($link); $data = update_item_id($link); $data = update_cart($link); // $complete_msg = complete_check_cart($link); } require_once('../../include/view/item2.php'); close_db_connect($link); item2.php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>商品一覧ページ</title> </head> <body> <h1>商品一覧</h1> <form class="form" method="post" action="item.php"> <div class="cart_img"> <p class="margin"> <a href='../../mvc/cart.php'> <img src='../file/ショッピングカート.png'> </a> </p> </div> <div class="parent"> <?php if (!empty($data)) { foreach ((array)$data as $product) { ?> <? php print htmlspecialchars($product,ENT_QUOTES,'UTF-8'); ?> <?php if ((int) $product['status'] === 0) { ?> <?php } else { ?> <div class="product"> <div class="product_name"> <p class="margin"> <input type="hidden" name="name" value="<?= $product['name'] ?>" /> <?php { print $product['name']; }?> </p> <?php } ?> </div> <?php if ((int) $product['status'] === 0) { ?> <?php } else { ?> <div class="product_price"> <p class="margin"> <input type="hidden" name="price" value="<?= $product['price'] ?>" /> <?php { print $product['price']; }?> 円</p> <?php } ?> </div> <?php if ((int) $product['status'] === 0) { ?> <?php } else { ?> <div class="product_img"> <p class="margin"> <img src="<?php print $product['img']; ?>"> </p> </div> <?php if ((int) $product['status'] === 0) { ?> <?php } else { ?> <div class="product_buy"> <input type="hidden" name="stock" value="<?= $product['stock'] ?>" /> <?php { print $product['stock']; } if ((int) $product['stock'] === 0) { ?> <div class="sold_out"><?php print '売り切れ'; ?></div> <?php } else { ?> <input type="submit" name="cart" value="カートに入れる" /> <input type="hidden" name="sql_kind" value="cart"> <input name="id_s" type="hidden" value="<?php echo $product['id']; ?>"> <?php } ?> <?php } ?> <?php } ?> <?php } ?> <?php } ?> </div> </div> </div> </form> </body> </html>
試したこと
SQLなどのWHERE文の条件式などを変えてみたが、逆にレコードが作成できなくなったりした。
補足情報(FW/ツールのバージョンなど)
Cloud9
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。