2011-08-14 6 views
0

私が作成している注文システムを制御するスクリプトに問題があります。注文システムの作成 - 多くの可能なアイテムのうちの1つだけが注文に追加される問題があります

システムには、ユーザ指定の文字列をmysqlテーブルに保持されている商品に対して照会する検索機能が含まれています。文字列が項目説明の一部と一致する場合、その項目が結果として返されます。

今、問題はこれです。

ユーザーが結果を5と返す文字列を検索した場合。

次に、ユーザは、1つの結果のうち3つと別の結果の2つを追加したいと決定します。

次に注文をクリックすると、フォームが送信されます。

ここでは、ユーザーが数量を入力した最初の結果のみが注文に追加されるため、ここに問題が表示されます。

注文には、数量3の品目と数量2の品目が含まれている必要があります。これを実行していないため、ここで何が問題になるのか分かりません。ここで

は注文ボタン上のユーザーのクリックのインスタンスを制御するコードです:私はこれで間違いを作っていますどこ

if (!isset($_SESSION['order'])) 
{ 
    $_SESSION['order'] = array(); 
} 

if (!isset($_SESSION['quantity'])) 
{ 
    $_SESSION['quantity'] = array(); 
} 

$productQuantities=$_POST['quantity']; 
if (isset($_POST['action']) and $_POST['action'] == 'Order' and $productQuantities > 0) 
{ 
foreach($productQuantities as $productId=>$quantityS) 
{ 
     if ($quantityS > 0) 
      { 
      $_SESSION['order']["$productId"] = $productId; 
      $_SESSION['quantity']["$productId"] = $quantityS; 
      header('Location: .'); 
      exit(); 
      } 
} 
} 

誰でも見ることができますか?

ご連絡いただければ幸いです。リクエストに応じて追加のコードを提供いたします。

ありがとうございます!

+0

'$ productQuantities> 0' ...この変数は配列です、なぜあなたはそれを0と比較していますか? –

答えて

1

ループを作成しますが、そのループの最初の反復では、Locationヘッダーとexitのスクリプトの実行を送信します。明らかに、スクリプトを終了して訪問者を別のページに送ると、製品は$_SESSIONに追加できなくなります。

ループを途中で終了せず、終了後に(正しい!)位置ヘッダーのみを送信しないでください。

+0

あなたは男です!ハハ、とてもシンプルすぎ。ここでの入力をありがとう、本当にありがとう!しかし、このアプリケーションは大衆のために設計されておらず、このリダイレクト方法をサポートするブラウザを使用するユーザーはほんのわずかです。これが私がこのようにした理由です。この方法を知っておくべき他の理由はありますか? –

関連する問題