アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のコードで、表を作っていますが、
echo '<td><input type="hidden" name="id" value="'.$row['id'].'"></td>';
を入れることで、列がずれてしまいます。
私のhiddenに対する認識の誤りでしょうか。
列を正しくするためにはどのようにしたらよろしいでしょうか。
どなたかお知恵をお貸しくださ

<body>
<div id="container">
<div id="main">
<h1>請求書UP&Mail送信状況確認</h1>
<table border="1">
<tr>
<th>コード</th>
<th>2104UP状況</th>
<th>Mail送信状況</th>
<th>Mail送信<br>
</th>
</tr>

<?php
try {
$pdo = new PDO(DNS, USER_NAME, PASSWORD, get_pdo_options());
$sql = "SELECT * FROM invoice_check";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
echo "DB接続エラー";
echo $e->getMessage();
exit();
}
foreach ($result as $row) {
echo '<form action="send_mail.php" method="POST">';
echo '<tr>';
echo '<td><input type="hidden" name="id" value="'.$row['id'].'"></td>';
echo '<td>', $row['id'], '</td>';
echo '<td>';
$filename ='../data/2104/'.htmlspecialchars($row['id'],ENT_QUOTES).'-2104鑑.pdf';
if (file_exists($filename)) {
echo '<font color="blue">済</font>';
} else {
echo '<font color="red">未</font>';
};
echo '</td>';
echo '<td>';
if ($row['mail_2104'] == 1) {
echo '<font color="blue">済</font>';
} else {
echo '<font color="red">未</font>';
};
echo '</td>';
echo '<td><input type="submit" name="send" value="送信" ></td>';
echo '</tr>';
echo '</form>';
}
?>

A 回答 (1件)

<th> が四つなので、<td> は <tr> 毎に四つのはずです。


hidden 要素は他の <td> に含めてしまいましょう。

<td><input type="submit" ...></td>

<td><input type="hidden" ...><input type="submit" ...></td>

HTML 仕様的に <table> の直下に <form> は置けないことになっていますので、環境によっては動作しない可能性があります。
この内容でしたら、<td> の中に <form> まで含めてしまいましょう。

<form><tr>
... <td><input><input></td>
</tr></form>

<tr>
... <td><form><input><input></form></td>
</tr>

参考)
https://developer.mozilla.org/ja/docs/Web/HTML/E …
→ 「許可されている内容」に <form> が含まれていない
    • good
    • 0
この回答へのお礼

ご教授いただきました通り書き直したところ、成功いたしました。
また、さらに深く教えていただき、大変助かりました。
ありがとうございました。

お礼日時:2021/09/29 17:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!