2013-08-30 3 views
0

의견에 다음 제안 사항으로 인해 코드가 업데이트되었습니다. 이제 문제가 발생합니다. 내가 기준과 일치하는 모든 사용자에게 전자 메일 보내기

Warning: Invalid argument supplied for foreach() in /home/user/public_html/cronmailinitial.php on line 22 

를 얻을 여기에 오류가

<?php 
require_once "config.php"; 
$idspam = "1"; 
$sql = "SELECT * FROM company WHERE ID = '$idspam'"; 
$result = mysql_query($sql); 
while ($row = mysql_fetch_array($result)) 
{ 
    $companyname = $row['CompanyName']; 
} 
$sql = "SELECT * FROM users"; 
$result = mysql_query($sql); 
$rows = mysql_fetch_array($result); 
foreach($rows as $row) 
{ 
    $Agent = $row['username']; 
    $fullname = $row['fullname']; 
    $phone = $row['phone']; 
    $Agentmail = $row['mail']; 
    $checkstat = "New customer"; 
    $result = mysql_query("SELECT * FROM data WHERE Status = '$checkstat' AND Agent = '$Agent'"); 
    $rows = mysql_fetch_array($result); 
    foreach($rows as $row) 
     { 
     $LastName = $row['LastName']; 
     if (empty($row['ProductPriceUSD'])) { 
      $ProductPriceEUR = $row['ProductPriceEUR']; 
      $symbol = "&#8364;"; 
      $Productprice = ($ProductPriceEUR . $symbol); 
     } 
     if (empty($row['ProductPriceEUR'])) { 
      $ProductPriceUSD = $row['ProductPriceUSD']; 
      $symbol = "$"; 
      $Productprice = ($symbol . $ProductPriceUSD); 
     } 
     $CustomerPriceRAW = $row['CustomerPrice']; 
     $eur = "&#8364;"; 
     $email = $row['Email']; 
     $a = mt_rand(100000,999999); 
     $MD5Pass = md5($LastName . $a); 
     $type = "Initial"; 
     $sql = "SELECT * FROM emails WHERE AddedBy = '$Agent' ORDER BY RAND() LIMIT 1"; 
     $result = mysql_query($sql); 
     while ($row = mysql_fetch_array($result)) 
     { 
      $content = $row['Content']; 
      $subject = $row['Subject']; 
     } 
     $Newstatus = "Contacted"; 
     $Newline = "<br>"; 
     $replaceWord = array(

     "[name]" => $row['FirstName'], 
     "[lastname]" => $row['LastName'], 
     "[product]" => $row['ProductName'], 
     "[username]" => $row['CustomerUser'], 
     "[agent]" => $row['Agent'], 
     "[productssold]" => $row['ProductsSold'], 
     "[customerprice]" => ($CustomerPriceRAW . $eur), 
     "[password]" => ($LastName . $a), 
     "[productprice]" => $Productprice, 
     "[newline]" => $Newline, 
     ); 
     ob_start(); 
     include("./email/mailtemplate.php"); 
     $sendmsg = ob_get_clean(); 
     $message = $sendmsg; 
     $body = strtr($content, $replaceWord); 
     $headers = "From:".$companyname." ".$Agentmail."\r\n"; 
     $headers .= "MIME-Version: 1.0\r\n"; 
     $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
     $contactdate = date("Y-m-d"); 
     $sevendays = date('Y-m-d', strtotime("+7 days")); 
     $todo = "Followup"; 
     mysql_query("UPDATE data SET CustomerPass = '$MD5Pass', Status = '$Newstatus', Contacted = '$contactdate', SevenDays = '$sevendays', ToDo = '$todo'"); 
     mail($email, $subject, $body, $headers); 
    } 
} 

?> 

그리고 다음은 새로운 코드인가? 나는 모든 직원 (첫 번째 foreach)을 골라 각 고객에게 연락하고 싶다. 그래서 예입니다 : 에이전트 "요"를 이 어쨌든 할 생각이야 무슨 그

보내기 다른 전자 메일 템플릿 을 선택 그들 각각은 "존" 추가 한 모든 고객을 선택합니다. 미리 감사드립니다

답변

1

두 가지 :이 API는 사용되지 않습니다

  1. 변화 모든

    동안 ($ 행 =로 MYSQL_ASSOC ($ 결과))

에 더 비슷한 것

$rows = mysql_fetch_array($result); 
foreach($rows as $row) 
{ 
    .. do something with $row.... 
} 
+0

Heya, 나도 알아.하지만 지금은 변경하기에는 너무 늦었 어. 업데이트에서 개정 될거야. '$ result = mysql_query ("SELECT * FROM data WHERE Status = '$ checkstat'"); while ($ row = mysql_fetch_array ($ result))' 내가 말한 것처럼 'while'을 'foreach'로 변경하고 처음부터 전자 메일 템플리트 선택 코드를 마이그레이션하는 것보다 어디입니까? –

+0

mysql_fetch_array를 자신의 줄에 넣으십시오. 그것을 반복하지 마십시오. 이 호출의 결과를 사용하여 값을 반복하십시오. 배열을 반환합니다. – ethrbunny

+0

코드를 업데이트했지만 이번에는 새로운 오류가 발생합니다. –

관련 문제