2

ループのある同じフィールドで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回生成されます。そして、これらの値をコントローラーに取り込んでデータベースに追加する方法がわかりません。

4

1 に答える 1

4

これを試してください:

$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 配列をループすることもできますが、これにより、挿入のために配列に値を追加することなく、他のフィールドを簡単に投稿できます。

あなたが言ったとき、私は少し不明確でした: すべてが 1 つのタグi have multiple formに含まれていることを確認する必要があります。<form>

于 2011-05-01T05:29:14.220 に答える