У меня есть форма, которая выглядит, я хотел бы иметь возможность собирать значения ячеек для обработки формы:
<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>£ "; 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
безрезультатно. Благодарю вас.
Возможно, я изменил вашу логику, поскольку HTML недействителен. Кроме того, не нужно было создавать несколько кнопок отправки, потому что существует только одна форма:
EDIT: если вам действительно нужна одна кнопка в строке, вам нужно будет сделать ее в строке, что возможно только с вложенными таблицами ( <tr>
не позволяет <form>
внутри нее). Я думаю, это будет слишком сложно.
Таким образом, я сохранил уникальную форму и кнопку отправки, и я добавляю флажок в каждую строку, чтобы вы выбрали один (или более) ордер для отправки электронной почты.
<form method="post" action="sendmail.php"> <h4>Orders</h4> <table> <tr> <th> </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 } }
Ну, вы первая проблема в том, что вы не храните переменные, которые вы вынимаете из своей базы данных в любом месте, вы просто печатаете их, поэтому, когда вы нажимаете «Отправить электронную почту», единственное, что вы отправляете на sendmail.php, – это имя select = "положение дел".
Сохраните результаты в обычных переменных, чтобы их можно было найти на всех ваших страницах:
<?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 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>£ "; 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>"; ?>
В<?php echo "</td><td>"; echo $Orderno; echo "</td><td>"; echo $Orderdate; echo "</td><td>"; echo $Orderedby; echo "</td><td>"; echo $Supplier; echo "</td><td>£ "; 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>
Я считаю, что кнопка отправки перед этими входами не проблема, но если она просто напишет последний бит перед кнопкой отправки, и вы будете хороши.
Надеюсь, это помогло!
обычно я использую этот путь
<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>
в<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"){ }