【问题标题】:PHP MySQL - Send email alert when a new record is added butPHP MySQL - 添加新记录时发送电子邮件警报,但
【发布时间】:2016-05-18 16:10:36
【问题描述】:

我需要在添加新记录时发送电子邮件提醒,但表格也有输入字段,当用户编辑这些输入字段时我不需要提醒。

我有一个用于设备交付日期的数据库。用户将安排一件设备的交付,然后将日期输入后端数据库(SQL Server)。

我创建了一个 php 应用程序,它查看后端数据库并将交付的总数放在 jquery 日历上。

当用户点击日历上的某一天时,它会拉出一个显示以下内容的表格:

Date
Equipment
Customer

然后我创建了一个 mysql 表,该表将该信息推送到我的本地 msyql 表中,其中包含以下字段:

AssignedPerson
Status
Comments

然后,用户可以对交付进行注释。

问题有时是交货日期发生变化或添加了新的交货,除非我们不断检查 php 应用程序,否则我们不知道。

我想在添加新记录时发送警报,但当用户更新表格时我不需要警报。

这是用户更新表格时的代码。同样,我仅在从 SQL 后端数据库向 mysql 表中添加新记录时发出警报:

    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("nservice2@everyone.com");
$address = "bot@everyone.com";
$mail->AddAddress($address, "John");
$mail->Subject    = ''. $Customer. ' Ticket Assigned';

$mail->MsgHTML($body);






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

【问题讨论】:

  • 那么问题出在哪里?你已经指出了你喜欢和不喜欢做什么。也许是触发器?如果这就是问题所在
  • 警告:如果您只是学习 PHP,请不要学习过时的 mysql_query 接口。这很糟糕,已在 PHP 7 中删除。PDO is not hard to learn 之类的替代品和PHP The Right Way 之类的指南有助于解释最佳实践。
  • 我也不知道你为什么要转义用于显示的值。正确的函数是htmlspecialchars
  • 那么你缺少什么你想要的部分(或导致错误)?我了解您的程序,解释很好,尽管它只是缺少一个解释,指出您遇到问题的地方。您不想要更改日期的弹出窗口,但是您制作的弹出窗口在哪里?是您不知道如何创建弹出窗口的问题吗?请澄清

标签: javascript php jquery mysql


【解决方案1】:

很多人会添加created_atupdated_at 之类的列。创建记录时,您可以为这两个列分配相同的值。如果这些值相等,那就是一个全新的记录。如果它们不同,则它是已更新的现有记录。

【讨论】:

    【解决方案2】:

    在插入过程中,创建一个与谷歌邮件服务或任何其他选择连接的小脚本,并使用创建的预定义电子邮件发送电子邮件,以便将电子邮件发送到您想要的电子邮件地址,就像每次插入新记录时一样电子邮件从 x@gmail.com 发送到 xxx@xxx.xx ,其中 x 是用于发送的电子邮件,xxx 是接收者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 2016-07-24
      • 2020-11-09
      • 1970-01-01
      • 2017-12-30
      • 2012-04-06
      • 2021-04-25
      相关资源
      最近更新 更多