2016-05-18 15 views
0

Ich muss eine E-Mail-Warnung senden, wenn ein neuer Datensatz hinzugefügt wird, aber die Tabelle hat auch Eingabefelder und ich brauche keine Warnung, wenn ein Benutzer dieses Eingabefeld bearbeitet.PHP MySQL - E-Mail-Warnung senden, wenn ein neuer Datensatz hinzugefügt wird, aber

Ich habe eine Datenbank, die für Geräte Liefertermine verwendet wird. Ein Benutzer plant eine Lieferung für ein Equipment und gibt das Datum in eine Backend-Datenbank (SQL Server) ein.

Ich erstellte eine PHP-Anwendung, die die Back-End-Datenbank untersucht und die Gesamtzahl der Lieferungen auf einen JQuery-Kalender legt.

enter image description here

Wenn der Benutzer klickt auf einen bestimmten Tag auf dem Kalender, zieht er eine Tabelle, die folgende zeigt:

Date 
Equipment 
Customer 

Ich habe dann eine MySQL-Tabelle, die in diese Informationen schiebt meine lokale msyql-Tabelle mit den folgenden Feldern:

AssignedPerson 
Status 
Comments 

Der Benutzer kann dann ihre Notizen zur Lieferung machen.

Das Problem ist manchmal die Liefertermine ändern oder eine neue Lieferung hinzugefügt wird und wir sind nicht bewusst, es sei denn, wir überprüfen ständig die php app.

Ich möchte eine Warnung senden, wenn ein neuer Datensatz hinzugefügt wird, aber ich brauche keine Warnung, wenn ein Benutzer die Tabelle aktualisiert.

Hier ist der Code, den ich habe, wenn ein Benutzer die Tabelle aktualisiert. Wieder ich nur, wenn eine Warnung für, wenn ein neuer Datensatz in die MySQL-Tabelle von SQL-Backend-Datenbank hinzugefügt wird:

include('./PHPMailer-master/class.phpmailer.php'); 

    servername_wamp = "localhost"; 
    $username_wamp = "root"; 
    $password_wamp = ""; 



      if(isset($_POST['id'])) 
      { 
      $id=mysql_escape_String($_POST['id']); 
      $AssignedPerson=mysql_escape_String($_POST['AssignedPerson']); 
      $ShipDate=mysql_escape_String($_POST['ShipDate']); 
      $Status=mysql_escape_String($_POST['Status']); 
      $Numofmachines=mysql_escape_String($_POST['Numofmachines']); 
      $Model=mysql_escape_String($_POST['Model']); 


      $a = mysql_connect($servername_wamp, $username_wamp, $password_wamp) or die(mysql_error()); 
      $b = mysql_select_db('orders', $a) or die(mysql_error()); 

      $result2 = mysql_query("SELECT * FROM orders WHERE OrderNumber='$OrderNumber' LIMIT 1",$a) or die(mysql_error()); 
      $rs=mysql_fetch_row($result2); 
     if ($rs) { 


if (($rs['ShipDate_log']=='')&&($Status=='Assigned')) { 
$sd=", ShipDate_log='".$ShipDate."'"; 


    $message1982 = " 
      <ul> 

      <li> <strong>ID:</strong> $id </li> 
      <li> <strong><font color='red'>Tech:</font></strong> $AssignedPerson </li> 
      <li> <strong>Ship Date:</strong> $ShipDate </li> 
      <li> <strong>Customer:</strong> $Customer </li> 
      <li> <strong>Status:</strong> $Status </li> 
      <li> <strong>Sales Rep:</strong> $SalesRep </li> 
      <li> <strong>Order Number:</strong> $OrderNumber</li> 
      <li> <strong>Number Of Machines:</strong> $Numofmachines </li> 


      </ul> 
      "; 







$mail    = new PHPMailer(); // defaults to using php "mail()" 
$body    = $message1982; 
$mail->IsSMTP(); // enable SMTP 
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only 
$mail->SMTPAuth = false; // authentication enabled 

$mail->Host = "10.10.10.38"; 
$mail->Port = 25; // or 587 
$mail->IsHTML(true); 

$mail->SetFrom("[email protected]"); 
$address = "[email protected]"; 
$mail->AddAddress($address, "John"); 
$mail->Subject = ''. $Customer. ' Ticket Assigned'; 

$mail->MsgHTML($body); 






if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 
+0

also, was scheint das Problem zu sein? Sie haben darauf hingewiesen, was Sie möchten und nicht gerne tun. ein Auslöser vielleicht? Wenn das ist, was die Frage ist über –

+0

** WARNUNG **: Wenn Sie nur lernen, PHP, bitte, lernen Sie nicht die veraltete ['mysql_query'] (http://php.net/manual/en/function.mysql- query.php) Schnittstelle. Es ist schrecklich und wurde in PHP 7 entfernt. Ein Ersatz wie [PDO ist nicht schwer zu erlernen] (http://net.tutsplus.com/tutorials/php/why-you-should-beusing-phps-pdo- for-database-access /) und ein Leitfaden wie [PHP The Right Way] (http://www.phptherightway.com/) hilft Best Practices zu erklären. – tadman

+0

Ich habe auch keine Ahnung, warum Sie Werte, die für die Anzeige verwendet werden, entkommen. Die korrekte Funktion hierfür ist ['htmlspecialchars'] (http://php.net/manual/en/function.htmlspecialchars.php). – tadman

Antwort

0

Viele Leute Spalten wie created_at und updated_at hinzufügen. Wenn Sie einen Datensatz erstellen, können Sie diesen beiden Spalten denselben Wert zuweisen. Wenn diese Werte gleich sind, ist es ein brandneues Album. Wenn sie unterschiedlich sind, handelt es sich um einen vorhandenen Datensatz, der aktualisiert wurde.

0

Während des Einfügens erstellen Sie ein kleines Skript, das sich mit Google Mailing Services oder einer anderen Wahl verbindet und eine E-Mail mit einer vordefinierten E-Mail sendet, die zum Senden von E-Mails an Ihre gewünschte E-Mail-Adresse erstellt wird Neue E-Mail wird von [email protected] an [email protected] gesendet, wobei x eine E-Mail zum Senden und xxx der Empfänger ist.

Verwandte Themen