将多重选择值作为数组

时间:2015-10-30 17:07:31

标签: php wordpress

根据Carlo Daniele的帖子,我一直在为wordpress自定义帖子整理一个高级帖子通知系统:http://www.smashingmagazine.com/2015/05/building-wordpress-notification-system/

我正在尝试修改它,以便用户可以选择多个状态/区域,我遇到麻烦就是将所选状态发布到数据库。

    $smashing_notification_states = array( '- Dublin City Centre -' => '- Dublin City Centre -', '- North Dublin City -' => '- North Dublin City -', 
'- South Dublin City -' => '- South Dublin City -', 
'- North Co. Dublin -' => '- North Co. Dublin -', 
'- South Co. Dublin -' => '- South Co. Dublin -', 
'- West Co. Dublin -' => '- West Co. Dublin -', );

选择区域: `             

        <td>
            <label for="state">
                <select  multiple="multiple"  name="state">
                    <option value="" <?php selected( get_user_meta( $user->ID, 'state', true ), "" ); ?>>Select</option>
                    <?php foreach ($smashing_notification_states as $key => $value) { ?>
                        <option value="<?php echo $key; ?>" <?php selected( esc_attr( get_user_meta( $user->ID, 'state', true ) ), $key ); ?>><?php echo $value; ?></option>
                    <?php } ?>
                </select>
                <?php _e( 'Select area', 'smashing' ); ?>
            </label>
        </td>
    </tr>`

if( isset($_POST['state']) ) update_user_meta( $user_id, 'state', sanitize_text_field( $_POST['state'] ) );

我已经推了推,但无济于事,尝试过。我尝试的最后一件事是将<select multiple="multiple" name="state">更改为<select multiple="multiple" name="state[]">

发布为“数组”

任何帮助都会一如既往的好!

1 个答案:

答案 0 :(得分:0)

使用<select multiple="multiple" name="state[]">是有效的,因为您正在使用&#34;数组&#34;作为一种价值。问题是数据库不能理解PHP数据类型,所以你需要将它转换成它能理解的东西......快速搜索:

Insert array into MySQL database with PHP

或者您可以选择序列化数据并以这种方式插入:

http://php.net/manual/fr/function.serialize.php