2012-09-03 62 views
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無濟於事。謝謝。

+0

你爲什麼不只是寄回,而不是直接顯示的表?我在這裏看不到用例。請詳細說明。 (關於如何從PHP郵件,請參閱http://php.net/mail) –

+0

需要顯示錶格,以便接口上的訂單可以被批准,拒登或標記爲掛起。我希望使用選擇名稱作爲每個電子郵件的項目,總共會有三封電子郵件。這隻需發佈電子郵件正文中所有單元格的值。 – m1243

+0

你總是可以爲每個字段使用一個隱藏的輸入:'echo $ row ['Orderno']。 '」;' – froddd

回答

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 
    } 
} 
+0

感謝您的解決方案,我測試這和它的作品,我的問題是如何將我得到這個爲單個錶行的工作! 。目前,所有表數據被公佈。謝謝 – m1243

+0

我試圖讓一個表格的每一行,但實在是太複雜。見我的編輯。 –

+0

非常感謝AsKaiser這個完美工作,我現在明白了邏輯這樣做在未來。 – m1243

3

嗯,你的第一個問題是,你沒有存儲你從數據庫中取出的任何變量,你只是在打印它們,所以當你點擊Send Email時,你發送給sendmail.php的唯一東西是選擇名稱=「狀態」。

Store中的成果轉化爲正常的變量,這樣你可以讓他們在所有的頁面像這樣可供選擇:

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

我相信havi在提交按鈕之前,這些輸入不是一個問題,但如果它只是寫在提交按鈕之前的最後一位,你會很好。

希望這有助於!

0

usualy我用這種方式

<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"){ }