1

我有这段代码来显示我的表格:

 <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();     ?>

我的表中有一个复选框,我想知道当我选择复选框时如何从表中获取每行的值。当用户选择多个复选框时,我想发送电子邮件。谢谢

4

1 回答 1

0

上面的代码可能是较大页面的片段,但如果不是:

  • 您实际上并没有将输入元素包装在 HTMLform标记中。这样做会导致用户代理(可能是浏览器)将每个输入标签视为要提交到后端表单的内容。

  • 您应该将表格包装在一个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" ]

希望这可以帮助。

于 2013-08-09T15:15:42.797 回答