【问题标题】:Html Form With Array带数组的 HTML 表单
【发布时间】:2021-08-16 12:41:32
【问题描述】:

我有一个很大的表格,一切正常,但是当我添加带有数组的产品时,我在电子邮件中没有收到任何数字,只是文字说“数组”

这是我的表单,如果我按下按钮,它将使用 javascript 重复相同的表单,您可以查看下图:

在这张图片上,您可以看到表单重复:

<div class="gcore-line-tr gcore-form-row" id="ftr-multi-45">
  <div class="gcore-line-td" id="ftd-multi-45">
    <div class="gcore-subinput-container" id="fitem-Quant">
      <label for="Quant" class="gcore-label-left">Quantidade</label>
      <div class="gcore-input-container gcore-display-table gcore-input" id="fin-Quant">
        <input name="Quantidade[]" id="Quant" value="" placeholder="" class="" title="" style="" data-inputmask="" data-load-state="" data-tooltip="" type="text">
      </div>
    </div>
    <div class="gcore-subinput-container" id="fitem-Caracteristicas"> 
      <label for="Caracteristicas" class="gcore-label-left">Designação</label>
      <div class="gcore-input-container gcore-display-table gcore-input" id="fin-Caracteristicas">
        <input name="Caracteristicas[]" id="Caracteristicas" value="" placeholder="" class="" title="" style="" data-inputmask="" data-load-state="" data-tooltip="" type="text">
      </div>
    </div>
    <div class="gcore-subinput-container" id="fitem-Altura">
      <label for="Altura" class="gcore-label-left">Altura (cm)</label>
      <div class="gcore-input-container gcore-display-table gcore-input" id="fin-Altura">
        <input name="Altura[]" id="Altura" value="" placeholder="" class="" title="" style="" data-inputmask="" data-load-state="" data-tooltip="" type="text">
      </div>
    </div>
    <div class="gcore-subinput-container" id="fitem-Largura">
      <label for="Largura" class="gcore-label-left">Largura (cm)</label>
      <div class="gcore-input-container gcore-display-table gcore-input" id="fin-Largura">
        <input name="Largura[]" id="Largura" value="" placeholder="" class="" title="" style="" data-inputmask="" data-load-state="" data-tooltip="" type="text">
      </div>
    </div>
    <div class="separator" style="background-size: cover;">
      <span><i class="fa fa-circle"></i></span>
    </div>
  </div>
</div>

我的问题是,如果我想添加多个产品,为什么我会在电子邮件中收到一个数组。

我用来创建$(我使用PHPMailer) 我在这里发送 $ items 代码:

 // ESTORE 1
 $Quantidade = $_POST['Quantidade'];
 $Caracteristicas = $_POST['Caracteristicas'];
 $Altura = $_POST['Altura'];
 $Largura = $_POST['Largura'];

我用来发送值

$mail->Body ="
    
    <p><h3> | ORÇAMENTO - ONLINE PEDIDO</h3></p>
    <p><h3>⇰ Informação Cliente:</h3></p>
    <h3>▪ Tipo de cliente ( 0 = Particular | 1 = Empresa):</h3> $empresa  <br>
    <h3>▪ Nome Empresa:</h3> $empresa_nome <br>
    <h3>▪ Montagem ( 0 = Nao Quero Montagem | 1 = Quero Montagem):</h3> $montagem  <br>
    <h3>▪ Local de montagem:</h3> $morada_montagem <br>
    <h3>▪ Primeiro Nome:</h3> $name <br>
    <h3>▪ Ultimo Nome: </h3>$nomeultimo <br>
    <h3>▪ Email:</h3> $email <br> 
    <h3>▪ Nº Telefone:</h3> $phone <br> 
    <h3>▪ NIF:</h3> $nif <br> 
    <h3>▪ Morada: </h3>$morada <br>
    <h3>▪ Cidade: </h3>$localidade <br>
    <h3>▪ Código Postal:</h3> $codigopostal  <br>
 
    <p><h3>⇰ Informação Produto:</h3></p>
     ---------------------------------------------<br>

    <p><h3>⇰ Produtos:</h3></p>
     <h3>▪ Tipo de Estore:</h3> $Caracteristicas
    <h3>▪ Largura:</h3> $Largura 
    <h3>▪ Altura: </h3>$Altura
    <h3>▪ Quantidade:</h3> $Quantidade <br> 
    ---------------------------------------------<br>
    
     <h3>▪ Acionamento:</h3> $adicionamento <br>
    
    <h3>▪ Visita do Tecnico:</h3> $tecnico  <br>
   
    <h3>▪ Mensagem :</h3> $message<br>
    <p><h3>Cliente aceita (política de privacidade)</h3>$politicaprivacidade<br></p>
    
     <p><img src=\"cid:logoimg\" /></p>";

    foreach ($Caracteristicas as $item) { echo $item."<br/>"; }
    foreach ($Quantidade as $item) { echo $item."<br/>"; }
    foreach ($Altura as $item) { echo $item."<br/>"; }
    foreach ($Largura as $item) { echo $item."<br/>"; }

生成电子邮件:

谢谢。

当我添加时

    foreach ($Caracteristicas as $item) { echo $item."<br/>"; }
    foreach ($Quantidade as $item) { echo $item."<br/>"; }
    foreach ($Altura as $item) { echo $item."<br/>"; }
    foreach ($Largura as $item) { echo $item."<br/>"; }

我在浏览器中有这个结果:

