0

特定の名前で始まる送信されたフォームから2つの値をループし、それをmysqlテーブルの行に挿入してさらにループする方法は?

私は多くの入力選択とテキストエリアを持つ投稿フォームを持っています。そのフォームの一部には2つのフィールド(リンク、説明)があり、同じフィールドを持つ余分な行を生成するボタンがありますが、名前。したがって、クリックしてその2つのフィールドの新しい行を生成すると、次のようになります。

<label for="stack_input"><input id="stack_input" name="extravalue" value="" type="text"></label>
<label for="flow_input"><input id="flow_input" name="secondextravalue" value="" type="text"></label>

<label for="stack_input"><input id="stack_input" name="extravalue1" value="" type="text"></label>
<label for="flow_input"><input id="flow_input" name="secondextravalue1" value="" type="text"></label>

<label for="stack_input"><input id="stack_input" name="extravalue2" value="" type="text"></label>
<label for="flow_input"><input id="flow_input" name="secondextravalue2" value="" type="text"></label>

今、私はフォームの残りの入力とテキストエリアと一緒にフォームを投稿しますが、毎回同じ行に追加されるペアとして、一度に2つの追加フィールドを新しいデータベース行に追加したいと考えています。今のところ foreach を作成できますが、新しいテーブル行に一度に追加できるのは 2 つのフィールドのうち 1 つだけです。

これを1つのフィールドで実現するコードを次に示します。私はphpに、2つの(ペア生成された)入力フィールドの最初の「extravalue」で始まるすべての投稿データを取得し、投稿値がテーブルに挿入される「extravalue」で始まるたびに取得するように言います。その2つの入力フィールドの新しい行を生成するたびに、それぞれベース名として「extravalue」と「secondextravalue」があり、名前の最後に数字1 2 3などを追加するたびに。ここにコード:

    foreach($_POST as $key => $value) 
    {
        if (strpos($key, 'extravalue') === 0) 
    {

    mysql_query("INSERT INTO tablename VALUES ('','','$value','','','')")or die("ADD Error: ".mysql_error());

    }
    }

ここで、生成された入力フィールドの各ペアを取り、データベースの同じ行に挿入したいと考えています。

だから私は次のことをしたい:

それぞれについて、

"extravalue" "secondextravalue"
"extravalue1" "secondextravalue1"
"extravalue2" "secondextravalue2"

mysql_query("INSERT INTO tablename VALUES ('','','$value','$value2','','')")or die("ADD Error: ".mysql_error());
mysql_query("INSERT INTO tablename VALUES ('','','$value','$value2','','')")or die("ADD Error: ".mysql_error());
mysql_query("INSERT INTO tablename VALUES ('','','$value','$value2','','')")or die("ADD Error: ".mysql_error());

要するに、「extravalue」と「secondextravalue」で始まる値を見つけるたびに、それらを同じテーブル行に挿入し、ループしてその2つの値の次のペアを検索し続けることをphpに言いたいです。同じ名前で。

4

1 に答える 1