Извлечение данных из таблицы HTML в электронную почту через PHP

У меня есть таблица в HTML, в которой есть несколько полей ввода (просто стандартные вещи - это форма заказа), и все, что я пытаюсь сделать, это извлечь данные, чтобы я мог вставить их в электронное письмо.

У меня есть все остальное для работы, кроме извлечения данных из таблицы, которую я отправляю в функцию электронной почты php.

Я искал в Google все возможные решения (jQuery, javascript и т. д.), но не нашел подходящего решения. Самое близкое, что я получил, это просто использовать $(this).html(), но он не извлекает входные значения.

Я чувствую, что это должно быть действительно простое решение, но я могу его найти.

Вот пример моей таблицы с некоторыми фиктивными данными:

<table id="order-table">
            <tr>
                 <th>Product Name</th> 
                 <th>Quantity</th>
                 <th>X</th>
                 <th>Unit Price</th>
                 <th>=</th>
                 <th style="text-align: right; padding-right: 30px;">Totals</th> 
            </tr>
            <tr class="odd">
                <td class="product-title">Dell R720 Xeon Server</em></td>
                <td class="qty"><input type="text" class="qty-input"></input></td>
                <td class="times">X</td>
                <td class="price-per-unit">£<span>1006</span></td>
                <td class="equals">=</td>
                <td class="row-total"><input type="text" class="row-total-input" disabled="disabled"></input></td>
            </tr>
            <tr class="even">
                <td class="product-title">VMWare Standard</em></td>
                <td class="qty"><input type="text" class="qty-input"></input></td>
                <td class="times">X</td>
                <td class="price-per-unit">£<span>306</span></td>
                <td class="equals">=</td>
                <td class="row-total"><input type="text" class="row-total-input" disabled="disabled"></input></td>
            </tr>

            <tr>
                <td colspan="6" style="text-align: right;">
                    ORDER SUBTOTAL: <input type="text" class="total-box" value="£0" id="product-subtotal" disabled="disabled"></input>
                </td>
            </tr>
        </table>

Любая помощь будет принята.


person Jimbo James    schedule 26.08.2013    source источник
comment
Почему вы не используете форму или хотите сделать это с помощью AJAX?   -  person Ali    schedule 27.08.2013
comment
Я не против в любом случае. Все, что я пытаюсь сделать, это создать простую форму заказа, которая при отправке отправляется по электронной почте получателю.   -  person Jimbo James    schedule 27.08.2013


Ответы (2)


Если я правильно понял, вы можете использовать форму и имя (все) ваши поля ввода.

Присвоение имен полям будет важно для этого примера.

Имя поля ввода:

<input type="text" name="qty_input_odd" class="qty-input">

Затем в вашем обработчике вы должны использовать переменную ввода следующим образом:

$qty_input_odd=$_POST['qty_input_odd'];

и то же самое для других полей.

Затем вы можете отправить всю эту информацию на свою электронную почту и копию своему клиенту, если это необходимо.

Вы также можете избежать установки входных переменных, используя foreach.

Например:

foreach($_POST as $key => $val) {
    $message .= "$key: $val\n";
}

Полный пример обработчика:

<?php

$subject = "Form submission";
$sender = preg_replace("/[\r\n,;]/", "", $_POST['email']);
$to = "[email protected]";

$headers = "From: $sender" . "\r\n" .
"Reply-To: $to" . "\r\n" .
"X-Mailer: PHP/" . phpversion();

$redirect = "http://www.example.com/thank_you.php";
$message = "Submitted data:" . "\n\n";
foreach($_POST as $key => $val) {
    $message .= "$key: $val\n";
}

mail($to, $subject, $message, $headers);
header("Location: $redirect");
// You can use header or echo, but not both
// echo "Message sent";

?>
person Funk Forty Niner    schedule 26.08.2013

Ознакомьтесь с методами сериализации и ajax jQuery:

http://api.jquery.com/serialize/

http://api.jquery.com/jQuery.ajax/

Serialize позволяет сериализовать все входные данные на странице примерно так:

var formParams = $('#order-table').serialize();

и метод ajax позволяет передавать эти данные на сервер:

$.ajax({
  url: url,
  data: formParams,
  success: success,
  dataType: dataType
});
person zigdawgydawg    schedule 26.08.2013
comment
Спасибо за быстрый ответ, из того, что я вижу на сайте jQuery, не даст ли это мне просто входные данные? Мне нужно получить данные из всей таблицы, включая входные данные. Это возможно? - person Jimbo James; 27.08.2013
comment
Итак... вы пытаетесь передать как значения из входных данных, так и некоторые значения внутри ячеек таблицы? Если это так, было бы полезно понять, почему вы хотите передавать нередактируемые данные со страницы. - person zigdawgydawg; 27.08.2013