PHPについて質問です。


プログラム詳しい方で時間があるかたおりましたら、コードをチェックして頂ければと考えております。

現在ショッピングカートのシステムを作成しております。

下記が今回作成したページになります。

★商品購入ページ

URL:http://oskuni7.sakura.ne.jp/hatena/question1/hanbai.php
コード:http://oskuni7.sakura.ne.jp/hatena/question1/hanbai.txt

★ショッピングカートの中身

URL:http://oskuni7.sakura.ne.jp/hatena/question1/cart_nakami.php
コード:http://oskuni7.sakura.ne.jp/hatena/question1/cart_nakami.txt

今回は

●商品の購入ボタンを押すとカートの確認画面で商品がきちんと追加される。

●削除ボタンを押して削除される。

という一連の動作をスムーズに出来ることを目標として作成しました。

しかし、問題点が幾つか発生しており

★問題1 初めて扱う二次元配列で、Warning: Cannot use a scalar value as an arrayというエラーが発生。

★問題2 数多く追加と削除を繰り返す際、どのようにプログラムを組めば効率的か?

といった問題点を抱えております。

ご回答頂いた方多めにポイントを支払わせて頂ければと考えております。

どうぞよろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/12/06 01:47:41
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:goodvn No.2

回答回数228ベストアンサー獲得回数18

ポイント100pt

基本的な設計がまずいので,これをベースに修正するより,他のアプリケーションのコードを見て勉強されるのが良いと思いますが,このコードを使う前提でいくつか気づいた点を上げておきます

まず,セッションの使い方ですが,セッションは一度スタートすればいいので,各商品リスト取り扱いの中の session_start() は不要です

配列ですが,例えば,

$_SESSION['TABLE'][0]['TITLE'] = '商品1';
$_SESSION['TABLE'][0]['PRICE'] = '12000';
$_SESSION['TABLE'][1]['TITLE'] = '商品2';
$_SESSION['TABLE'][1]['PRICE'] = '7800';
<||

となっていれば,$_SESSION['TABLE'] の要素数を数えれば (count()関数),テーブルの列数は分かりますから,インクリメントなどの処理は必要ありません

商品を複数扱うのであれば,

>|PHP|
$products = array(
  'a1' => array(
    'title' => '商品1',
    'price' => '12000',
  ),
  'a2' => array(
    'title' => '商品2',
    'price' => '7800',
  ),
);

といった配列を使って一気に管理できますから,ハードコーディングよりスムーズにコードを書けると思います

具体的に言えば,この配列は,

$products['a1']['title']; //商品a1の名前
$products['a2']['price']; //商品a2の値段

といった具合にアクセスできますので,これをうまく使えば,同じようなコードを何個も書く必要は無いし,商品を増やすときは,配列を管理するだけでいいですよね

複雑なショッピングカートのプログラムを見ても参考にならないだろうし,逆に戸惑うと思いますので,まずはシンプルで良いので,きちんと書かれたアプリケーション(サンプルレベルのプログラムではなく)のソースコードを,疑問点が一個もなくなるまで徹底的に読み込むと勉強になると思います

id:aiomock

ご回答ありがとうございます。

2008/12/06 01:34:03

その他の回答1件)

id:goodvn No.1

回答回数228ベストアンサー獲得回数18

ポイント100pt

すいません.アドバイスしようと思いましたが,とりあえず動作しませんでした

コードは,txt ではなく,phps にすると見やすいと思います

動くようになったら,コード見ながらアドバイスできるかもしれません

id:aiomock

ご回答ありがとうございます。

拡張子phps に設定させて頂きました。


★商品購入ページ

http://oskuni7.sakura.ne.jp/hatena/question1/hanbai.phps


★ショッピングカートの中身

http://oskuni7.sakura.ne.jp/hatena/question1/cart_nakami.phps


phpsファイルにすると色が付くと書いてあったのですが色が反映されていないのは何か問題があるのでしょうか。(私側で確認したところ色が反映されておりませんでした)

2008/11/30 01:09:46
id:goodvn No.2

回答回数228ベストアンサー獲得回数18ここでベストアンサー

ポイント100pt

基本的な設計がまずいので,これをベースに修正するより,他のアプリケーションのコードを見て勉強されるのが良いと思いますが,このコードを使う前提でいくつか気づいた点を上げておきます

まず,セッションの使い方ですが,セッションは一度スタートすればいいので,各商品リスト取り扱いの中の session_start() は不要です

配列ですが,例えば,

$_SESSION['TABLE'][0]['TITLE'] = '商品1';
$_SESSION['TABLE'][0]['PRICE'] = '12000';
$_SESSION['TABLE'][1]['TITLE'] = '商品2';
$_SESSION['TABLE'][1]['PRICE'] = '7800';
<||

となっていれば,$_SESSION['TABLE'] の要素数を数えれば (count()関数),テーブルの列数は分かりますから,インクリメントなどの処理は必要ありません

商品を複数扱うのであれば,

>|PHP|
$products = array(
  'a1' => array(
    'title' => '商品1',
    'price' => '12000',
  ),
  'a2' => array(
    'title' => '商品2',
    'price' => '7800',
  ),
);

といった配列を使って一気に管理できますから,ハードコーディングよりスムーズにコードを書けると思います

具体的に言えば,この配列は,

$products['a1']['title']; //商品a1の名前
$products['a2']['price']; //商品a2の値段

といった具合にアクセスできますので,これをうまく使えば,同じようなコードを何個も書く必要は無いし,商品を増やすときは,配列を管理するだけでいいですよね

複雑なショッピングカートのプログラムを見ても参考にならないだろうし,逆に戸惑うと思いますので,まずはシンプルで良いので,きちんと書かれたアプリケーション(サンプルレベルのプログラムではなく)のソースコードを,疑問点が一個もなくなるまで徹底的に読み込むと勉強になると思います

id:aiomock

ご回答ありがとうございます。

2008/12/06 01:34:03
  • id:goodvn
    サーバ側の phps の設定が違うんでしょうね
    もし,ユーザで個別の設定が許されているなら,.htaccess などで

    >|conf|
    AddType application/x-httpd-php-source .phps
    ||<

    とすると色がつくかもしれません
  • id:tobeoscontinue
    PHP_SELFよりSCRIPT_NAMEの方がいいようです。
    http://itpro.nikkeibp.co.jp/article/COLUMN/20070227/263356/

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません