【问题标题】:Using EXTJS4, how to post multiselct combo content to PHP使用 EXTJS 4,如何将多选组合内容发布到 PHP
【发布时间】:2012-08-12 08:26:05
【问题描述】:

使用 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 读取以便我可以编写查询?

【问题讨论】:

    标签: php json extjs4


    【解决方案1】:

    json_decode()在PHP中解码JSON,它包含的任何数组都是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;
    
    }
    

    【讨论】:

    • 如何将每个数组元素与传入的每个静态元素一起放入?
    • 这是传递给 php 的 JSON:{"data":{"ID":"","FAMILYNAME":"2G","TABLENAME":["TABLE_A1","TABLE_A1B"," TABLE_A2 "],"TARGETNAME":"","GROUPNAME_SN":"C_6610","FLAVORNAME_SN":"_F_SYMB","GROUPNAME":"","FLAVORNAME":"","TARGETLABEL":"6610 [Full Symbian ]","TARGETVALUE":"","ITEMREL":"","ITEMREF":"","ITEMNAME":"","ITEMMNEMONIC":"","ALLOWED":"","脚注":" ","DETAILS":"","VOID":""}}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2011-03-04
    • 2012-06-29
    • 1970-01-01
    • 2013-07-27
    • 2023-03-30
    相关资源
    最近更新 更多