0

アップロードされた CSV ファイルに基づいてフォームを書き出すスクリプトに取り組んでいます。CSV ファイルには、「,,,,」のみを含む行で区切られたセクションが含まれています。各ブロックには、キックスタートされるサーバーに関する情報が含まれています。次のようになります。

ホスト、tctivt2r6ra03、、、
int、eth0、10.153.196.248、255.255.255.0、10.153.196.1
int、eth1、10.153.157.113、255.255.255.128、10.153.157.1
int、eth2、10.153.157.241、255.255.255.128、10.153.157.129
int,eth3,00:50:56:ac:69:cb,,
一部、/ホーム、10、、
パーツ、スワップ、10、、
一部、/オプション、60、、
一部、/データ、30、、
、、、、

この入力は、テーブルを含む div に書き込まれます。入力の各行は、テーブル内の一意の行です。一部の値は、テキスト ボックスに表示されます。

スクリプトは、次のような出力を生成します

各ボックスは動的に生成され、0 から始まるホスト ID と 0 から始まるボックス番号で構成されます。次に例を示します。

<tr><th>eth0: </th><td><input type="text" value="10.153.196.248" name="host0Box0" /></td><td><input type="text" value="255.255.255.0" name="host0Box1" /></td><td><input type="text" value="10.153.196.1" name="host0Box2" /></td></tr><tr>

私が持っている質問は、可変数のボックスを持つフォームを処理する方法です。具体的には、入力の「部分」行を処理するときに、6 つ以上のボックスが存在する可能性があります。

4 つのパーティションの例:

<tr><th>Partition name:</th><td> /</td><td>10</td></tr>
<tr><th>Partition name:</th><td> /var</td><td><input type="text" value="10" name="host0Box9" /></td></tr>
<tr><th>Partition name:</th><td> /home</td><td><input type="text" value="10" name="host0Box10" /></td></tr>
<tr><th>Partition name:</th><td> swap</td><td><input type="text" value="10" name="host0Box11" /></td></tr>
<tr><th>Partition name:</th><td> /opt</td><td><input type="text" value="60" name="host0Box12" /></td></tr>
<tr><th>Partition name:</th><td><input type="text" value="/data" name="host0Box13" />/td><td><input type="text" value="30" name="host0Box14" /></td></tr>
<tr><th>Number of Disks: </th><td><input type="text" value="1" name="host0Disks" /></td></tr></table></div><span><br /><br /></span>

6 つのパーティションの例:

<tr><th>Partition name:</th><td> /</td><td>10</td></tr>
<tr><th>Partition name:</th><td> /var</td><td><input type="text" value="10" name="host1Box9" /></td></tr>
<tr><th>Partition name:</th><td> /home</td><td><input type="text" value="10" name="host1Box10" /></td></tr>
<tr><th>Partition name:</th><td> swap</td><td><input type="text" value="10" name="host1Box11" /></td></tr>
<tr><th>Partition name:</th><td> /opt</td><td><input type="text" value="60" name="host1Box12" /></td></tr>
<tr><th>Partition name:</th><td><input type="text" value="/data" name="host1Box13" /></td><td><input type="text" value="30" name="host1Box14" /></td></tr>
<tr><th>Partition name:</th><td><input type="text" value="/test1" name="host1Box15" /></td><td><input type="text" value="30" name="host1Box16" /></td></tr>
<tr><th>Partition name:</th><td><input type="text" value="/test2" name="host1Box17" /></td><td><input type="text" value="20" name="host1Box18" /></td></tr>
<tr><th>Number of Disks: </th><td><input type="text" value="1" name="host0Disks" /></td></tr></table></div><span><br /><br /></span>

これは進行中の作業であり、各ホスト セクションを適切に処理するために変更する必要があることはわかっています。その間、私はこの 1 つの問題を整理しようとしています。

私の質問は、II が最終的にフォームを処理する段階に到達したとき、$_POST 配列が取り込まれたときに動的に割り当てられたアイテム名を考慮するためにどのようなアプローチを使用する必要があるかということです。配列の値を取り出して、別の配列に配置しますか? 通常の配列のように $_POST 配列を反復処理できますか? 私が気付いていない別のオプションはありますか?

4

2 に答える 2

2

これを狙っているように見えますか?

したがって、スクリプト出力を変更できると仮定してname="host0Box0"使用する代わりに。name="host[0][Box][]

を使用[]すると、配列が自動的に入力されるため、たとえば

<input type="text" name="foo[]" value="Hello" />
<input type="text" name="foo[]" value="World" />

あなたに配列を与えるでしょう

Array(
  [foo] => Array(
    [0] => Hello
    [1] => World
  )
)

私は質問を誤解したかもしれません。

于 2012-11-08T02:57:59.970 に答える
0

他の配列と同じように、スーパーグローバル $_POST 配列を反復処理できます。var_dump($_POST) を試して、利用可能なものを確認してください。

投稿された名前は不明であるため、これらの名前に異常な文字が含まれている場合は、生の入力ストリームを解析する必要がある場合があります。質問 813487 に対する受け入れられた回答が役立つ場合があります。

于 2012-11-08T02:49:03.537 に答える