皆さんおはよう、
データベースに一度に複数の行を追加するために使用しているフォームがあります。チェックボックスを除いて、すべて正常に機能しているようです。フォーム行ごとに1つのチェックボックスがあります。チェックボックスがオンになっている順序に関係なく、結果は送信後に常に同じ順序で返されます。
重要なフォームの主要部分は次のとおりです。
<tr>
<td class='border'>
<input type='text' name='rowid[]' value='".$row."' style='display:none;' />
<input type='text' name='ref[]' style='width:100%;' />
</td>
<td class='border'>
<input type='text' name='obs[]' style='width:100%;' />
</td>
<td class='border'>
<input type='text' name='act[]' style='width:100%;' />
</td>
<td class='border' align='center'>
<input type='checkbox' name='comp[]' value='Yes' />
</td>
<td class='border'>
<input type='text' name='compby[]' style='width:100%;' />
</td>
<td class='border'>
<input type='text' name='compdate[]' id='completeddate".$row."' class='completeddate' style='width:100%;' />
</td>
</tr>
このフォームが送信され、私のPHPコードがそれを処理します。最初の入力は、フォームの行のIDであることがわかります。これは非表示のフィールドであり、フォームに表示される行ごとに値が1ずつ増加します。
フォームが送信されたら、以下のPHPを使用して、各行を1つずつ処理します。
foreach($_POST['rowid'] as $key=>$rowid) {
これは基本的に、ROWIDの場合、次のROWIDに到達するまで、残りの入力が関連付けられていることを示しているはずです。
私がそれから印刷するとしたら
echo $_POST['ref'][$key];
最初の行の参照を取得し、ループが完了して再度印刷すると、2番目の行の参照を取得します。
しかし、私が置くとしたら
echo $_POST['comp'][$key];
次に、これが壊れます。
たとえば、各行について、チェックボックスを次の順序でチェックしたとします。
row 1, tick, row 2, untick, row 3, tick
次に、ループにすべてのチェックボックス値を出力させると、次のように表示されます。
'Yes', 'Yes', ''
しかし、それはこの順序でなければなりません
'Yes', '', 'Yes'
これは、チェックボックスが通常の配列であるためですか。次に、comp []という名前を付けて、これを別の配列に入れますか?
とにかくこの問題を回避することはできますか、それとも、1つは「はい」、もう1つは「いいえ」のラジオボタンを使用したほうがよいでしょうか。
どうもありがとう
エド