【问题标题】:Email contents of a row created mysql using PHP使用 PHP 创建的 mysql 行的电子邮件内容
【发布时间】:2017-11-30 19:01:01
【问题描述】:

我创建了一个用 php 生成的表。其中一列包含一个提交按钮。我希望提交按钮通过电子邮件发送该行的内容。例如,当按下按钮时,该行的第 2 列将是发件人的电子邮件地址,第 3 列将是主题,第 4 列将是电子邮件的正文。有没有办法做到这一点?

到目前为止,这是我的代码:

<form id="myform" method="post" action="" >

<div id='displaytodo'>

<?php 

//**********************************************
//*
//*  Connect to MySQL and Database
//*
//**********************************************

$db = mysqli_connect('localhost','root','root', 'EmilDB');

if (!$db)
{
    print "<h1>Unable to Connect to MySQL</h1>";
}


//**********************************************
//*
//*  SELECT from table and display Results
//*
//**********************************************

// CREATES SQL STATEMENT
$sql_statement  = "SELECT Date, Topic, subject, send_to, body, status     

";
$sql_statement .= "FROM ToDo ";
$sql_statement .= "ORDER BY DATE ";
//$sql_statement .= "WHERE state = 'CA' ";
//$sql_statement .= "ORDER BY lastname, firstname ";

// CREATES VARIABLE THAT COMBINES CONNECT STATEMENT AND SQL STATEMENT
$result = mysqli_query($db, $sql_statement);

// SETS COUNTER FOR THE WHILE STATEMENT THAT IS COMING UP
$outputDisplay = "";
$myrowcount = 0;

// IF THERE IS AN ERROR MESSAGE
if (!$result) {
    $outputDisplay .= "<p style='color: red;'>MySQL No:     
    ".mysqli_errno($db)."<br>";
    $outputDisplay .= "MySQL Error: ".mysqli_error($db)."<br>";
    $outputDisplay .= "<br>SQL: ".$sql_statement."<br>";
    $outputDisplay .= "<br>MySQL Affected Rows: 
      ".mysqli_affected_rows($db)."</p>";
 //print $outputDisplay;


  }else {

//// CREATES HEADER
    $outputDisplay  = "<h3>To Do</h3>";
//// CREATES TABLE
    $outputDisplay .= '<table border=1 style="color: black;">';
//// CREATES TABLE FIRST ROW
    $outputDisplay .= '<tr><th>Date</th><th>Topic</th><th>Subject</th>        
      <th>Send To</th><th>Body</th><th>Status</th><th>Email</th></tr>';

/// DETERMINE HOW MANY ROWS THERE ARE IN TABLE, TO BE USED IN FOR LOOP
$numresults = mysqli_num_rows($result);

/// FOR LOOP
for ($i = 0; $i < $numresults; $i++)
{
    if (!($i % 2) == 0)
    {
         $outputDisplay .= "<tr style=\"background-color: #F5DEB3;\">";
    } else {
         $outputDisplay .= "<tr style=\"background-color: white;\">";
    }

    $myrowcount++;

// CREATES TABLE
    $row = mysqli_fetch_array($result);

    $id  = $row['ToDo_int'];
    $date  = $row['Date'];
    $topic  = $row['Topic'];
    $subject = $row['subject'];
    $send_to = $row['send_to'];
    $body = $row['body'];

    $email = '<input type="submit" name= "email" value="Email">';




    $outputDisplay .= "<td>".$date."</td>";
    $outputDisplay .= "<td>".$topic."</td>";
    $outputDisplay .= "<td>".$subject."</td>";
    $outputDisplay .= "<td>".$send_to."</td>";
    $outputDisplay .= "<td>".$body."</td>";
    $outputDisplay .= "<td>".$status."</td>";
    $outputDisplay .= "<td>".$email."</td>";

    $outputDisplay .= "</tr>";



}
/// END TAG FOR TABLE

$outputDisplay .= "</table>";


        /// Email
//if(isset($_POST['$id'])){
if(isset($_POST['email'])){ 
    echo("works");

    mail('infot@gmail.com', 'subject', 'body');
}


}



?>

【问题讨论】:

  • 注意:mysqli 的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)$db-&gt;prepare("…") 程序接口是 PHP 4 时代引入的 mysqli API 的产物,不应在新代码中使用。
  • 您正在获取结果。为什么不将结果放入一个字符串中,然后将该字符串放入电子邮件中?
  • 您好,如何将对应的行放入字符串?我不确定如何编码我提交的按钮对应于同一行。谢谢!

标签: php mysql email


【解决方案1】:

我通过使用 ref mailto 解决方法解决了这个问题。这是我更改的行:

$email = '电子邮件';

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 2023-03-14
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多