0

フォームのテキストボックスを使用して、ユーザーが最大10個のカテゴリを作成できるようにしています。これを行うために、name =cat[]のフォームに10個のテキストボックスがあります。初めてカテゴリに入るときは、受信側で最大10個まで、カテゴリの配列を収集し、挿入ステートメントを使用してカテゴリのテーブルに保存します。ここまでは順調ですね。

ただし、今は、設定済みのカテゴリを変更したり、合計10個まで追加したりしたいと思います。すでに設定されているカテゴリにはIDがあります。そのため、IDをカテゴリ名とともにフォームにエコーします。私の問題は、名前とIDを今どのように収集するかです。新しいものを挿入する必要があり、既存のものをテーブルで更新する必要があるかもしれませんか?どういうわけか、私はこれを行う方法を完全に失っています。これは私がこれまでに持っているものです>

テーブル猫

id | catname | userid

フォームページ:

//retrieve existing cats if any...also get catids

echo '<form action = storecats.php method=post>';
$i=1;
//Get all existing cats
while($row = mysql_fetch_array($res))
{
    $catname = $row['catname'];
    $catid = $row['id'];
    echo '<input type = "text name="cat[]" value="'.$catname.'">Cat 1';
    echo '<input type="hidden" name="id[]" value = "'.$catid.'">';
    $i = $i+1;
}
//empty boxes up to ten.
while($i <= 10){
    echo '<input type="text" size=18 name="cat[]" value=""> Cat '.$i.'<br>';
    $i = $i+1;
}//end appending of blank categories
echo '<input type="submit" name="submit" value="submit"></form>';

受信側で、catとidの配列を収集できます。

$idarray = $_POST['id']; //there will be as many elements as there were ids
$catarray = $_POST['cat'];  //there will be ten elements in array

IDがある場合は更新を実行し、IDがない場合は値が空白でない限り挿入します。

私の問題は、異なる配列で受信されているIDと猫の名前をリンクする方法がわからないことです。猫の名前は常に10個ありますが、そのユーザーの以前のテーブルにあったIDの数だけが存在することに注意してください。

4

3 に答える 3

3

HTML側の2つの配列でそれを行うことができます:

    $x=0;
    while ($row = mysql_fetch_array($res))
    {
        echo '<input type="text" name="updateCat['.$row["id"].']" value="'.$row["catname"].'"> Cat Name';
        $x++;
    }

    // new ones
    for(;$x<10;$x++)
    {
        echo '<input type="text" name="newCat[]">';
    }

そしてPHP側:

    // update old categories
    foreach ($_POST["updateCat"] as $key => $value)
    {
        mysql_update ("UPDATE table SET name = $value WHERE id = $key");
    }

    // insert 
    foreach ($_POST["newCat"] as $value)
    {
        mysql_update ("INSERT INTO table {...}");
    }

また、新しいカテゴリを挿入するときにカテゴリが 10 個以下であることも確認しました。

于 2012-07-16T13:42:30.767 に答える
0

わかりませんが、2つのカテゴリセットに異なる名前を付けることができます。

2番目のループで'name= "new_cat []"'を入力すると、変更されたカテゴリ(' $ _POST [cat] ')と挿入される新しいカテゴリ('$ _POST [ new_cat ] ')を受信ストアキャットで区別できます。 .phpコード。

于 2012-07-16T13:59:58.903 に答える
0

既存のカテゴリのcat_update[]入力に名前を付け、新しいカテゴリの入力に名前を付けますcat_insert[]。PHP でフォーム データを処理すると、次の 3 つの配列が作成されます。

$ids = $_POST['id'];                // Ids for update
$update = $_POST['cat_update'];     // Values for UPDATE
$insert = $_POST['cat_insert'];     // Values for INSERT

for($i = 0; $i < count($ids); $i++) {
    //Execute 'UPDATE `table` SET `value` = $update[$i] WHERE `id` = $ids[$i]
}

for($i = 0; $i < count($insert); $i++) {
    //Execute 'INSERT INTO `table` (`value`) VALUES ($insert[$i])
}
于 2012-07-16T13:53:45.100 に答える