2016-06-22 2 views
0

Ich habe Startdatum und Enddatum in meiner Tabelle wie unten.PHP-Code zum Senden von E-Mails mit der Funktion find in Forloop

startdate = 2016-01-01

Enddatum = 2016-06-20

Jetzt möchte ich E-Mail automatisch ab Enddatum vor 1 Monat schicken.

alles funktioniert gut ... E-Mail auch ..

Aber mein Problem ist, sendet i E-Mail an mehrere Benutzer senden möchten, wenn es zwei Zeilen in der Tabelle mit meinen Bedingungen passen dann E-Mail an beide gegangen ist die Benutzer.

Aber mein Code nur E-Mail nur an einzelne Benutzer..nicht alle Benutzer senden. Ich möchte E-Mail an alle Benutzer eins nach dem anderen gehen.

public function certificateExpired() 
    { 
     $this->autoRender = False; 
     $this->loadModel('Certificate'); 
     $data = $this->Certificate->find("all", array(
      'recursive' => -1, // should be used with joins  
      'fields' => array('User.*', 'Certificate.*'), 
      'joins' => array(
       array(
         'table' => 'users', 
         'alias' => 'User', 
         'type' => 'LEFT', 
         'conditions' => array('User.id = Certificate.user_id') 
        ) 
       ), 
       'conditions' => array('Certificate.is_expirable' => 1,'Certificate.status' => 1) 
     ));  
     foreach ($data as $row) {  
      $currentdate = date("Y-m-d"); 
      $date = $row['Certificate']['end_date']; 
      $newdate = strtotime($date .' -1 months'); 
      $enddate = date('Y-m-d', $newdate); 
      if ($currentdate >= $enddate) { 
      //For sending email 
      $data['email'] = $row['User']['email']; 
      $data['name'] = $row['User']['name']; 
      $data['document_name'] = $row['Certificate']['name']; 
      $data['templateid'] = 19; 
      $send_mail = $this->EmailFunctions->certificateExpiredTemplate($data); 
      if ($send_mail) { 
       $this->redirect(array('controller' => 'Dashboards', 'action' => 'shipperDashboard')); 
       }  
      } 
     }  
    } 
+0

Setzen Sie Ihre Weiterleitung außerhalb der foreach Schleife –

+1

Setzen Sie einfach die '$ this-> Umleitung (Array ('Controller' => 'Dashboards', 'Aktion' => 'shipperDashboard'));' außerhalb der foreach Schleife –

+0

in Ordnung ..Ich teste ... –

Antwort

1
foreach ($data as $row) {  
      $currentdate = date("Y-m-d"); 
      $date = $row['Certificate']['end_date']; 
      $newdate = strtotime($date .' -1 months'); 
      $enddate = date('Y-m-d', $newdate); 
      if ($currentdate >= $enddate) { 
      //For sending email 
      $data['email'] = $row['User']['email']; 
      $data['name'] = $row['User']['name']; 
      $data['document_name'] = $row['Certificate']['name']; 
      $data['templateid'] = 19; 
      $send_mail = $this->EmailFunctions->certificateExpiredTemplate($data);  
      } 
} 

$this->redirect(array('controller' => 'Dashboards', 'action' => 'shipperDashboard')); 

Ändern der wie oben foreach Schleife.

+1

Danke für Ihre Antwort ... aber ich habe Lösungen und ihre Arbeit .. –