我有这个代码来显示我的表:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<table cellspacing='0'>
<?php
if(isset($_GET["ordem"])){
if($_GET["ordem"] == 'descendente'){
echo "<thead><tr><th><a title='Ordenar por título' href='visualizarVoucher.php'>Utilizador</a></th>";
echo "<th>Email</th>";
echo "<th>Voucher</th>";
echo "<th>Categoria</th>";
echo "<th>Preço</th>";
echo "<th>Confirmação</th>";
echo "<th>Enviar mail</th>";
echo "</tr></thead>";
}
elseif($_GET["ordem"] == 'ascendente'){
echo "<thead><tr><th><a title='Ordenar por título' href='visualizarVoucher.php?ordem=descendente'>Utilizador</a></th>";
echo "<th>Email</th>";
echo "<th>Voucher</th>";
echo "<th>Categoria</th>";
echo "<th>Preço</th>";
echo "<th>Confirmação </th>";
echo "<th>Enviar mail</th>";
echo ("</tr></thead>");
}
}
else{
echo "<thead><tr><th><a title='Ordenar por título' href='visualizarVoucher.php?ordem=ascendente'>Utilizador</a></th>";
echo "<th>Email</th>";
echo "<th>Voucher</th>";
echo "<th>Categoria</th>";
echo "<th>Preço</th>";
echo "<th>Confirmação</th>";
echo "<th>Enviar mail</th>";
echo("</tr></thead>");
}
while($stmt->fetch()){
echo("<tbody>");
echo("<tr><td>$nomeUser</td>");
echo("<td>$email</td>");
echo("<td>$nomeVoucher</td>");
echo("<td>$categoria</td>");
echo("<td>$preco</td>");
echo("<td>$confirmacao</td>");
$content = file_get_contents($file,$filePDF);
echo("<td><INPUT TYPE='checkbox' NAME='mail[]' multiple='yes'></td>");
echo("</tr>");
echo("</tbody>");
}$stmt->close(); ?>
我的表格中有一个复选框,我想知道当我选中复选框时如何从表格中获取每行的值。我想在用户选中多个复选框时发送电子邮件。 感谢
答案 0 :(得分:0)
上面的代码可能是较大页面的片段,但如果不是:
您实际上并未将输入元素包装在HTML form
标记中。这样做会导致用户代理(可能是浏览器)将每个输入标记视为要提交到后端表单的内容。
您应该将表格包装在table
元素中; tbody
是桌子的孩子。
无论如何:
看起来上面的PHP代码会在每次语句获取新行时呈现整个tbody
,这有点奇怪。我假设你只想渲染一个包含邮件选项的行?
据我所知,multiple
元素中不允许checkbox
属性。您可能会想到select
元素。
您没有在复选框value
标记上设置input
属性。如果用户实际提交了一个表单,您将获得一组空mail[]
个变量,或者根本没有,我实际上不确定哪个。
请考虑以下代码:请注意,复选框具有相同的name
属性,但值不同。
<form method="post">
<table>
<tbody>
<tr>
<td>
<input type="checkbox" name="mail[]" value="val1" id="mail-val1" />
<label for="mail-val1">Value 1</label>
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="mail[]" value="val2" id="mail-val2" />
<label for="mail-val2">Value 2</label>
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="mail[]" value="val3" id="mail-val3" />
<label for="mail-val3">Value 3</label>
</td>
</tr>
</tbody>
</table>
<input type="submit" />
</form>
根据这种形式,如果用户选择所有三个复选框并提交,则服务器将收到带有效负载的POST请求:
mail[]=val1&mail[]=val2&mail[]=val3
根据PHP解析响应的方式(自从我处理PHP以来已经过去十年),您可能会有一个可供您的应用程序访问的数组变量:
# mail == ["val1", "val2", "val3" ]
希望这有帮助。