ショッピングカート作成時のエラー解決方法

このQ&Aのポイント
  • ショッピングカートの作成時に発生するエラーの解決方法を紹介します。
  • ショッピングカートのプログラムを作成している際に発生したエラーを解決する方法を説明します。
  • PHP 5.2.0を使用している場合に、ショッピングカートの作成時に起こる問題の解決策を提案します。
回答を見る
  • ベストアンサー

ショッピングカートの作成しようと思ってます。

今ショッピングカートの商品を選んでカートに入れたのち別のページに飛ばして精算させるプログラムを作ってますがプログラムがうまく作動しません。 ショッピングカートのプログラムは <?php if (isset($_POST['cart'])){ $_SESSION['cart'][$_POST('code')] += $_POST('num'); print "<p>カートに入れました。</p>\n"; } else if ($_POST['delete']) { $_SESSION['cart'] = array(); print "<p>カートを空にしました。</p>\n"; } ?> 精算プログラムのエラー箇所は以下の感じです。 foreach ($_SESSION['cart'] as $code => $num) { $rs = mysql_query($con, "select * from member7 where code=$code"); $row = array($rs); $ss = $num * $row['tanka']; print "<tr><td>{$row['name']}</td><td>{$row['tanka']}円</td><td>$num</td><td>{$ss}円</td></tr>\n"; $sum += $ss; } 長ったらしいですが解決策を教えてくださればと思います。 PHPは5.2.0を使用してください。

  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

