Codeigniter несколько полей отправить с одной формой и кнопкой - PullRequest
2 голосов
/ 01 мая 2011

У меня есть несколько форм, которые будут созданы 4 раза с тем же полем с циклом.и я запутался, как отправить эти поля в одной таблице базы данных с циклом.моя форма выглядит так:

<form action="http://localhost/pages/edit" method="post" name="form">
<p><label for='short'>Name</label><br/><input type="text" name="title[]" value=""  /></p>
    <p><label for='short'>Url</label><br/><input type="text" name="url[]" value="ddd-df-adsfasd--asdf"  /></p>
    <p><label for='short'>Short Description</label><br/><textarea name="shortdesc[]" cols="90" rows="12" id="short" size="40" ></textarea></p>
    <p><label for='long'>Long Description</label><br/><textarea name="longdesc[]" cols="40" rows="5" id="long" ></textarea></p> 
        <input type="hidden" name="category_id[]" value="124" />
<input type="submit" name="submit" value="Update"  />
</form>

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

1 Ответ

2 голосов
/ 01 мая 2011

Попробуйте:

$fields = array('title', 'url', 'shortdesc', 'longdesc', 'category_id');

foreach ($fields as $field)
{
    foreach ($_POST[$field] as $key => $value)
    {
        $data[$key][$field] = $value;
    }
}

foreach ($data as $values)
{
    $this->db->insert('table_name', $values);
}

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

Вы могли бы просто перебрать массив $ _POST, но это позволит вамчтобы легко публиковать другие поля без добавления их значений в массив для вставки.

Когда вы сказали i have multiple form, мне было немного неясно: вам нужно убедиться, что все это в одном теге <form>.

...