разместить форму через php с массивом - PullRequest
3 голосов
/ 29 марта 2012

Я использую sirportly для своей поддержки, и у меня есть возможность удаленно публиковать формы через html, однако я пытаюсь интегрировать это в WordPress и поэтому хочу опубликовать эту форму из плагина через curl / php.у меня есть, чтобы публиковать в объекты массива:

например, базовая исходная форма HTML, созданная sirportly, содержит следующее:

<input type='text' name='ticket[name]' id='form26-name' />
<input type='text' name='ticket[email]' id='form26-email' />
<input type='text' name='ticket[subject]' id='form26-subject' />
<textarea name='ticket[message]' id='form26-message'></textarea>

я знаю для основных элементов формы, например, name = name, name =электронная почта и т. д. Я могу сделать следующее:

//create array of data to be posted
$post_data['firstName'] = 'Name';
$post_data['action'] = 'Register';
//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
    $post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);

как мне сделать подобное, если элементы нужно публиковать как «тикет [имя]», а не просто «имя»

РЕДАКТИРОВАТЬ/ ОБНОВЛЕНИЕ - ОТВЕТ

Благодаря ответам ниже, я пришел к решению, моя проблема не получала доступ к данным из массива, поскольку я получал их по-другому (но из массива всето же самое), но правильно закодировал его в запросе post, вот что я закончил (обратите внимание, что я использую гравитационные формы для получения данных:

//numbers in here should match the field ID's in your gravity form
$post_data['name'] = $entry["1"];
$post_data['email'] = $entry["2"];
$post_data['subject'] = $entry["3"];
$post_data['message']= $entry["4"];

foreach ( $post_data as $key => $value) {
    $post_items[] = 'ticket[' . $key . ']' . '=' . $value;
}

$post_string = implode ('&', $post_items);

мне просто нужно было изменить цикл forобернуть дополнительный билет [и] разделяет ключ для отправки сообщения

Ответы [ 3 ]

3 голосов
/ 29 марта 2012
foreach ( $post_data['ticket'] as $key => $value) {
    $post_items[] = $key . '=' . $value;
}
2 голосов
/ 29 марта 2012

Форма, которую вы перечислили выше, приведет к такой структуре на сервере:

$_POST["ticket"] = Array(
   "name" => "some name",
   "email" => "some@thing",
   "subject" => "subject of something",
   "message" => "message text"
   );

Итак, $_POST["ticket"] действительно ваш $post_data

0 голосов
/ 29 марта 2012

Вы получаете доступ к переменной следующим образом: $_POST['ticket']['name']

, поэтому, если вы хотите увидеть значение, вы должны: echo $_POST['ticket']['name'];

, чтобы выполнить цикл:

foreach($_POST['ticket'] as $key => $val){
    echo "Key =>  " . $key. ", Value => " . $val . "<br />";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...