2016-06-01 6 views
0

私は、ユーザーが項目を選択してその数量を入力できるようなフォームを持っています。私の質問は、セッションを使って次のページにどのようにエコーするのですか?たとえば、ユーザーが数量4のOPTION-1を選択した場合、次のページはSelected:Option1(4)をエコーし​​ます。どんな種類の助けでも大歓迎です。チェックボックスをオンにしたときのタイトルと数量をエコーし​​ますか?

は、ここに私のコードです:

  <label> 
       <input type="checkbox" name="combos[]" class="drink" value="Title1" data-price="560" /> 
       <input min="0" max="20" type="number" class="quantity" name="comboscount[]" value="true" placeholder="0"/><p>Quantity</p> 
      </label> 

     <label> 
      <input type="checkbox" name="combos[]" class="drink" value="Title2" data-price="322" /> 
      <input min="0" max="20" type="number" class="quantity" name="comboscount[]" value="true" placeholder="0"/><p>Quantity</p> 
     </label> 

     <label> 
      <input type="checkbox" name="combos[]" class="drink" value="Title3" data-price="231" /> 
      <input min="0" max="20" type="number" class="quantity" name="comboscount[]" value="true" placeholder="0"/><p>Quantity</p> 
     </label> 

そして、ここで私は2ページでそれを処理する方法は次のとおりです。

$_SESSION['combos'] = $_POST['combos']; 
$_SESSION['comboscount'] = $_POST['comboscount']; 

    if(empty($_SESSION['combos'])) 
    { 
    echo "Combos: <br />"."Nothing was selected."."<br /><br />"; 
    } 
    else 
    { 
    echo ("Combos: <br />"); 
    foreach ($_SESSION['combos'] as $key => $val) { 
    echo $val." (".$_SESSION['comboscount'][$key].")<br />"; 
} 
    echo ("<br />"); 
    } 

私は、リストにタイトルの配列を得たが、用として数量は空です。配列の処理に何か迷っていましたか?

もう一度感謝します。

+0

は、なぜあなたは '値=「true」の' 'タイプ=「数」のための'の入力を使用していますか? – Barmar

答えて

0

$_SESSION['comboscount']のキーとして$_SESSION['combos']のキーを使用することはできません。チェックされたチェックボックスのみがサーバーに送信されるためです。彼らは0から順番にインデックスを取得しますが、チェックされていないボックスはそのシーケンスには含まれません。一方、すべてのテキストボックスが提出されます。したがって、2つの配列のインデックスは、フォーム内の一致する要素に対応しません。

あなたができることは、明示的なインデックスをすべての名前に入れて、同期させておくことです。

<label> 
    <input type="checkbox" name="combos[0]" class="drink" value="Title1" data-price="560" /> 
    <input min="0" max="20" type="number" class="quantity" name="comboscount[0]" value="true" placeholder="0"/><p>Quantity</p> 
</label> 

<label> 
    <input type="checkbox" name="combos[1]" class="drink" value="Title2" data-price="322" /> 
    <input min="0" max="20" type="number" class="quantity" name="comboscount[1]" value="true" placeholder="0"/><p>Quantity</p> 
</label> 

<label> 
    <input type="checkbox" name="combos[2]" class="drink" value="Title3" data-price="231" /> 
    <input min="0" max="20" type="number" class="quantity" name="comboscount[2]" value="true" placeholder="0"/><p>Quantity</p> 
</label> 

テキストボックス内のインデックスは冗長ですが、明示的な相関を確認すると便利です。

フォームが自動的にインデックスに記入することができるはず作成するコード:

foreach ($items as $index => $item) { ?> 
    <label> 
     <input type="checkbox" name="combos[<?php echo $index; ?>]" class="drink" value="<?php echo $item['name']; ?>" data-price="<?php echo $item['price']; ?>" /> 
     <input min="0" max="20" type="number" class="quantity" name="comboscount[<?php echo $index; ?>]" value="true" placeholder="0"/><p>Quantity</p> 
    </label> 
<?php ; 
+0

ありがとう@barmar。それは解決策かもしれませんが、問題はフォームにラベルをループさせて、フォームがその特定のカテゴリにチェックボックスを表示するようにすることです。したがって、私のチェックボックスは次のようになります: KevinG

+0

コメントにコードを挿入しないでください。問題がさらに詳細になった場合は、質問を編集してください。 – Barmar

+0

私はモバイルのように後で編集します。ありがとう – KevinG

関連する問題