Отображать пользовательский ввод в текстовой области и форматировать как массив в базе данных PHP - PullRequest
1 голос
/ 15 марта 2019

Я создал страницу пользовательских параметров для своей темы WordPress и создал текстовую область для пользователей, чтобы добавить параметры, которые будут добавлены в массив в другом файле. Пользовательский ввод успешно добавлен в соответствующее место в базе данных, но он сохраняется в виде одной строки. Я хотел бы, чтобы пользователь мог вводить один параметр в каждой строке и сохранять входные данные в виде массива, а каждая строка - в качестве элемента в массиве.

например:

Текстовый ввод пользователя:

'my option1'
'my option2'
'my option3'

хранится как:

a:1:{s:24:"my_textarea_field_0";s:34:"my option1
my option2
my option3";}

Я бы хотел, чтобы он был сохранен в виде массива: {"my option1", "my option2", "my option3"}

Кроме того, текст, введенный в текстовую область, сохраняется в базе данных, но не отображается в текстовой области после нажатия кнопки отправки. Я хотел бы, чтобы пользовательский ввод был добавлен в базу данных в виде массива и продолжал отображаться в текстовой области после его отправки.

Вот соответствующий код:

function my_textarea_field_0_render() { 
        $this->$options = get_option('my_settings');
        ?>
        <p style="margin: .25em 0 .5em!important; display: inline-block;">
            <label for="my_settings[my_textarea_field_0]">
            Lorem ipsum dolor sit amet.</label>
        </p>
        <p>
        <textarea cols='145' rows='8' name='my_settings[my_textarea_field_0]'><?php echo $options['my_textarea_field_0'];?></textarea>
        </p>
        <?php
        add_option('my_settings', '$options');
}

Я потратил некоторое время на поиск решений и работу с кодом, но я не смог понять это.

1 Ответ

0 голосов
/ 15 марта 2019
  1. Чтобы сделать массив из значения textarea, используйте функцию explode. Может быть, этот пример кода полезен для вас.
$arrTextarea = explode("\n", str_replace("\r", "", $valTextarea));
  1. Вы должны использовать только код php в функции.
function my_textarea_field_0_render() { 
    $this->$options = get_option('my_settings');    
    $html = `
        <p style="margin: .25em 0 .5em!important; display: inline-block;">
            <label for="my_settings[my_textarea_field_0]">
            Lorem ipsum dolor sit amet.</label>
        </p>
        <p>
            <textarea cols='145' rows='8' name='my_settings[my_textarea_field_0]'>` . 
                $options['my_textarea_field_0'] . 
            `</textarea>
        </p>`;
    add_option('my_settings', '$options'); // I didn't understand what is $options.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...