Скрыть пустую строку в отчете по электронной почте - PullRequest
0 голосов
/ 01 июля 2018

Мне нужна помощь с этим кодом. Код и стиль javascript в теге заголовка используются для скрытия пустой строки, потому что не во всех строках есть данные, и это работает при отображении на моей веб-странице. Но когда я использую его для отправки отчета на адрес электронной почты в качестве отчета, отображается пустая строка. Есть ли что-то, что мне нужно рассмотреть, чтобы скрыть пустые строки в электронном письме получателя. Ниже приведен код:

enter$sql = mysqli_query($con_path, "SELECT * FROM classscore WHERE emailsent=0 LIMIT 20");
$numRows = mysqli_num_rows($sql); 
$mail_body = '';
while($row = mysqli_fetch_array($sql)){
$studentid = $row['student_id'];
$classname = $row['class_name'];
$english  =  $row['english'];
$maths = $row['maths'];
$accounts = $row['accounts'];
$music = $row['music'];
$email = $row['email'];

$mail_body = '<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Report</title>
<style>
.hide { 
display: none; 
}
</style>
</head>

 <body>
 <table id="table" width="40%" border="1" align="center" cellpadding="0" cellspacing="0" style="border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px; color:#000;">
<tr>
<td width="23%">Student ID</td>
<td>&nbsp;</td>
<td> '.$studentid.' / '.$classname.'</td>
</tr>
<tr>
<td><strong>Subjects</strong></td>
<td width="21%"><strong>Overall Score</strong></td>
<td width="56%"><strong>Actual Score</strong></td>
</tr>
<tr>
<td>English</td>
<td>100</td>
<td> '.$english.'</td>
</tr>
<tr>
<td>Maths</td>
<td>100</td>
<td>'.$maths.'</td>
</tr>
<tr>
<td>Account</td>
<td>100</td>
<td> '.$accounts.'</td>
</tr>
<tr>
<td>Music</td>
<td>100</td>
<td> '.$music.'</td>
</tr>
</table>
<p>&nbsp; </p>
<script language="javascript">
var tbl = document.getElementById("table");
var rows = tbl.querySelectorAll("tbody tr");

for(i = 0; i < rows.length; i++) {

var cells = rows[i].querySelectorAll("td");

var flag = true;
//this number controls the colunm the code will check before it disappears.
for(j = 2; j < cells.length; j++) {
    if (cells[j].innerHTML != 0) { 
        flag = false; 
    }
}


if(flag) { 
    rows[i].classList.add("hide"); 
}
}                                      
</script>
</body>
</html>';
$subject = "Report";
$headers = 'MIME-Version: 1.0';
$headers  = "From:schoolreport@pearlgateconsult.com\r\n";
$headers .= "Content-type: text/html\r\n";
$to = "$email";

$mail_result = mail($to, $subject, $mail_body, $headers);

if ($mail_result) {
    mysqli_query($con_path, "UPDATE classscore SET emailsent=1 WHERE email='$email' LIMIT 1");
} else {

}

}

?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<?php echo $mail_body; ?>
<body>
</body>
</html>

DROP TABLE IF EXISTS classscore ;
CREATE TABLE classscore
(student_id INTEGER (11) NULL,
email varchar(255),
class_name varchar(255),
english INTEGER (11) NULL,
maths INTEGER (11) NULL,
accounts INTEGER (11) NULL,
music INTEGER (11) NULL,
emailsent varchar(255) DEFAULT '0'
);

INSERT INTO classscore
(student_id,email,class_name,english,maths,accounts,music) VALUES
(10011,'tosinsog@gmail.com','Basic1','70','80','75',''),
(10012,'tosinsog@gmail.com','Basic1','55','','','69'),
(10013,'tosinsog@gmail.com','Basic1','74','75','','85'),
(10014,'tosinsog@gmail.com','Basic1','64','84','58',''),
(10015,'tosinsog@gmail.com','Basic1','69','','65','73'),
(10016,'tosinsog@gmail.com','Basic1','70','80','74','68'),
(10017,'tosinsog@gmail.com','Basic1','75','82','','');

Таким образом, отчет по электронной почте работает, но пустые строки не должны отображаться в отчете по электронной почте, когда его получает получатель. Буду очень признателен за помощь. Спасибо.

1 Ответ

0 голосов
/ 01 июля 2018

Попробуйте использовать приведенный ниже код, если это может решить вашу проблему.

 $mail_body = '<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Report</title>
 <style>
  .hide { 
     display: none; 
   }
  </style>
 </head>

 <body>
   <table id="table" width="40%" border="1" align="center" cellpadding="0" cellspacing="0" style="border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px; color:#000;">
  <tr>
     <td width="23%">Student ID</td>
     <td>&nbsp;</td>
     <td> '.$studentid.' / '.$classname.'</td>
  </tr>
  <tr>
     <td><strong>Subjects</strong></td>
     <td width="21%"><strong>Overall Score</strong></td>
     <td width="56%"><strong>Actual Score</strong></td>
  </tr>';

  if($english!=0){

  $mail_body.='<tr>
     <td>English</td>
     <td>100</td>
     <td> '.$english.'</td>
  </tr>'; }

  if($maths!=0) { 
   $mail_body.='<tr>
     <td>Maths</td>
     <td>100</td>
     <td>'.$maths.'</td>
  </tr>'; }

  if($accounts!=0){
  $mail_body.='<tr>
     <td>Account</td>
     <td>100</td>
     <td> '.$accounts.'</td>
  </tr>'; }

  if($music!=0){
  $mail_body.='<tr>
      <td>Music</td>
      <td>100</td>
      <td> '.$music.'</td>
  </tr>'; }
$mail_body.='</table>
<p>&nbsp; </p>
<script language="javascript">
   var tbl = document.getElementById("table");
   var rows = tbl.querySelectorAll("tbody tr");

   for(i = 0; i < rows.length; i++) {

    var cells = rows[i].querySelectorAll("td");

    var flag = true;
    //this number controls the colunm the code will check before it disappears.
   for(j = 2; j < cells.length; j++) {
     if (cells[j].innerHTML != 0) { 
      flag = false; 
     }
    }


   if(flag) { 
      rows[i].classList.add("hide"); 
   }
 }                                      
 </script>
 </body>
 </html>';
 $subject = "Report";
 $headers = 'MIME-Version: 1.0';
 $headers  = "From:schoolreport@pearlgateconsult.com\r\n";
 $headers .= "Content-type: text/html\r\n";
 $to = "$email";

 $mail_result = mail($to, $subject, $mail_body, $headers);

  if ($mail_result) {
    mysqli_query($con_path, "UPDATE classscore SET emailsent=1 WHERE email='$email' LIMIT 1");
  }

?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<?php echo $mail_body; ?>
<body>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...