【问题讨论】:

  • 嗯,您到底希望发生什么?数组是一个数据列表,它没有内置的可视化表示(主要是因为它内部没有保证结构)。您需要决定如何显示该数据并编写一些代码来循环遍历数组并以您想要的格式输出数据。在最简单的情况下,您可以编写如下内容:foreach ($Caracteristicas as $item) { echo $item."&lt;br/&gt;"; }(这应该可以工作,因为在这种情况下,数组中的项看起来并不是对象/数组本身。)
  • 哇,谢谢!我想通过电子邮件接收数组的结果。我尝试了您的选择,结果它写入了数组的浏览器列表。但是我如何通过电子邮件收到结果呢?
  • 完全一样...您使用 PHP 生成电子邮件内容,我猜?否则我不知道你是如何生成你在图片中展示的内容的?
  • 感谢您抽出时间来帮助我。我会解释发生了什么。我创建了: [code] foreach ($Caracteristicas as $item) { echo $item."
    "; } foreach ($Quantidade as $item) { echo $item."
    "; } foreach ($Altura as $item) { echo $item."
    "; } foreach ($Largura as $item) { echo $item."
    "; } [/code] 和我用来发送信息:[code]

    ▪ Tipo de Estore:

    $Caracteristicas

    ▪ Largura:

    $Largura

    ▪ Altura:

    $Altura

    ▪ Quantidade:

    $Quantidade
    [/code] 我刚刚通过电子邮件收到“数组”作为结果。
  • 您好,欢迎来到stackoverflow!只是一个小提醒,最好将任何代码作为文本而不是图像包含在此元帖子中:meta.stackoverflow.com/questions/303812/…

标签: php html arrays forms email


【解决方案1】:

数组是一个数据列表,它没有内置的可视化表示(主要是因为它内部没有保证的结构)。您需要决定如何显示该数据并编写一些代码来循环遍历数组并以您想要的格式输出数据。

在最简单的情况下,您可以在单独的行上输出每个项目,或者用逗号分隔。为此,您需要逐渐建立邮件正文字符串,以便将这些值连接在一起。为了减少重复,这里可以使用一个函数,因此您可以使用它以一致的方式显示所有数组的内容。

这样的事情应该可以工作:

function arrayToString($arr)
{
  $output = "";
  foreach ($arr as $item) $output .= $item."<br>";
  return $output;
}

$mail->Body ="

<p><h3> | ORÇAMENTO - ONLINE PEDIDO</h3></p>


<p><h3>⇰ Informação Cliente:</h3></p>


<h3>▪ Tipo de cliente ( 0 = Particular | 1 = Empresa):</h3> $empresa  <br>
<h3>▪ Nome Empresa:</h3> $empresa_nome <br>
<h3>▪ Montagem ( 0 = Nao Quero Montagem | 1 = Quero Montagem):</h3> $montagem  <br>
<h3>▪ Local de montagem:</h3> $morada_montagem <br>
<h3>▪ Primeiro Nome:</h3> $name <br>
<h3>▪ Ultimo Nome: </h3>$nomeultimo <br>
<h3>▪ Email:</h3> $email <br> 
<h3>▪ Nº Telefone:</h3> $phone <br> 
<h3>▪ NIF:</h3> $nif <br> 
<h3>▪ Morada: </h3>$morada <br>
<h3>▪ Cidade: </h3>$localidade <br>
<h3>▪ Código Postal:</h3> $codigopostal  <br>

<p><h3>⇰ Informação Produto:</h3></p>
 ---------------------------------------------<br>
 
 
 

<p><h3>⇰ Produtos:</h3></p>
 <h3>▪ Tipo de Estore:</h3>".arrayToString($Caracteristicas)."
<h3>▪ Largura:</h3> ".arrayToString($Largura)." 
<h3>▪ Altura: </h3>".arrayToString($Altura)."
<h3>▪ Quantidade:</h3>".arrayToString($Quantidade)."<br> 
---------------------------------------------<br>


 <h3>▪ Acionamento:</h3> $adicionamento <br>

<h3>▪ Visita do Tecnico:</h3> $tecnico  <br>

<h3>▪ Mensagem :</h3> $message<br>
<p><h3>Cliente aceita (política de privacidade)</h3>$politicaprivacidade<br></p>

 <p><img src=\"cid:logoimg\" /></p>";

【讨论】:

  • 我不知道如何,但它工作得很好。你是魔术师吗?真的很感谢你。我很高兴我在这里待了 4 天。而你来拯救我的一天!真的 :) 衷心感谢您!
  • I don't know how...那你需要试着去理解,因为字符串连接和数组循环是相当基本的功能,如果你继续做任何编程,你可能会一直使用它们。我写的代码中有哪些部分让你感到困惑?如果你愿意,我可以试着解释一下。
  • 我已将所有代码阅读了 3 次.. 嗯,我想我明白了 :) 它的工作方式,对不起,我只是使用 PHP 工作了 4 天,只是想自学。顺便说一句,您有任何建议如何将电子邮件中的每个值分开。我的意思是我想以更好的方式展示产品。我看到它像 Tipo de Estore: 1,2,3,4 Largura: 1,2,3,4 等等。你知道吗?我想让这看起来更有条理。
  • 嗯,这取决于您希望它看起来如何?
  • 现在我没有创建新的权限。我会尽快创建链接并发送给你:)祝你有美好的一天!
猜你喜欢
  • 2018-05-18
  • 2015-11-08
  • 2014-09-03
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 2017-01-04
  • 2017-07-29
  • 1970-01-01
相关资源
最近更新 更多