【问题标题】:Multiple values in name=cat doesn't workname=cat 中的多个值不起作用
【发布时间】:2015-04-11 07:50:25
【问题描述】:

我正在尝试使用多个值初始化“cat”变量(以创建一个 php 数组)。问题是我每次都得到最后一个值。 因此,我在我的 html 代码中将 name='cat' 替换为 name='cat[]' 但它确实有效。

现在我有以下干净的代码

开始代码: PHP 代码

<?php
                    $args = array( 'taxonomy' => APP_TAX_CAT, 'selected' => $field['cat'], 'hierarchical' => 1, 'class' => 'text required', 'show_option_none' => __( '-- Select One --', APP_TD ), 'hide_empty' => 0, 'echo' => 0 );
                    $select = wp_dropdown_categories( $args );
                    $select = preg_replace('"-1"', "", $select); // remove the -1 for the "select one" option so jquery validation works
                    echo $select;
                ?>

我把它改成这样:

PHP 代码

<?php
                    $args = array( 'taxonomy' => APP_TAX_CAT, 'selected' => $field['cat'], 'hierarchical' => 1, 'class' => 'text required', 'show_option_none' => __( '-- Select One --', APP_TD ), 'hide_empty' => 0, 'echo' => 0 );
                    $select = wp_dropdown_categories( $args );
                    $select = str_replace('id=', 'multiple="multiple" id=', $select);
                    if (is_array($taxonomy_default)) {    
                        foreach ($taxonomy_default as $key => $post_term) {
                            $select = str_replace(' value="' . $post_term . '"', ' value="' . $post_term . '" selected="selected"', $select);
                        }
                    } else {
                        $select = str_replace(' value="' . $taxonomy_default . '"', ' value="' . $taxonomy_default . '" selected="selected"', $select);
                    }
                    $select = preg_replace('"-1"', "", $select); // remove the -1 for the "select one" option so jquery validation works
                    echo $select;
                ?>

HTML 代码

    <select name='cat' multiple="multiple" id='cat' class='text required'>
<option value=''>&#8211; Select One &#8211;</option>
<option class="level-0" value="2">something1</option>
<option class="level-0" value="3">something2</option>
<option class="level-0" value="4">something3</option>
<option class="level-0" value="5">something4</option>
</select>

另外,我可以从该代码处理“猫”分类:

    $fields = array(
        'post_title',
        'cat',
        'tags_input'
    );

    // match the field names with the posted values
    // this process is to prevent unexpected field values from being passed in
    foreach( $fields as $field ) {
        $posted[ $field ] = isset( $_POST[ $field ] ) ? appthemes_clean( $_POST[ $field ] ) : '';
    }
if ( $posted['cat'] > 0 )
            $post_into_cats[] = get_term_by('id', $posted['cat'], APP_TAX_CAT)->slug;

我用str_replace 做了一些替换,但效果不佳。

HTML 代码:

<select name='cat[]' multiple="multiple" id='cat[]' class='text required'>
<option value=''>&#8211; Select One &#8211;</option>
<option class="level-0" value="2">something1</option>
<option class="level-0" value="3">something2</option>
<option class="level-0" value="4">something3</option>
<option class="level-0" value="5">something4</option>
</select>

【问题讨论】:

    标签: php html wordpress forms


    【解决方案1】:

    哪个部分不起作用?这部分对我来说很好用..

    <?php
      print_r($_GET);
      if(isset($_GET['cat'])) {
        echo 'selected: ';
        foreach($_GET['cat'] as $v) echo $v . ' ';
      }
    ?>
    <form action=''>
        <select name='cat[]' multiple="multiple" id='cat[]' class='text required'>
            <option value=''>&#8211; Select One &#8211;</option>
            <option class="level-0" value="2">something1</option>
            <option class="level-0" value="3">something2</option>
            <option class="level-0" value="4">something3</option>
            <option class="level-0" value="5">something4</option>
        </select>
        <input type='submit'>
    </form>
    

    【讨论】:

    • 我的操作类型是 $_POST。 pff,我还以为是 GET 不小心,我的 !@!#4@!# 错误。
    猜你喜欢
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 2010-12-28
    相关资源
    最近更新 更多