Как использовать массив ввода PHP с моей динамической формой и скриптом PHP emailer? - PullRequest
0 голосов
/ 21 июля 2010

Я некоторое время боролся, пытаясь закончить это, я новичок во многих из этого, и хотя у меня было несколько советов, я думаю, что я теряюсь.Итак, я разобрал код до точки, где он почти работает.

ДЕМО ЗДЕСЬ: ЗАКРЫТО

У меня есть форма, которую клиент заполняет для отправки показаний счетчика принтера.Некоторые модели принтеров имеют более 1 показания, вплоть до 3. Когда пользователь нажимает кнопку «добавить принтер», jQuery добавляет содержимое и выбирает модель из раскрывающегося списка, и появляются соответствующие входные данные для чтения числа или метра.Затем они могут снова нажать «Добавить принтер» для нескольких принтеров.

Затем данные отправляются на contact.php, где они проверяются, а затем отправляются по электронной почте в читаемом формате.

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

В настоящее время я получаю это по электронной почте (отображается только первый принтер):

Показания счетчика отправлены Крейг .Счет № 123456 , показания которого следующие:

Модель принтера = Phaser 2010 , с серийным номером 101010 .Моно чтение = 1234 , чтение цвета = 5678 , экспресс-чтение =.

Клиент Крейг электронная почта, Craig@craig.com

-> Notice Express Read пусто, потому что это было необходимо.Я, на самом деле, этого не было бы вообще.

Я бы хотел, чтобы получилось что-то вроде этого (когда добавлено четыре принтера, два - одна и та же модель):

Показание счетчика отправлено Крейг .Счет № 123456 , показания которого следующие:

Модель принтера = Phaser 2010 , с серийным номером 101010 .Моно чтение = 1234 , чтение цвета = 5678

Модель принтера = Phaser 2010 , с серийным номером 202020 ,Моно чтение = 910 , чтение цвета = 1112

Модель принтера = ColorQube , с серийным номером 303030 .Моно чтение = 1234 , чтение цвета = 5678 , экспресс-чтение = 91011 .

Модель принтера = WorkCentre 7150 , с серийным номером 404040 .Моно чтение = 1234

Клиент Крейг электронная почта, Craig@craig.com

Ниже приведен коддля contact.php:

<?php

if(!$_POST) exit;

    $name = $_POST['name'];
    $account = $_POST['account'];
    $email = $_POST['email'];
    $printer = $_POST['printer'];
    $serial = $_POST['serial'];
    $mono = $_POST['mono'];
    $colour = $_POST['colour'];
    $express = $_POST['express'];

    if(trim($name) == '') {
        echo '<div class="error_message">Attention! You must enter your name.</div>';
        exit();
        } else if(trim($email) == '') {
            echo '<div class="error_message">Attention! Please enter a valid email address.</div>';
            exit();
        } else if(!isEmail($email)) {
            echo '<div class="error_message">Attention! You have entered an invalid e-mail address, try again.</div>';
            exit();
        }

    if($error == '') {

        if(get_magic_quotes_gpc()) {
            $comments = stripslashes($comments);
        }

    // Configuration option.
    //$address = "example@example.net";
    $address = "somebody@email.com";

    // Example, $e_subject = '$name . ' has contacted you via Your Website.';
    $e_subject = 'Meter Reading submitted by - ' . $name . '. Account No.' . $account . '.';

    // Configuration option.
    $e_body = "Meter Reading submitted by $name. Account No. $account, readings are as follows.\r\n\n";

    // THIS NEEDS TO ONLY SHOW COLOUR AND EXPRESS READING IF THAT PRINTER REQUIRES IT - and - REPEAT FOR EACH ADDED PRINTER
    $e_content = "Printer Model = $printer, with Serial No. $serial. Mono Reading = $mono, Colour Reading = $colour , Express Reading = $express.\r\n\n";

    $e_reply = "Customer $name email, $email";

    $msg = $e_body . $e_content . $e_reply;

    if(mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")) {


    // Email has sent successfully, echo a success page.

    echo "<fieldset>";          
    echo "<div id='success_page'>";
    echo "<h1>Email Sent Successfully.</h1>";
    echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>";
    echo "</div>";
    echo "</fieldset>";

    } else {

    echo 'ERROR!';

    }

}

function isEmail($email) { // Email address verification, do not edit.

return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));

}
?>

Буду очень признателен за помощь в этом.ОБРАТИТЕ ВНИМАНИЕ, связанный файл " jquery.jigowatt.js ", поскольку в нем также используется сообщение.

Кто-то может мне помочь, и извините, он такой большой, чтобы объяснить и показать.Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Том

Ответы [ 2 ]

1 голос
/ 21 июля 2010

Поля HTML следует называть массивами. Например, ввод принтера должен быть принтером [], а последовательный ввод должен быть последовательным [], в противном случае вы получите только одно значение после отправки формы.

Например:

<select name="printer[]" type="text" id="printer" class="printer">
    ...
</select>

Затем на contact.php вы можете зацикливаться на построении данных в строке содержимого.

Например,

for ($i = 0; i < count($_POST['printer']); $i++) {
    $e_content .= "Printer Model = $_POST['printer'][i], with Serial No. $_POST['serial'][i]..."
}

Это предполагает, что у каждого принтера есть серийный номер и что массивы будут одинаковой длины.

1 голос
/ 21 июля 2010

Попробуйте назвать поля как массивы, такие как printer [] и serial [].

При публикации вы получите массив значений вместо одного.

$ _ POST ['printer'] [0], $ _POST ['printer'] [1] и т. д.

Сделайте это и для чтения, и вы должны быть в хорошей форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...