1

I have a form which looks like, I wanted to be able to collect the cells values for form processing:

<form method ="post" action="sendmail.php">
<table>
<h4>Orders</h4>
<tr>
<th>Order Number</th>
<th>Order Date</th>
<th>Ordered By</th>
<th>Supplier</th>
<th>Total Price</th>
<th>Requested By</th>
<th>Status</th>
<th>Send Notification</th>
</tr>
<?php
while($row=mysql_fetch_array($result)){
echo "</td><td>";
echo $row['Orderno'];
echo "</td><td>";
echo $row['Orderdate'];
echo "</td><td>";
echo $row['Orderedby'];
echo "</td><td>";
echo $row['Supplier'];
echo "</td><td>&#163; ";
echo $row['totalprice'];
echo "</td><td>";
echo $row['requestedby'];
echo "</td><td>";
echo ' <select name="status">
<option></option>
<option>Approved</option>
<option>Pending</option>
<option>Dissaproved</option>
</select>';
echo "</td><td>";
echo '<input type="submit" value="Send Email" />';

echo "</td></tr>";
}
echo "</table>";
?>
</form>

My question is how can I retrieve the values in each cell, to use for form processing? With these values I will create an email template to email a person. For example something like $to = $_POST['requestedby']; I have tried using POST to no avail.

4

3 に答える 3

3

HTML が無効であるため、ロジックを変更した可能性があります。さらに、フォームが 1 つしかないため、複数の送信ボタンを作成する必要はありません。

編集:行ごとに1つのボタンが本当に必要な場合は、行に1つ作成する必要があります。これは、ネストされたテーブルでのみ可能です(内部<tr>は許可されません)。<form>複雑になりすぎると思います。

そのため、独自のフォームと送信ボタンを保持し、各行にチェックボックスを追加して、メールを送信する注文を 1 つ (または複数) 選択できるようにします。

<form method="post" action="sendmail.php">
    <h4>Orders</h4>

    <table>
        <tr>
            <th>&nbsp;</th>
            <th>Order Number</th>
            <th>Order Date</th>
            <th>Ordered By</th>
            <th>Supplier</th>
            <th>Total Price</th>
            <th>Requested By</th>
            <th>Status</th>
        </tr>
    <?php
    $i = 0;

    while ($row = mysql_fetch_assoc($result))
    {
        echo '<tr>';

        echo '<td><input type="checkbox" name="order_selected['.$i.']"/></td>';
        echo '<td><input type="text" name="order_no['.$i.']" value="' . $row['Orderno'] . '"/></td>';
        echo '<td><input type="text" name="order_date['.$i.']" value="' . $row['Orderdate'] . '"/></td>';
        echo '<td><input type="text" name="order_ordered_by['.$i.']" value="' . $row['Orderedby'] . '"/></td>';
        echo '<td><input type="text" name="order_supplier['.$i.']" value="' . $row['Supplier'] . '"/></td>';
        echo '<td><input type="text" name="order_total_price['.$i.']" value="' . $row['totalprice'] . '"/></td>';
        echo '<td><input type="text" name="order_requested_by['.$i.']" value="' . $row['requestedby'] . '"/></td>';

        echo '<td>';
        echo '<select name="order_status[]">';
        echo '<option></option>';
        echo '<option>Approved</option>';
        echo '<option>Pending</option>';
        echo '<option>Dissaproved</option>';
        echo '</select>';
        echo '</td>';

        echo '</tr>';

        $i++;
    }
    ?>
    </table>

    <p>
        <input type="submit" value="Send email(s)" />
    </p>
</form>

その後、PHP では、これらすべての情報を次のように取得できます。

if(isset($_POST['order_selected']))
{
    $keys = array_keys($_POST['order_selected']);

    foreach($keys as $key)
    {
        $to = $_POST['order_requested_by'][$key];

        // sendmail
    }
}
于 2012-09-03T15:42:25.097 に答える