> のところにエラーコードが出てました。 そのエラーメッセージを読めば原因が分かると思うのですが何とありますか? どういう動作を期待していて、どういうエラーや問題が出ているか、 早急な解決に最低限必要な説明かと思います。 私が想像できるのは・・ > $_SESSION['cart'][$_POST('code')] += $_POST('num'); 関数エラー > else if ($_POST['delete']) { $_POST['delete']が未定義 > foreach ($_SESSION['cart'] as $code => $num) $_SESSION['cart']が未定義 $_SESSION['cart']が配列ではない 送信フォームのミス セッション変数の取り扱いミス

その他の回答 (1)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

どううまく動作しないんでしょうか? ここは正常に処理されていますか? $_SESSION['cart'][$_POST('code')] += $_POST('num');

nainai446
質問者

補足

$_SESSION['cart'][$_POST('code')] += $_POST('num');はちゃんとなってるみたいで ショッピングカートのほうは else if ($_POST['delete']) { 精算のほうは foreach ($_SESSION['cart'] as $code => $num) { のところにエラーコードが出てました。

関連するQ&A

  • ショッピングカートの作成

    今ショッピングカートを作成しようとしていて商品サンプルがいくつかあり「カートへ」ボタンを押すと精算ページへ飛び精算を行うというプログラムをつくっているのですがいくつかのサンプルでどれを選んでも一番上のサンプルの精算しか行えません。どうすれば解決できますでしょうか?よろしくお願いします。 ショッピングカートのプログラムの一部です。 while($row = mysql_fetch_row($result)){; $code = $row['0']; print "<form method='post' action='cart_syohin2.php'><tr>"; print "<td rowspan='2'>"; if (file_exists("cart_image/$code.jpg")) print "<img src='cart_image/$code.jpg' border='0'>"; print "</td>"; print "<td rowspan='3'>{$row['3']}</td>"; print "<td nowrap>{$row['2']}円</td></tr>"; print "<tr><td nowrap><input type='text' name='num' size='3'>個</td></tr>"; print "<tr><td>{$row['1']}</td>"; print "<td><input type='hidden' name='code' value='$code'><input type='submit' name='cart' value='カートへ'>"; print "</td>"; print "</tr></form>\n"; }

    • 締切済み
    • PHP
  • ショッピングカートで$_SESSIONへデータを格納する方法

    $syohin_code = $_POST['syohin_code']; $syohin_name = $_POST['syohin_name']; $sale_price = $_POST['sale_price']; $kazu = $_POST['kazu']; $_SESSION['cart']['$syohin_code'] = array ("syohin_code" => $syohin_code , "syohin_name" => $syohin_name, "sale_price" => $sale_price , "kazu" => $kazu ); foreach ($_SESSION['cart']['$syohin_code'] as $key => $value){ echo $key . $value;} データベースより一覧表示した商品を「カートに入れる」ボタンを使いPOSTした値を上記のcart.phpへ飛ばし、配列としてセッション変数に格納しました。ひとつの値は上記より取得できるのですが、複数の商品を格納する方法がどうしても分かりません。それともどこかに保存されているのでしょうか? この取得したデータを元に、購入商品全てを一覧表示させたいのですが、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • mysql+phpをつかったカートつくり。

    こんにちは、php+mysqlを勉強しだして。日が浅いです。 いき詰まりました。どなたかおしえてください。いろいろとサイト検索してみたんですけど みつかりません。 ショッピングカートを作ろうとおもっています。 ーーー中略ーーー while($rec = mysql_fetch_array($result,MYSQL_ASSOC)){ print "<form name=\"form1\" method=\"POST\" action=\"link1_1.php\">"; print "<tr><td>"; print $rec['id']; print "</td><td>"; print $rec['cid']; print "</td><td>"; print $rec['pr']; print "\\</td><td>"; print "<select name=\"mny\"><option value=\"1\">1</option>"; print "<option value=\"2\">2</option>"; print "<option value=\"10\">10</option>"; print "</select></td><td>"; print "<input type=\"submit\" name=\"cart\" value=\"カートへ\">"; print "<td/></tr></from>"; } print "</table>"; 上記の文で、while文をつかって 商品を表示させることはできました。 問題は、 カートがおされたときの処理ができません;; カートの値はどうやって 設定したらよいのでしょうか?  うまく表現できなくて すみません。 if(isset($_POST['cart'])){  //カートがおされたとき $sql = "select max(ju_id) from table1";//最大値を取得 $result = mysql_query($sql); $row = mysql_num_rows($result); if($row != 0) { $ary = mysql_fetch_array($result); $ju_id = $ary[0] + 1; //$number = $ary[0] + 1;// 登録レコードのを生成 } $sql = "insert into jucyu set ju_id = $ju_id "; } 商品を表示させて、個数等指定して、カートへを 押したら、 一回目は表示されるんですが、うまく、mysqlへ書き込みができません。  うまく表現できなくて すみません。

  • PHPでセッションを使った受け渡しについて

    PHPでECサイトのカート機能を作っています。 まず商品一覧画面(index.php)にデータベースから読み取ったidとNAME、そして個数、サイズ、包装の有無のセレクトボックスを表示します。 それぞれの商品の追加ボタンを押すとカートのphp(t_cart.php)に飛んで上記の情報を全て表示できるようにしたいのですが、idとNAMEと個数の情報は受け渡せるのですが、サイズや包装の有無は別の商品を追加すると全ての商品の情報が上書きされてしまいます。 コードの一部を記載しておきます。 まだPHPを始めたばかりで初歩的な事がわからないのですが、ぜひ御知恵をお貸しいただければとおもいます。 よろしくお願いします。 ・index.php <table> <?php foreach ($Menu as $g) { ?> <tr> <td> <p class="Menu"><?php echo $g['id'] ?></p> </td> <td> <p><?php echo $g['NAME'] ?></p> </td> <form action="t_cart.php" method="post"> <td> <a>個数:</a> <select name="num"> <?php for ($i = 1; $i <= 10; $i++) { echo "<option>$i</option>"; } ?> </select> </td> <td> <a>サイズ:</a> <select name="size"> <option>S</option><option>M</option><option>L</option> </select> </td> <td> <a>包装:</a> <select name="deco"> <option>有</option><option>無</option> </select> </td> <td> <input type="text" name="id" value="<?php echo $g['id'] ?>"> <input type="submit" name="submit" value="go to cart"> </td> </form> </tr> <?php } ?> </table> ・t_cart.php <?php require 'common.php'; $rows = array(); $sum = 0; $pdo = connect(); if (!isset($_SESSION['cart'])){ $_SESSION['cart'] = array(); } if (@$_POST['submit']) { @$_SESSION['cart'][$_POST['id']] += $_POST['num']; } foreach($_SESSION['cart'] as $id => $num) { $st = $pdo->prepare("SELECT * FROM Menu WHERE id=?"); $st->execute(array($id)); $row = $st->fetch(); $st->closeCursor(); $row['num'] = strip_tags($num); $row['size'] = $_POST['size']; $row['deco'] = $_POST['dough']; $rows[] = $row; } ?>

    • 締切済み
    • PHP
  • 売上表示のプログラムをしたいのですが。

    ショッピングカートのcart_buy.phpの中で精算ボタンを押したら精算完了したのちuriage.phpで自動的に売上が入力されるというプログラムを作りたいのですが例えばAさんが購入したときにパソコンとプリンターを購入したとしたらパソコンは反映されますがプリンターは反映されず同じ購入者が複数の売上表示が行なえないのです。どうしたらうまくいくでしょうか。アドバイスお願いします。 uriage.php <?php require_once 'DB.php'; $dsn = "mysql://user:password@localhost/sampledb2"; $db = DB::connect($dsn); if (PEAR::isError($db)) { die($db->getMessage()); } $sql = 'select * from syohin_uriage'; $res =& $db->query($sql); while ($row =& $res->fetchRow(DB_FETCHMODE_OBJECT)){ print "<tr><td><center>$row->id</center></td>"; print "<td><center>$row->name</center></td>"; print "<td><center>$row->tanka</center></td>"; print "<td><center>$row->num</center></td>"; print "<td><center>$row->ss</center></td></tr>"; } $db->disconnect(); ?>

    • 締切済み
    • PHP
  • phpでショッピングカート機能を作りたい。

    PHPで店舗のショッピングカートを作ろうとしています。 data 1 リンゴ 100円     2 ミカン  80円     3 バナナ 50円 PHPコード <form action="" method="post"> <?php $sql = "SELECT * FROM list"; $sth = $dbh->prepare($sql); $sth->execute(); while ($row = $sth->fetch()) { $id = $row["id"]; $name = $row["name"]; $price = $row["price"]; $image = $row["image"]; echo <<<EOT <table cellspacing="0" cellpadding="0" width="605" height="150"> <tr> <td rowspan="5" valign="top"><img src="../kanri/image/goods/$image" border="0" /></td> <form action="" method="post"> <input type="hidden" name="$id" value="$id" /> <input type="hidden" name="$name" value="$name" /> <input type="hidden" name="$price" value="$price" /> <td align="left" bgcolor="#eee8aa" width="400"><b> $id. $name</b></td> </tr> <tr> <td colspan="2" bgcolor="#ccccff"><p><font color="#000088"><b>税込 :$price </b></p></td> </tr> <td colspan="2" bgcolor="#e6e6e6"><p> 個数 : <select name="number"> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> <input type="submit" name="submit_cart" value="カートに入れる" /></p> </td> </tr> </table> </form> <br /> EOT; } ?> <hr></hr> <div align="center">カートの中身</div> <?php if (isset($_POST["submit_cart"])) { if(!isset($name)){ $name = $_POST['name']; } if(!isset($price)){ $price = $_POST['price']; } if(!isset($number)){ $number = $_POST['number']; } $total = $price * $number; echo "<div align='center'><p>$id 番の情報を取得しました。</p></div>"; echo "<div align='center'><p>商品名: $name </p></div><div align='center'><p>単価:$price 円 / 個数:$number 個</p></div>"; echo "<hr></hr>"; echo "<div align='center'><p>合計金額:<b>$total 円</b>です。</p></div>"; } ?> としているのですが、カートに入れるボタンを押しても最後のバナナしかカートに表示出来ません。 全ての商品の注文をカートに入れるにはどうすれば良いでしょうか? ご教授のほど宜しくお願いします。

    • ベストアンサー
    • PHP
  • ショッピングカートのセッション処理について。

    いつも拝見し大変お世話になっております。 現在ショッピングカートを作成しておりますが、商品購入画面から”購入する”のボタンを押したときに、購入する商品ID,注文数量、サイズ、商品価格をセッションとして 格納したいのですがうまくいかず困っております。 使用PHPバージョンは4.4です ソースは以下のとおりです。 //購入するのボタンを押したときの処理 if (isSet($_POST['cart']){ $_SESSION['cart'][$_POST(商品コード)] =+$_POST(商品価格); //↑セッション格納ここまで //(テスト)格納したデータを表示 print_r($_SESSION['cart']); } いろいろと調べて該当する商品コードと値段は 格納することができたのですが、その他の商品購入数などをデータにさらに格納する時どうすればいいかわかりませんでした。 お忙しい中大変申し訳ございませんがお知恵をお貸しいただけますでしょうか?よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php + mysql でフォーム作成時のエラー

    データベースから取り出したデータをラジオボタンで選択し、それをデータベース(別のテーブル)に追加させる機能を作りたいです。 非常に初歩的なことだとは思うのですがご教授ください。 MySQL 4.0.27 PHP 5.2.11 <FORM ACTION="cone3.php" METHOD="post"> <?php $srv = ""; // サーバー名 $id = ""; // ユーザーID $passwd = "; // パスワード $dbn = ""; // データベース名 $sql = "SELECT code, lname, lecturer, kind, gradetype FROM Lecture"; // SQL文 // データベースに接続する $db = mysql_connect($srv,$id,$passwd); mysql_select_db($dbn,$db); $rs = mysql_query($sql,$db); //--- テーブルのレイアウト --- 開始 -----------------------> print("<TABLE><TR>"); print("<TR><th> </th><th>講義名</th><th>教員</th><th>科目区分</th><th>配当学年</th></tr>"); while($row = mysql_fetch_array($rs)) { print '<tr><td><input type="radio" name="regist" value="$row['code']"></td>'; print '<td>' . $row['lname'] . '</td>'; print '<td>' . $row['lecturer'] . '</td>'; print '<td>' . $row['kind'] . '</td>'; print '<td>' . $row['gradetype'] . '</td>'; print '</tr>'; print ("</TR>"); } print("</TABLE>"); print_r($_POST); echo "<br />\n"; mysql_free_result($rs); mysql_close($db); //--- 終了 ---> ?> <input type="submit" name="submit" value="送信"> </form> 以上のようなソースでラジオボタンで配列の$row[code]の値を送りたいんですがうまくいきません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • セッション変数にカンマ区切りでいれていったデータを削除したい

    ショッピングカートを作りたいのですが、セッションのデータから特定の値を削除する方法がわかりません。 $_SESSION['vals']['cart'].="{$_POST['code']},"; $_SESSION['vals']['cart'].="{$_POST['name']},"; $_SESSION['vals']['cart'].="{$_POST['price']},"; $_SESSION['vals']['cart'].="{$_POST['num']},"; たとえば↑みたいに、他のページから飛んできたデータを$_SESSION['vals']['cart']に , 区切りで、どんどんデータを入れていったとしたら、どうやって、特定の値のデータを$_SESSION['vals']['cart']から削除するのでしょうか? よろしくおねがいいたします。

    • 締切済み
    • PHP
  • カートの中身ページの作成

    初投稿です、閲覧ありがとうございます。 現在勉強の一環として独学でPHPを利用したショップサイトを構築を始めたのですが、カートの中身のページについて困っています。 http://zozo.jp/_cart/default.html こちらのサイトの様にtableを利用した物で合計の部分を1つのセルとして扱いたいのですがどのようにすれば良いのでしょうか? http://okwave.jp/qa/q2385240.html こちらの記事を拝見し、以下のようにしてみましたが上手くいかず困っております。 <table> <tr> <th>商品</th> <th>個数</th> <th>値段</th> <th>合計</th> </tr> <?php if( isset ( $_SESSION["cart"] ) ) { foreach( $_SESSION["cart"] as $cart) {        list($index, $value) = each($_SESSION["cart"] ); echo $index;        if ($index == 0 ){ ?> <tr> <td></td> <td></td> <td></td> <td rowspan"<?php print count($_SESSION["cart"]); ?>">合計金額のセル</td> </tr> <?php } else { ?> <tr> <td></td> <td></td> <td></td> <td>このセルが結合される</td> </tr> <?php } } } ?> </table> if ($index == 0 ){ を if ($index == 1 ){ とすると商品が2種類以上入っている場合は理想の形になるのですが、1つのみだと合計金額のセルが表示されません。 (上記のecho $index; で値を確認したところ商品が1つの場合は[0]番目があるのですが2種類以上の場合[0]番目が無くなってしまいます。) 解決策、もしくはもっと相応しい書き方等御座いましたら御教示下さい。 宜しくお願いします。 ※ソースは余分な部分を削除して書いてみましたが、足りない部分があったり、逆に判りにくくなってしまいましたら申し訳ございません。

    • ベストアンサー
    • PHP