2

2つのペアの変数、カテゴリと、ユーザーが作成した複数のカテゴリのIDを、Webフォームから処理用のファイルに渡そうとしています。それらをリンクしたままにしておきたいので、誰かが名前フィールドを変更した場合、このレコードはidによって他のテーブルにリンクされているため、どのレコードが変更されているかが明確になります。

もともと2次元配列を試しました...そのアプローチを放棄しました。次に、以下の提案に従って、2つの1次元配列を使用しようとしています。フォームのエントリ数は、ユーザーが作成したカテゴリの数によって異なるため、配列を使用します。カテゴリテーブルには、id(int)、cat(text)、およびuserid(int)フィールドがあります

2つの配列を渡すことの難しさは、2つをリンクする方法です。カテゴリを配列として受信ページに渡すと、値を反復処理して、各エントリを変更するSQLステートメントを生成できます。ただし、レコードを識別するために必要な正しいIDを取得する方法がわかりません。foreach(catsarray as $ val)内でforeach($ idarray as $ id)を使用すると、猫ごとに複数のIDを取得します。猫の反復と同期してIDを反復するにはどうすればよいですか?私はこれに2日間を費やしたので、助けてくれてありがとう:(

//I am working with $catsarray and $idarray, each with identical indexes, 1,2,3 etc.
//How do I get appropriate id for each cat
foreach($catsarray as $val) {
$sql = "UPDATE cats, set name = $val WHERE (userid ='$userid' AND id=??????)";
mysql_query($sql);
}
4

1 に答える 1

5

2次元配列を作成するための優れた単一の構文。

  <input type="text" name="cat[]" value="cat1">
  <input type="text" name="cat[]" value="cat2">
    ...

猫を受け入れている間;

echo $_POST['cat'][0] // echoes cat1
echo $_POST['cat'][1] // echoes cat2

さらなる例;

この定義によれば、

<input type="text" name="cat[$cat][$id]" value="cat1">

foreach ($_POST['cat'] as $a=>$b){
    // $a == $cat
    foreach($b as $c=>$d) {
       // $c == $id
    }
}
于 2012-04-16T20:06:01.243 に答える