【问题标题】:Data array not send in email数据数组未通过电子邮件发送
【发布时间】:2020-12-21 13:39:50
【问题描述】:

我有一个允许添加、编辑和删除行的表格。

我想将所有行发送到电子邮件,但只发送最后一行。

使用不同的代码进行测试,但没有成功。

表格的 HTML 代码。

encomenda.html

<table class="table table-bordered">
    <thead>
        <tr>
            <th>Produto</th>
            <th>Referência</th>
            <th>Quantidade</th>
            <th>Preço (€)</th>
            <th>Ações</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><input type="text" class="form-control" for="produto" name="produto[item1]" id="produto" placeholder="Exemplo*" ></td>
            <td><input type="text" class="form-control" for="referencia" name="referencia[item2]" id="referencia" placeholder="#00000"></td>
            <td><input type="number" class="form-control" for="quantidade" name="quantidade[item3]"  id="quantidade" placeholder="10*" ></td>
            <td><input type="number" class="form-control" for="preco" name="preco[item4]" id="preco" placeholder="10.0004"></td>
            <td>
                <a class="add" title="Add" data-toggle="tooltip"><i class="material-icons">&#xE03B;</i></a>
                <a class="edit" title="Edit" data-toggle="tooltip"><i class="material-icons">&#xE254;</i></a>
                <a class="delete" title="Delete" data-toggle="tooltip"><i class="material-icons">&#xE872;</i></a>
            </td> 
        </tr>
    </tbody>
</table>

用于添加、编辑和删除行的脚本代码。

javascript

<script>
$(document).ready(function () {
    $('[data-toggle="tooltip"]').tooltip();
    var actions = $("table td:last-child").html();
    $(".add-new").click(function () {
        $(this).attr("disabled", "disabled");
        var index = $("table tbody tr:last-child").index();
        var row = '<tr>' +
        '<td><input type="text" class="form-control" for="produto" name="produto[item1]" id="produto" placeholder="Exemplo*" ></td>' +
        '<td><input type="text" class="form-control" for="referencia" name="referencia[item2]" id="referencia" placeholder="#00000"></td>' +
        '<td><input type="number" class="form-control" for="quantidade" name="quantidade[item3]" id="quantidade" placeholder="10*" ></td>' +
        '<td><input type="number" class="form-control" for="preco" name="preco[item4]" id="preco" placeholder="10.0004"></td>' +
        '<td>' + actions + '</td>' +
        '</tr>';
        $("table").append(row);
        $("table tbody tr").eq(index + 1).find(".add, .edit").toggle();
        $('[data-toggle="tooltip"]').tooltip();
    });

    $(document).on("click", ".add", function () {
        var empty = false;
        var input = $(this).parents("tr").find('input[type="number"]');
        var input = $(this).parents("tr").find('input[type="text"]');

        input.each(function () {
            if (!$(this).val()) {
                $(this).addClass("error");
                empty = true;
            } else {
                $(this).removeClass("error");
            }
        });
        $(this).parents("tr").find(".error").first().focus();
        if (!empty) {
            $(this).parents("tr").find(".add, .edit").toggle();
            $(".add-new").removeAttr("disabled");
        }
    });

    $(document).on("click", ".edit", function () {
        $(this).parents("tr").find("td:not(:last-child)").each(function () {
            $(this).html('<input type="text" class="form-control" value="' + $(this).text() + '">');
        });
        $(this).parents("tr").find(".add, .edit").toggle();
        $(".add-new").attr("disabled", "disabled");
    });

    $(document).on("click", ".delete", function () {
        $(this).parents("tr").remove();
        $(".add-new").removeAttr("disabled");
    });
});
</script>



将数据发送到电子邮件的 PHP 代码。

email.php

<?php
$item1 = $_POST['produto']['item1'];
$item2 = $_POST['referencia']['item2'];
$item3 = $_POST['quantidade']['item3'];
$item4 = $_POST['preco']['item4'];

$to = "email@email.pt";
$remetente = "email@email.pt";
 
$boundary = date("d-m-Y");
$headers.= "Form - ";
$headers.= "$boundary\n"; 


$corpo_mensagem = "


Product: $item1 
Ref.: $item2
Qtd: $item3
Price: $item4 €


$mensagem = "--$boundary\n"; 
$mensagem.= "Content-Transfer-Encoding: 8bits\n"; 
$mensagem.= "Content-Type: multipart/form-data; boundary=something";
$mensagem.= "$corpo_mensagem\n";
}?>



有人可以帮我吗?

谢谢

【问题讨论】:

    标签: php html arrays forms dynamic


    【解决方案1】:

    您在表格的每一行中为每个输入使用相同的name。浏览器只能为每个名称传输一个值。

    这样写输入名称:

    produto[]
    

    (因此括号中没有“item1”,“item2”等),因此它形成了一个没有特定索引的数组。

    然后在 PHP 中,您必须遍历它们以获取每个单独的值

    例如作为一个非常简单的例子:

    foreach ($_POST['produto'] as $item)
    {
        echo $item;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-13
      • 2020-02-24
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多