0

50 個の製品が表示されているページがあります。各商品には最大 4 つのカテゴリを設定できます。

このページには保存ボタンが 1 つ必要なので、3 つの情報を送信する方法を考えています。商品id、全4商品categories、カテゴリーvalues

送信すると、次のようになります。

35:Array
88:Array

現在の構造は次のとおりです: (各製品には 4 つのカテゴリがあるため、これらは 50 個になることに注意してください)

<select name="[ PRODUCT ID ][ CATEGORY ONE ]">
<option value="[ CATEGORY ID ]"> CATEGORY NAME </option>
</select>
<select name="[ PRODUCT ID ][ CATEGORY TWO ]">
<option value="[ CATEGORY ID ]"> CATEGORY NAME </option>
</select>
<select name="[ PRODUCT ID ][ CATEGORY THREE ]">
<option value="[ CATEGORY ID ]"> CATEGORY NAME </option>
</select>
<select name="[ PRODUCT ID ][ CATEGORY FOUR ]">
<option value="[ CATEGORY ID ]"> CATEGORY NAME </option>
</select>

2 つの製品に相当するコードは次のとおりです。

<?
if(isset($_POST['productCat'])){
    foreach($_POST['productCat'] as $a=>$b){
        echo $a.':'.$b.'<br>';
    }
}

?>
<form method="post">
<select name="productCat[35][1]">
    <option value="[3]">3</option>
    <option value="[4]">4</option>
    <option value="[5]">5</option>
    <option value="[6]">6</option>
    <option value="[7]">7</option>
    <option value="[8]">8</option>
</select>
<select name="productCat[35][2]">
    <option value="[3]">3</option>
    <option value="[4]">4</option>
    <option value="[5]">5</option>
    <option value="[6]">6</option>
    <option value="[7]">7</option>
    <option value="[8]">8</option>
</select>
<select name="productCat[35][3]">
    <option value="[3]">3</option>
    <option value="[4]">4</option>
    <option value="[5]">5</option>
    <option value="[6]">6</option>
    <option value="[7]">7</option>
    <option value="[8]">8</option>
</select>
<select name="productCat[35][4]">
    <option value="[3]">3</option>
    <option value="[4]">4</option>
    <option value="[5]">5</option>
    <option value="[6]">6</option>
    <option value="[7]">7</option>
    <option value="[8]">8</option>
</select>
<select name="productCat[88][1]">
    <option value="[3]">3</option>
    <option value="[4]">4</option>
    <option value="[5]">5</option>
    <option value="[6]">6</option>
    <option value="[7]">7</option>
    <option value="[8]">8</option>
</select>
<select name="productCat[88][2]">
    <option value="[3]">3</option>
    <option value="[4]">4</option>
    <option value="[5]">5</option>
    <option value="[6]">6</option>
    <option value="[7]">7</option>
    <option value="[8]">8</option>
</select>
<select name="productCat[88][3]">
    <option value="[3]">3</option>
    <option value="[4]">4</option>
    <option value="[5]">5</option>
    <option value="[6]">6</option>
    <option value="[7]">7</option>
    <option value="[8]">8</option>
</select>
<select name="productCat[88][4]">
    <option value="[3]">3</option>
    <option value="[4]">4</option>
    <option value="[5]">5</option>
    <option value="[6]">6</option>
    <option value="[7]">7</option>
    <option value="[8]">8</option>
</select>
<input type="submit" value="Save">
</form>
4

2 に答える 2

1

data-サーバーに POST しているオブジェクトにデータを簡単に収集できるように、属性と一緒に jQuery を使用する必要があります。

おそらくGETクエリ変数に保存できる製品ID:?prodId=43

<select data-category="1">
   <option value="3">3</option>
   <option value="4">4</option>
   <option value="5">5</option>
   <option value="6">6</option>
   <option value="7">7</option>
   <option value="8">8</option>
</select>

そしてjQueryの部分:

var info = [];

$('select').each(function() {
   info.push({
              'category': $(this).data('category'),
              'value': $(this).val()
            });
});
于 2013-02-20T23:37:34.383 に答える
0

あなたが持っているので

<select name="productCat[35][1]">
<select name="productCat[35][2]">
...
<select name="productCat[88][1]">
<select name="productCat[88][2]">

の値

$_POST[ 'productCat' ]

実際には配列です。次のような配列:

   array( 35 => array( 1 => .., 2 => .., 3 => ..., ... ),
          88 => array( 1 => .., 2 => .., 3 => ..., ... )
        );

したがって、デバッグ出力は非常に合理的です。

次のように配列にアクセスします。

$_POST[ 'productCat' ][ 35 ][ 3 ] 
$_POST[ 'productCat' ][ 88 ][ 5 ] 

一般に、変数 (式) が配列を参照する場合 (別の配列の一部としての配列であっても)、単に追加[...]してこのサブ配列にアクセスします

  • $_POST[ 'productCat' ] は、スクリプトによって返される束全体です
  • $_POST[ 'productCat' ][ 35 ] はすべて製品 35 の値です
  • $_POST[ 'productCat' ][ 35 ][ 5 ] は、製品 35 のカテゴリ 5 の選択された値です。
于 2013-02-20T23:33:22.860 に答える