1

我有一个看起来像的表单,我希望能够收集单元格值以进行表单处理:

<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>

我的问题是如何检索每个单元格中的值以用于表单处理?使用这些值,我将创建一个电子邮件模板来向某人发送电子邮件。例如,$to = $_POST['requestedby'];我尝试过使用POST无济于事。

4

3 回答 3

3

那么你的第一个问题是你没有将你从数据库中取出的变量存储在任何地方,你只是在打印它们,所以当你点击发送电子邮件时,你发送到 sendmail.php 的唯一东西就是选择名称= “地位”。

将结果存储到普通变量中,以便您可以在所有页面中使用它们,如下所示:

<?php
while($row=mysql_fetch_array($result)){
$Oderno = $row['Orderno'];
$Orderdate = $row['Orderdate'];
$Orderedby = $row['Orderedby'];
$Supplier = $row['Supplier'];
$totalprice = $row['totalprice'];
$requestedby = $row['requestedby'];
} 
?>

然后继续填写您的表格,如下所示:

<?php
echo "</td><td>";
echo $Orderno;
echo "</td><td>";
echo $Orderdate;
echo "</td><td>";
echo $Orderedby;
echo "</td><td>";
echo $Supplier;
echo "</td><td>&#163; ";
echo $totalprice;
echo "</td><td>";
echo $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>";
?>

现在,您可以在表单中存储变量,请执行以下操作:

<input type="hidden" name="Orderno" value="<?php echo $Orderno; ?>" >
<input type="hidden" name="Orderdate" value="<?php echo $Orderdate; ?>" >
<input type="hidden" name="Orderedby" value="<?php echo $Orderedby; ?>" >
<input type="hidden" name="Supplier" value="<?php echo $Supplier; ?>" >
<input type="hidden" name="totalprice" value="<?php echo $totalprice; ?>" >
<input type="hidden" name="requestedby" value="<?php echo $requestedby; ?>" >
</form>

我相信在这些输入之前有提交按钮不是问题,但如果它只是在提交按钮之前写最后一位,你会很好。

希望这有帮助!

于 2012-09-03T15:39:38.200 回答
3

由于 HTML 无效,我可能更改了您的逻辑。此外,没有必要制作多个提交按钮,因为只有一个表单:

编辑:如果您真的想要每行一个按钮,则必须连续制作一个,这仅适用于嵌套表(<tr>不允许<form>在其中)。我认为它会太复杂。

因此,我保留了一个独特的表单和提交按钮,并在每一行添加了一个复选框,以便您选择一个(或多个)订单来发送电子邮件。

<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 回答
0

通常我用这种方式

<table border="1">
 <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>Send Notification</th>
 </tr>
 <?php 
   while($row=mysql_fetch_array($result)){ 
   $Orderno = $row['Orderno'];
 ?>
 <tr>
   <td><?php echo $row['Orderno']; ?></td>
   <td><?php echo $row['Orderdate']; ?></td>
   <td><?php echo $row['Orderedby']; ?></td>
   <td><?php echo $row['Supplier']; ?> </td>
   <td><?php echo $row['totalprice']; ?></td>
   <td><?php echo $row['requestedby']; ?></td>
   <td>
    <a href="sendmail.php?id=<?php echo $Orderno; ?>&stt=Approved">Approved"</a>
    <a href="sendmail.php?id=<?php echo $Orderno; ?>&stt=Pending">Pending"</a>
    <a href="sendmail.php?id=<?php echo $Orderno; ?>&stt=Dissaproved">Dissaproved"</a>
   </td> 
 </tr>
 <?php } ?>
</table>

关于 sendmail.php 我只是做了一些修改

$Orderno = $_GET["id"];
$status  = $_GET["stt"];

//send_notification($Orderno,$status);
//you can put your process code here (like branching maybe)
// if($status=="Aproved"){ } 
// else if($status=="Pending"){ } 
// else if($status=="Dissaproved"){ } 
于 2012-09-03T15:39:44.133 回答