超初歩的かと思うのですが、、、
HTML
1<td><?= echo h($row['name']); ?></td>
上記のようにデータベースからnameを引っ張ってくるという感じにしつつ、全体的には表のような感じにしているとします。
実際は他にもデータはあるのですが、、、、
簡単に表示された表の値をそのままサブミットするとして、name属性に配列いれようと思ったんですが、この場合どうやってname属性を入れて、値をセットさせるようにしたらいいでしょうか?
他のデータは<select name="date[]">みたいな感じで、print-rしたらできてたんですけど、、、、
すごい初歩的なんですが、、、
※このechoされた部分は編集等不可な状態のままが望ましい
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
もしかしたらこんな感じですか?
PHP
1<td> 2 <?= h($row['name']) ?> 3 <input type="hidden" name="name[]" value="<?= h($row['name']) ?>"> 4</td>
それと文法が間違ってますよ。
<?= これはechoタグなので、<?php echo と同義です。PHP
1<td><?= echo h($row['name']); ?></td> 2↓↓↓ 3<td><?= h($row['name']); ?></td>
投稿2016/02/10 02:19
総合スコア4437
0
スーパー推測で回答しますけれども・・
例えば次のようなデータがあって、
php
1$rows = [ 2 [ 3 'name' => "ore", 4 'mail' => "ore@example.com", 5 ], 6 [ 7 'name' => "are", 8 'mail' => "are@example.com", 9 ], 10 [ 11 'name' => "ure", 12 'mail' => "ure@example.com", 13 ], 14];
次のように表示していて、
html
1<form method="post"> 2 <table> 3 <tr> 4 <th>name</th> 5 <th>mail</th> 6 </tr> 7 <?php foreach ($rows as $row): ?> 8 <tr> 9 <td><?= h($row['name']) ?></td> 10 <td><?= h($row['mail']) ?></td> 11 </tr> 12 <?php endforeach; ?> 13 </table> 14 <input type="submit" value="POST!"> 15</form>
フォームをサブミットしたときに、$_POST
に元の $rows
のような構造が入るようにしたい、ということでしょうか?
かなり無理やりですけど、次のようにすればフォームをサブミットしたときに $_POST['rows']
に $rows
と同じ構造でデータが入ります。
html
1<form method="post"> 2 <table> 3 <tr> 4 <th>name</th> 5 <th>mail</th> 6 </tr> 7 <?php foreach ($rows as $i => $row): ?> 8 <tr> 9 <td><?= h($row['name']) ?><input type="hidden" name="rows[<?=h($i)?>][name]" value="<?= h($row['name']) ?>"></td> 10 <td><?= h($row['mail']) ?><input type="hidden" name="rows[<?=h($i)?>][mail]" value="<?= h($row['mail']) ?>"></td> 11 </tr> 12 <?php endforeach; ?> 13 </table> 14 <input type="submit" value="POST!"> 15</form>
投稿2016/02/10 02:23
総合スコア4514
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
少し理解出来なかった箇所があるのですが、とりあえず推測で補って回答します。
name属性はフォーム部品の配下にあるselectでは意味がありますが、
tableにひっついているtdには大した意味が無いので必要か不要かでいえば不要です。
もっと全体に目を向けて、どうあるべきか判断したほうが良いでしょう。
PHP
1<table> 2 <caption>ユーザー一覧</caption> 3 <thead> 4 <tr> 5 <th>ID</th> 6 <th>名前</th> 7 <th>性別</th> 8 </tr> 9 </thead> 10 <tbody> 11 <?php foreach($users as $row): ?> 12 <tr id="user_<?= h($row['id']) ?>"> 13 <td><?= h($row['id']) ?></td> 14 <td><?= h($row['name']) ?></td> 15 <td><?= h($row['sex']) ?></td> 16 </tr> 17 <?php endforeach; ?> 18 </tbody> 19</table>
勝手に補って色々付け足していますが、
ユーザー一覧というテーブルに着目して、過不足なく全て書き出せばこんな感じになります。
上記の概念の中ではtrの配下で2番目に出現した要素は名前
であることが保証されますので、
<td name="name">
等と付ける必要はありません。
蛇足にはなりますが、<tr id="user_<?= h($row['id']) ?>">
のやり方を応用すれば、
name属性に好きな値を代入することが可能です。
投稿2016/02/10 01:34
総合スコア21158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/02/10 02:26
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/02/10 02:29