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テーブルの子です。

上記に関係なく:

  • tbody上記の PHP コードは、ステートメントが新しい行をフェッチするたびに全体をレンダリングするように見えますが、これは少し奇妙です。メールオプションを含む行のみをレンダリングしたいと思いますか?

  • 私の知る限りでは、要素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>

このフォームの場合、ユーザーが 3 つのチェックボックスをすべて選択して送信すると、サーバーはペイロードを含む POST リクエストを受け取ります。

mail[]=val1&mail[]=val2&mail[]=val3

PHP がその応答をどのように解析するかにもよりますが (私が PHP を扱ってから約 10 年になります)、アプリケーションからアクセスできる配列変数がおそらくあるでしょう。

# mail == ["val1", "val2", "val3" ]

お役に立てれば。

于 2013-08-09T15:15:42.797 に答える