【发布时间】: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->prepare("…")程序接口是 PHP 4 时代引入的mysqliAPI 的产物,不应在新代码中使用。 -
您正在获取结果。为什么不将结果放入一个字符串中,然后将该字符串放入电子邮件中?
-
您好,如何将对应的行放入字符串?我不确定如何编码我提交的按钮对应于同一行。谢谢!