まずはざっとリファクタリングします。
制御構造に関する別の構文を使えば凄まじく簡素に書けるので、
質問文のようにprintrを重ねるよりはこう書いた方が余程人間に読みやすいのです。
真似してくれてもいいのよ?
PHP
1<?php foreach($disp_data as $val): ?>
2 <tr>
3 <td>
4 <input type=text name=arrayUser value="<?= $val['arrayUser'] ?>">
5 </td>
6 <form action="./test.php" method="post" target="_blank" name="search">
7 <td>
8 <input type="submit" name="Detail" value="<?= $val['arrayID'] ?>">
9 </td>
10 </form>
11 <td><?= $val['name'] ?></td>
12 <td>
13 <input type="text" name="arrayNote" value="<?= $val['arrayNote'] ?>">
14 </td>
15 <td>
16 <input type="submit" name="Update" value="変更">
17 <input type="submit" name="Delete" value="削除">
18 </td>
19 </tr>
20<?php endforeach; ?>
さて見ていきましょう。
これはアレか、分かりますよ。
私も駆け出しエンジニアの頃に全く同じ内容で悩みました。
何故ならば以下の成約がつきまとうからです
- form要素はネスト出来ない
- table要素は親子関係のタグが厳格に決められており、trやtdを包むようなformは定義できない
- その状態で1行1formとして扱いたい
その解決策は2つです。
前者はもう見た通りです。
大昔はテーブル構成にしたければtable -> tbody -> tr -> tdの順番にマークアップしていく必要がありましたが、
CSSの拡張によりこれをエミュレートすれば全然別のタグでtable -> tr -> tdと似たような事が出来るようになりました。
HTML
1<style> <!-- できれば外部CSSファイルでやってね -->
2section {
3 display: table;
4}
5form {
6 display: table-row;
7}
8.cell {
9 display: table-cell;
10}
11</style>
12
13<section> <!-- table要素っぽく振る舞う -->
14 <form> <!-- tr要素っぽく振る舞う -->
15 <div class="cell"> <!-- td要素っぽく振る舞う -->
16 <input type="submit" name="Detail" value="<?= $val['arrayID'] ?>">
17 </div>
18 <div class="cell"> <!-- td要素っぽく振る舞う -->
19 <input type="submit" value="変更">
20 <input type="submit" value="削除">
21 </div>
22 </form>
23 <form></form> <!-- 次のループのform要素 -->
24</section>
イメージとしてはざっとこんなもんですね。
うまくforeachで包んで実現してください。
さて、次は後者のform
属性を利用するほうに関して解説
<input form="所属するform要素のid属性値">
HTML5で追加されたform属性を利用すれば、
form要素の外からその配下の要素として存在出来ます。
PHP
1<?php foreach($disp_data as $val): ?>
2 <tr>
3 <td>
4 <form id="<?= $val['arrayID'] ?>" action="./test.php" method="post" target="_blank">
5 <input type=text name=arrayUser value="<?= $val['arrayUser'] ?>">
6 </form>
7 </td>
8 <td>
9 <input type="submit" name="Detail" value="<?= $val['arrayID'] ?>" form="<?= $val['arrayID'] ?>">
10 </td>
11 <td><?= $val['name'] ?></td>
12 <td>
13 <input type="text" name="arrayNote" value="<?= $val['arrayNote'] ?>" form="<?= $val['arrayID'] ?>">
14 </td>
15 <td>
16 <input type="submit" name="Update" value="変更" form="<?= $val['arrayID'] ?>">
17 <input type="submit" name="Delete" value="削除" form="<?= $val['arrayID'] ?>">
18 </td>
19 </tr>
20<?php endforeach; ?>
こんな風に1カラム目に代表になるformを用意しておいて、
他のinput要素にform属性を指定すれば飛び道具のように紐付けて使えます。