2017-08-15 26 views
0

我刚刚开始学习PHP,我试图通过电子邮件发送我的表。我正在收到电子邮件,但正文只是说Array。我不知道该从哪里出发,请帮忙。PHP发送电子邮件,但正文刚刚收到阵列消息

这是如何被显示我的表,并在那里以及

<form action="assign.php" method="post"><?php 

if(is_array($result)){ 
    echo ' 
    <fieldset> 
     <legend>Assign Ticket</legend> 
     <div>Changes will affect updated rows only.</div> 
     <p></p> 
     <table width=auto cellpadding=1px cellspacing=0px border=1 align=center id=assign> 

      <thead> 
      <tr>';  

    // column comment from DB as column header 
    foreach($result[0] as $key => $val){ 
     echo '<th align=center>'.$colcomments[$key].'</th>'; 
     } 
    echo ' 
      </tr> 
      </thead> 
      <tbody>'; 
    foreach($result as $row => $info){ 
    echo '<tr>'; 
    foreach($info as $key => $val){ 
    if($key=='id'){ 
    echo '<td title="'.$colcomments[$key].'">'.$val.'.<input type="hidden" name="'.$key.'['.$info['id'].']" value="'.$val.'" id="rowid_'.$val.'" /></td>'; 
     } 
    else { 
    echo '<td title="'.$colcomments[$key].'"><input type="text" name="'.$key.'['.$info['id'].']" value="'.$val.'" /></td>'; 
     } 
     } 
    echo '</tr>'; 
     } 
    echo ' 
      </tbody> 
      </table> 
    </fieldset>'; 

    if($result) { 
     $Body = "<html>\n" 
      . "<head>\n" 
      . "</head>\n" 
      . "<body>\n" 
      . $result 
      . "</body>\n" 
      . "</html>\n"; 
    //Setting up Mail 
     $mail = new PHPMailer(); 
     if (EMAIL_USE_SMTP) { 
      // Set mailer to use SMTP 
      $mail->IsSMTP(); 
      //useful for debugging, shows full SMTP errors 
      $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only 
      // Enable SMTP authentication 
      $mail->SMTPAuth = EMAIL_SMTP_AUTH; 
      // Enable encryption, usually SSL/TLS 
      if (defined(EMAIL_SMTP_ENCRYPTION)) { 
       $mail->SMTPSecure = EMAIL_SMTP_ENCRYPTION; 
      } 
      // Specify host server 
      $mail->Host = EMAIL_SMTP_HOST; 
      $mail->Username = EMAIL_SMTP_USERNAME; 
      $mail->Password = EMAIL_SMTP_PASSWORD; 
      $mail->Port = EMAIL_SMTP_PORT; 
     } else { 
      $mail->IsMail(); 
     } 
     $mail->From = EMAIL_FROM_ADDRESS; 
     $mail->FromName = EMAIL_FROM_NAME; 
     $mail->AddAddress('[email protected]'); 
     $mail->Subject = 'Ticket Assignment - '; 
     $mail->WordWrap = 100; 
     $mail->IsHTML(true); 
     $mail->Body = $Body; 
     $mail->Send(); 
    } 
} 

?> 

    <fieldset> 
     <legend>Select Date</legend> 
     <div>Select Date from and Date to</div> 
     <p></p> 
     <input type="date" name="from" id="from" value="<?=$date['from']; ?>" /> 
     <input type="date" name="to" id="to" value="<?=$date['to']; ?>" /> 
     <div><input type="submit" value="Submit" /></div> 
    </fieldset> 
    </form> 

这里发送邮件的功能是,我得到它指的是SMTP调试结果,

Notice: Array to string conversion in C:\*\assign.php on line 260 

这,

. "</body>\n" 
+0

你包括你的数据库阵列'在'$ Body'串$ result' – kinggs

+0

它实际上指的是在此之前的路线,'$ result'是一个数组,所以你不能只是做一个'echo $ result'。 –

+0

任何想法,我应该放在'$ Body'中?我一直在想,既然'$ result'被用来保存数组,它可以在电子邮件中被分解,也可以被分解到结果表中。对不起,新手在这里。 – testyummy

回答

0

这是通过使用函数修复的。

function two_dim_array_to_html_table($arr, $colcomments){ 
    $ret = "<table border='1' width='auto' cellpadding='1px' cellspacing='0px' align='center'>\n"; 
    $ret .= "\t<tr>\n"; 
    foreach($arr[0] as $key => $val){ 
     $ret .= "\t\t<th>".$colcomments[$key]."</th>\n"; 
     } 
    $ret .= "\t</tr>\n"; 
    foreach($arr as $row){ 
     $ret .= "\t<tr>\n"; 
     foreach($row as $column){ 
      $ret .= "\t\t<td>".$column."</td>\n"; 
      } 
     $ret .= "\t</tr>\n"; 
     } 
    $ret .= "<table>\n"; 
    return $ret; 
    } 
0

我没测试,但我想这个代码将解决您的问题尝试

if($result) { 
      $Body = "<html>\n" 
       . "<head>\n" 
       . "</head>\n" 
       . "<body>\n" 
      .json_encode($result, JSON_PRETTY_PRINT). 


       . "</body>\n" 
       . "</html>\n"; 
+0

它没有工作,我得到错误'解析错误:语法错误,意想不到的'<'在C:\ * \ assign.php行259' – testyummy

+0

尝试纠正语法错误它很容易,我可以' t测试它 –

+0

@testyummy提到错误行? –

0

的问题是在你行正上方260 $结果 是一个数组,所以你不能只是与其他字符串拼接它。

你不能使用;

'<body>'.$result.'</body>' 

您可以使用;

'<body>'.json_encode($result).'</body>' 

(或者说,你的阵列转换为字符串的任何其他功能)

我希望帮助?

+0

谢谢,我试了一下,似乎有一半工作,因为我现在看到其他消息在身体,但它似乎没有相同的格式,我在浏览器中看到它,我得到的是这个 '[{ “ID”: “21”, “testid1”: “TEST7”, “testid2”: “TEST7”, “摘要”: “TEST7”, “类型”: “TEST7”, “tested_by”: “TEST” “起始日期”: “2017年1月3日”, “测试”: “”}]' – testyummy

相关问题