0

EXTJS4を使用して、フォーム内に複数選択コンボコントロールがあります。これは、JavaScriptで選択された値の配列を作成することです。このフォームデータ(他の3つのテキストフィールド値)と、複数選択からの出力(配列-["value1"、 "value2"]など)をPHPスクリプトに送信してから、値をロードする必要があります。 Oracleデータベースに。フォームからの静的な値と、データベースに新しいレコードを追加するために返される各配列要素が必要になります。渡された配列を複数選択からPHPが理解できるものに変換する方法がわかりません。

たとえば、フォームが返される場合-"fname":John、 "lname":Smith、 "email":jsmith@email.com、 "fav_color":["red"、green "、"blue"]。必要ですかこれらの値をデータベースに書き込むための3つのクエリを作成するには-{"John、Smith、jsmith@email.com、red"、 "John、Smith、jsmith@email.com、green"、 "John、Smith、jsmith @ email .com、blue "}または、JSONからの値を「分割」または展開して、PHPが読み取れるようにし、クエリを記述できるようにするにはどうすればよいですか。

4

1 に答える 1

0

を使用して PHP で JSON をデコードするとjson_decode()、含まれるすべての配列が PHP 配列になります。例えば:

$data = json_decode(

  '{ "fav_color" : [ "red", "green", "blue" ] }',

  TRUE

);

var_export( $data );

// Outputs:

array (
  'fav_color' =>
  array (
    0 => 'red',
    1 => 'green',
    2 => 'blue',
  ),
)

これにより、PHP の配列にアクセスできるようになります。そのデータで目的を達成するために実行する必要があるクエリがわかりません。

組み合わせ

次に、渡された各静的要素を使用して各配列要素を配置するにはどうすればよいでしょうか?

これにはさまざまな方法があります。ここにいくつかあります:

1)

$combinations = array();

foreach ( $data[ 'fav_color' ] as $color ) {

  $combination = $data;

  $combination[ 'fav_color' ] = $color;

  $combinations[] = $combination;

}

2)

フォームからデータを抽出して JSON としてシリアル化する方法はわかりませんが、HTML が次のようになっている場合は...:

<form method="post">

<input type="text" name="static[fname]" value="First" />

<input type="text" name="static[lname]" value="Last" />

<input type="text" name="static[email]" value="Email" />

<select multiple name="fav_color[]">

<option value="red" selected>Red</option>

<option value="green" selected>Green</option>

<option value="blue" selected>Blue</option>

</select>

</form>

...そして、フォームを PHP に送信すると、次のデータ構造が$_POST:

array(

  'static' => array(

    'fname' => "First",

    'lname' => "Last",

    'email' => "Email"

  ),

  'fav_color' => array( 'red', 'green', 'blue' )

)

したがって、#1と同様に、次のことができます。

$combinations = array();

foreach ( $data[ 'fav_color' ] as $color ) {

  $combination = $data[ 'static' ];

  $combination[ 'fav_color' ] = $color;

  $combinations[] = $combination;

}
于 2012-08-16T01:53:06.253 に答える