0

PHPページに、配列のループによって作成されたフォームがあります。

echo '<form method="POST" name="add_to_cart_form">
        <div id="Product_add_sizes">
           <table border="0" cellpadding="2" class="product_txt_font" align="center">
              <input type="hidden" name="product_id" value="'.$arr_get_products[$c]['id'].'">';

                   for ($d = 0; $d < count($arr_get_product_details); $d++)
                   {
                      echo '<tr>
                              <td>
                                 <input type="radio" name="size[]" value="'.$arr_get_product_details[$d]['size'].'">
                              </td>
                              <td>
                                 <input class="qty" type="text" size="3" name="amount" value="1">
                              </td>
                            </tr>';
                   }

     echo '</table>
          <input type="submit" name="add_to_chart" value="Add Product" />
        </div>
      </form>';

このフォームを投稿するとき、選択したラジオボタンに属する数量の入力を取得する方法を探しています。選択したラジオボタンの行のデータのみが必要です。この商品をショッピングカートの配列に追加したいので、他のデータは必要ありません。

if (isset($_POST['add_to_chart']))
{
    $product_id = $_POST['product_id'];
    $size = $_POST['size'][0];
    $qty = $_POST['amount'];
}

ページを投稿するときに、配列の原因として必要なサイズはわかっていますがsize[] 、選択したラジオボタンに一致する関連する数量値を取得できません。

数量を配列にすることでラジオボタンと同じように処理しようとしましたqty[]が、すべての値が返されます。

私はSOを検索し、たくさんグーグルで検索しましたが、まともな答えは見つかりませんでしたが、これはよく使われているように見えます。ここで欠けているものを教えてください。

どんな助けでも大歓迎です!

4

4 に答える 4

1

ラジオボタンはすべて同じ名前を使用する必要があります。選択したラジオボタンの値のみが送信されます。

<input type="radio" name="Radiosize" value="'.$arr_get_product_details[$d]['size'].'">

それから:

$size = $_POST['Radiosize'];

それを配列として見る必要はありません-それは1つとして提出されません。ラジオボタンは、フォーム処理のチェックボックスとは異なります。

于 2012-08-17T11:02:21.067 に答える
1

変化する

<input class="qty" type="text" size="3" name="amount" value="1">

<input class="qty" type="text" size="3" name="amount[]" value="1">

次に、同じサイズの2つのアレイが作成されます。

<?php
    $size = $_POST['size'][0];
    $amount = $_POST['amount'][$size];
?>
于 2012-08-17T11:03:38.990 に答える
1

フォームコード:

    <input type="radio" name="size" value="'.$arr_get_product_details[$d]['size'].'">
    <input class="qty" type="text" size="3" name="amount['.$arr_get_product_details[$d]['size'].']" value="1">

そして、あなたはサイズの価値を持つでしょう。そして、サイズキーを持つ金額の配列。

    $size   = $_POST['size'];
    $amount = $_POST['amount'][$size];
于 2012-08-17T11:09:47.577 に答える
0

次のようにして問題を解決しました。

ここの上の人たちは皆、私を正しい軌道に乗せてくれました、そして彼らなしではそれを成し遂げることができませんでした!

かわった

<input type="radio" name="size[]" value="'.$arr_get_product_details[$d]['size'].'">
<input class="qty" type="text" size="3" name="amount" value="1">

<input type="radio" name="size['.$d.']" value="'.$arr_get_product_details[$d]['size'].'">
<input class="qty" type="text" size="3" name="amount['.$d.']" value="1">

また変更されました

if (isset($_POST['add_to_chart']))
{
    $product_id = $_POST['product_id'];
    $size = $_POST['size'][0];
    $qty = $_POST['amount'];
}

これに

if (isset($_POST['add_to_chart']))
{
    // Array ID key
    $key = key($_POST['size']);

    $product_id = $_POST['product_id'];
    $size = $_POST['size'][$key];
    $qty = $_POST['amount'][$key];
}

チャームのように機能します!非常に有益なコメントをありがとうございました!

于 2012-08-17T11:42:20.030 に答える