2012-04-16 50 views
1

内完全迭代我有一个PHP脚本,通过它我发送HTML格式的电子邮件。我使用'for'循环来收集数据并将其存储在一个变量中。指示循环运行25次。问题是它只循环19次。我检查了任何没有发现的标签或拼写错误,但没有发现任何错误。我发布了for循环部分,以防你们中的任何人都能发现我无法做到的事情。这真是令人沮丧,因为我认为解决方案非常简单,但我无法发现问题。PHP for循环而不是HTML电子邮件

我的“邮件()”函数头部的罚款。在这里,他们是以防万一

$headers = "From: $from \r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 

这里是我的for循环:

$abc ="<table width='600'>"; 
     $abc .= "<tr> 
         <td bgcolor='#d6bf86'><span style='color:#9c2a00'>Number of Products</span></td> 
         <td align='center' bgcolor='#fde4d0'>$pagess</td> 
         <td align='center' bgcolor='#c3deb9'>$pagese</td> 
         <td align='center' bgcolor='#bee7f8'>$pagesu</td> 
        </tr>"; 


     for($i=1; $i<=25; $i++) 
     { 
      $abc .="<tr>"; 
      if($i % 2 == 0)  // EVEN ROW 
      {  
        $abc .= "<td bgcolor='#d6bf86' width='260'><span style='color:#9c2a00'>".${f.$i}."</span></td>"; 
      } 
      else    // ODD ROW 
      { 
        $abc .= "<td bgcolor='#fffbd0' width='260'><span style='color:#9c2a00'>".${f.$i}."</span></td>"; 
      } 

        if(isset(${s.$i}))  
        { 
         $abc .= "<td bgcolor='#fde4d0' align='center'>Yes</td>"; 
         ${s.$i} = "Yes"; 
        } 
        else 
        { 
         $abc .= "<td bgcolor='#fde4d0' align='center'>No</td>"; 
         ${s.$i} = "No"; 
        } 
        if(isset(${e.$i})) 
        { 
         $abc .= "<td bgcolor='#c3deb9' align='center'>No</td>"; 
         ${e.$i} = "Yes"; 
        } 
        else 
        { 
         $abc .= "<td bgcolor='#c3deb9' align='center'>Yes</td>"; 
         ${e.$i} = "No"; 
        } 
        if(isset(${u.$i})) 
        { 
         $abc .= "<td bgcolor='#bee7f8' align='center'>No</td>"; 
         ${u.$i} = "Yes"; 
        } 
        else 
        { 
         $abc .= "<td bgcolor='#bee7f8' align='center'>Yes</td>"; 
         ${u.$i} = "No"; 
        } 
      $abc .="</tr>"; 
     } 


     if(isset($_POST['dscs'])) // DISCOUNT HAS BEEN APPLIED 
     { 

      $abc .= "<tr> 
          <td>Base Price</td> 
          <td align='center'>$sums</td> 
          <td align='center'>$sume</td> 
          <td align='center'>$sumu</td> 
         </tr>"; 
      $abc .= "<tr> 
          <td>Discount Offered</td> 
          <td align='center'>$discount% </td> 
          <td align='center'>$discount% </td> 
          <td align='center'>$discount% </td> 
         </tr>"; 
      $abc .= "<tr> 
          <td>Effective Price</td> 
          <td align='center'>$dscs</td> 
          <td align='center'>$dsce</td> 
          <td align='center'>$dscu</td> 
         </tr>"; 
     } 
     else 
     { 
      $dscs = $sums; 
      $dsce = $sume; 
      $dscu = $sumu; 
      $abc .= "<tr> 
          <td>Total Price</td> 
          <td align='center'>$sums</td> 
          <td align='center'>$sume</td> 
          <td align='center'>$sumu</td> 
         </tr>"; 
     } 

     $abc .="</table>"; 

我可以将正在发送给该代码是如何突破的想法电子邮件的截屏。让我知道你是否也想要截图。

PS:我复制粘贴此代码在一个单独的文件,并运行它,它工作正常。循环迭代了25次。这使我相信将它放入HTML电子邮件中存在问题。

电子邮件中的脚本还添加是否有帮助:提前

$to = $clem; 
$subject = "Something goes here"; 
$message = "<html> 
<head></head> 
<body style='background-color:#ffffff; font-family:Lucida Sans Unicode, Lucida Grande, sans-serif;'> 
    <table width='600'> 
     <tr> 
      <td>$abc</td> 
     </tr> 
    </table> 
</body> 
</html>"; 

$from = "$logged_user"; 
$headers = "From: $from \r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
$res=mail($to,$subject,$message,$headers); 

感谢, 尼萨尔

+0

在$ ABC后循环= “”。 echo $ i ..这样你就可以确切地知道当循环完全执行时$ i的值是多少。 – 2012-04-16 11:31:54

+0

好的杀手。我会马上这样做,并在一分钟之内通知你。 编辑:这是显示19.因此,环断裂。 – asprin 2012-04-16 11:35:53

+0

我的价值是什么?是从1-19还是别的什么? – 2012-04-17 04:27:44

回答

1

没关系,我发现了什么是错误的。这里面向有类似问题的人。

I learnt that html emails have a 990 character limit per line. That was the reason why my code was breaking