필자가 작성한 스크립트에 문제가있는 것은 단순히 데이터베이스에서 항목을 선택하고 사용자에게 전자 메일을 보내 사용자와 관련된 항목을 업데이트하는 것입니다. 이메일 사용자 기능은 개별 사용자에게 필터링되는 항목과 동일하게 작동합니다. 그러나 나는 전자 메일이 데이터베이스에 항목이 나타나는 동일한 횟수만큼 전송되는 문제가 있습니다. 전자 메일에는 동일한 내용이 들어 있습니다 (4 개의 항목이 모두 동일한 전자 메일에 나타나지만 예제로 4 번 전송되었습니다). 메일러() 함수는 uniqueUsers 배열에 실행해야 내 분석에서PHP - foreach 문 외부에서 반복되는 스크립트
mysql_select_db("WBLResources", $con) or die ("Error selecting specified database on mysql server: ".mysql_error());
$query = "SELECT * FROM `Bookings` WHERE `updated` > '" . $date . "'";
$result = mysql_query($query);
$numOfRows = mysql_num_rows($result);
if($numOfRows < 1){
exit();
};
for ($i = 0; $i < $numOfRows; $i++) {
$row = mysql_fetch_array($result);
$result_array[$i] = array($row["equipment_name"],
$row["user"],
$row["approved"],
$row["name"],
$row["updated"],
$row["start"],
$row["end"]);
};
return $result_array;
};
:
$data = getData();
$uniqueUsers = array();
foreach($data as $item){
$user = $item[1];
$name = $item[3];
$array = array($user, $name);
if(!in_array($array, $uniqueUsers)){
array_push($uniqueUsers, $array);
};
};
echo print_r($uniqueUsers);
echo "<br>";
echo "<hr>";
foreach($uniqueUsers as $user){
$email = $user[0];
$name = $user[1];
$fullName = explode(" ", $name);
$firstName = $fullName[0];
$updates = "";
echo $email;
echo "<br>";
echo $name;
echo "<br>";
foreach($data as $item){
if($user[0] == $item[1]){
$equipmentName = $item[0];
$approved = $item[2];
$start = $item[5];
$end = $item[6];
$updates .= $approved . " - " . $equipmentName . " (Booked from " . date('l, jS F', strtotime($start)) . " to " . date('l, jS F', strtotime($end)) . ")";
$updates .= "<br>";
};
};
echo $updates;
echo "<hr>";
mailer($email, $firstName, $updates);
};
이것은 GetData의() 스크립트입니다
이
메일 링 스크립트입니다. ` ,`기능 메일러 ($ 이메일, $ firstName을, $ 업데이트) {$mail = new PHPMailer;
$subject = "Resource Bookings";
$htmlMessageBody = "<div style=font-size:10.0pt;font-family:'Arial',sans-serif;color:black;mso-fareast-language:EN-GB'>Dear " . $firstName . ",<br><br>The following resource bookings have been updated: <br><br>" . $updates . "<br><br>Many thanks,<br>TSW Support</div>";
//$mail->SMTPDebug = 3; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = '#######'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '###@####.co.uk'; // SMTP username
$mail->Password = '######';
$mail->SMTPSecure = 'tls';
$mail->Port = 25; // TCP port to connect to
//$mail->SMTPDebug = 3;
$mail->setFrom('####@#####.co.uk', 'TSW Training Group');
$mail->addAddress($email, $firstName); // Add a recipient
$mail->addReplyTo('#####@######.co.uk', 'TSW Training Group');
$mail->addCC("#####@#####.co.uk", "Support");
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $htmlMessageBody;
//$mail->AltBody = $plainMessageBody;
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
};
} :
Array (
[0] => Array (
[0] =>
[1] =>)
[1] => Array (
[0] => ####@###.co.uk
[1] => Username)
[2] => Array (
[0] => ####@###.co.uk
[1] => Username)
[3] => Array (
[0] => #####@###.co.uk
[1] => Username)
[4] => Array (
[0] => #####@###.co.uk
[1] => Username)
[5] => Array (
[0] => ######@###.co.uk
[1] => Username)
[6] => Array (
[0] => #####@###.co.uk
[1] => Username))
메일러 기능 : 이것은 내가 10 분 전으로 당겨 그의 조각입니다
도움이 될 것 같습니까?
$ array를 만들 때마다 이전 값과 동일한 값이더라도 다른 in_array 검사가 작동하지 않으므로 in_array 검사가 작동하지 않습니다. – zenwraight