お世話になります。
現在、LAMP環境にて発注書を登録・編集出来るシステムを開発しております。
発注書は、以下の画像のように複数商品を表形式で同時に編集でき、submitボタンで一括登録(DELETE&INSERT)するUIとしています。
このPOSTされたデータを、表の1行にあたる部分を1レコードとしてDBに登録したいと考えています。
※添付ファイルは、ファイルパスのみレコードに保持します。
以下が、登録・編集画面のコードの抜粋です。
lang
1 <h1>発注書登録・編集</h1> 2 <form action="touroku.php" method="post" enctype="multipart/form-data"> 3 <table> 4 <tr> 5 <td><input type="text" name="item_name[]" value="帽子"></td> 6 <td><input type="text" name="color[]" value="赤"></td> 7 <td><input type="file" name="file[]"></td> 8 <td><button type="button">行削除</button></td> 9 </tr> 10 <tr> 11 <td><input type="text" name="item_name[]" value="ジャケット"></td> 12 <td><input type="text" name="color[]" value="黒"></td> 13 <td><input type="file" name="file[]"></td> 14 <td><button type="button">行削除</button></td> 15 </tr> 16 <tr> 17 <td><input type="text" name="item_name[]" value="ジーパン"></td> 18 <td><input type="text" name="color[]" value="青"></td> 19 <td><input type="file" name="file[]"></td> 20 <td><button type="button">行削除</button></td> 21 </tr> 22 </table> 23 <button type="button">一行追加</button> 24 <input type="submit" value="発注書登録"> 25 </form>
こちらをそのままPHPで受け取ると、POSTデータは以下のような形になります。
lang
1array(2) { 2 ["item_name"]=> 3 array(3) { 4 [0]=> 5 string(6) "帽子" 6 [1]=> 7 string(15) "ジャケット" 8 [2]=> 9 string(12) "ジーパン" 10 } 11 ["color"]=> 12 array(3) { 13 [0]=> 14 string(3) "赤" 15 [1]=> 16 string(3) "黒" 17 [2]=> 18 string(3) "青" 19 } 20}
上記のままだと、表で言う所の列単位の連想配列となってしまうため、1行=1レコードとしてINSERTするためには、行単位に整形する必要があります。
行数が固定されていれば話はシンプルなのですが、jQueryで行を増減させているため、例えば$_POST['item_name'][0]
のデータ(帽子)が、実際に表の1行目で入力されたものであるかPHP側で判別出来ないと思います。
また、表の入力データ($_POST)と添付ファイルの情報($_FILES)も、行単位で紐づける必要があります。
以上のような要望を実現するにあたり、どのようなロジックを組めば良いのか悩んでおります。
ぜひ、アドバイスをお願いいたします。
回答1件
あなたの回答
tips
プレビュー