私はファンタジーペットゲームをプログラミングしています。現在、ユーザーが個人ショップの在庫を管理するのに役立つツールに取り組んでいます。このツールには、各アイテムの販売価格を変更するオプションが含まれています。それが私の問題です。ここで、お見せしましょう:
HTML
<form method="post">
<input type="text" name="cost[$item_id]" value="" />
<input type="submit" name="submit" value="Submit" />
</form>
$item_id は、編集中のアイテムに対応する変数です。そうしないと、どの価格がどのアイテムに対応するのかわかりません。
また、このスクリプト:
<input type="text" name="cost[$item_id]" value="" />
ショップの在庫にある商品の数だけ繰り返されます。したがって、フォームにはこれらのエントリを無制限に含めることができます。したがって、配列。
スクリプト
if(isset($_POST['update'])) {
foreach ($_POST['cost'] as $key => $value) {
$submitted_array = array_keys($_POST['cost']);
echo ($_POST['cost'][$submitted_array[0]] . " " . $submitted_array[0]);
}
}
上記のスクリプトは機能します...ただし、配列の最初のデータ セットのみを出力します。
これで問題ないように思えますが、コスト エントリを無制限に作成できると言ったことを覚えていますか? それが私の問題です。変数を使用して上記のスクリプトの「0」を置き換えると、関数が一緒に機能しなくなります。配列に含まれるエントリの総数がわかっている場合は、関数を繰り返すことができますが、わかりません。それで、なにかお手伝いできますか?私の問題に対する簡単な解決策はありますか?
変更される項目の数を指定する隠しフィールドをフォームに追加することは可能です。それが役立つかどうかはわかりません。
私が話していることをよりよく理解するためにフォームのスクリーン キャプションを見たい場合は、お尋ねください。