简体   繁体   English

将多选值发布为数组

[英]Posting multiselect values as array

I've been putting together an advanced post notification system for wordpress custom posts, based on Carlo Daniele's post here: http://www.smashingmagazine.com/2015/05/building-wordpress-notification-system/ 我一直在根据Carlo Daniele在这里发布的帖子,为wordpress自定义帖子构建一个高级的帖子通知系统: http : //www.smashingmagazine.com/2015/05/building-wordpress-notification-system/

I'm trying to modify it so that user can select multiple States/Areas, where I'm running into trouble is posting the selected states to the database. 我正在尝试对其进行修改,以便用户可以选择多个州/地区,而我遇到麻烦的是将所选状态发布到数据库中。

    $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 -', );

Select Area: ` 选择区域:

        <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'] ) );

I've pushed and pulled at it but to no avail, tried. 我推了拉它,但无济于事,尝试过。 Last thing I tried was changing <select multiple="multiple" name="state"> to <select multiple="multiple" name="state[]"> 我尝试的最后一件事是将<select multiple="multiple" name="state">更改为<select multiple="multiple" name="state[]">

This posted as "Array" 此发布为“数组”

Any help would be great as always! 任何帮助将一如既往!

Using <select multiple="multiple" name="state[]"> works because you are getting "Array" as a value. 使用<select multiple="multiple" name="state[]">有效,因为您将“ Array”作为值。 The problem is that a database doesn't understand PHP data types, so you need to convert it into something it will understand... a quick search: 问题是数据库不了解PHP数据类型,因此您需要将其转换为可以理解的内容...快速搜索:

Insert array into MySQL database with PHP 用PHP将数组插入MySQL数据库

Or you can opt to serialize the data and insert it that way as well: 或者,您可以选择序列化数据并以这种方式插入:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM