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 回答