【发布时间】:2012-10-30 00:10:39
【问题描述】:
我有一个名为“leads”的 mysql 数据库表,其中包含一个 id 列、一个 name 列和一个 email 列。我目前有用户从多个选择框中选择一个潜在客户,它作为一个数组从 html form 和 $_POST 方法返回。我将选择框项的值作为电子邮件列,在前端向用户显示的是名称列。但是,我希望能够返回两个值,电子邮件和名称,以供以后使用。我需要让电子邮件值能够在它们之间用逗号进行内爆,这样我以后可以使用 PHP 的 mail 函数向它们发送电子邮件。但是,当用户查看已发送的电子邮件时,我想向他们显示名称值。我已经读过我可以解析数组,或者使用 id 列集作为值,这似乎更实用,但是,我不确定我将如何去做。有任何想法吗?提前感谢您的帮助!
*更新*
基本上,登录网站的用户在 mysql 数据库中都有自己的线索。我需要他们能够转到“发送电子邮件”页面,在那里他们可以按名称选择一个或多个潜在客户。然后有一个主题字段和一个消息字段,以便他们可以编写电子邮件,然后我有一个“发送电子邮件”表单提交按钮。在他们单击“发送电子邮件”后,我想取回他们选择的潜在客户的电子邮件地址和姓名,以备后用。我需要用逗号分隔电子邮件地址,以便我可以通过 php 邮件功能发送它们......但重要的是,我希望将表单中的信息存储在名为“PendingEmails”的数据库表中,我将运行一个 cron 作业来运行一个脚本,该脚本会找到需要发送的电子邮件,然后发送它们... 发送电子邮件后,我需要将电子邮件中的名称、主题和消息放入单独的数据库,称为“SentEmails”。在网站的另一个页面上,我希望用户能够看到他们发送的所有电子邮件,但我希望他们看到他们发送邮件的人的姓名,而不是电子邮件地址。这就是我需要姓名和电子邮件的原因。我需要邮件功能的电子邮件,以及要显示给用户的名称。我喜欢您使用 id 并运行其余服务器端的想法,我只是不知道该怎么做。希望这会有所帮助。
这里是选择框:
<select data-placeholder="Select Lead(s) To Email..." multiple="true" class="chzn-container-multi" name="selectleads[]"style="width:505px;">
<?php
do {
?>
<option value="<?php echo $row_rsAllLeads['Email']?>"><?php echo $row_rsAllLeads['FullName']?></option>
<?php
} while ($row_rsAllLeads = mysql_fetch_assoc($rsAllLeads));
$rows = mysql_num_rows($rsAllLeads);
if($rows > 0) {
mysql_data_seek($rsAllLeads, 0);
$row_rsAllLeads = mysql_fetch_assoc($rsAllLeads);
}
?>
</select>
这是实际的表单操作:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
$startcode = $_POST['messagefield'];
$replaced = preg_replace( '/\\\\(?="|\')/', '', $startcode );
$selected = $_POST['selectleads'];
$collectedleads = implode(", ", $_POST['selectleads']);
$to = $collectedleads;
$subject = $_POST['subjectfield'];
$body = $replaced;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: " . $row_rs_CurrentUser['FirstName'] . " " . $row_rs_CurrentUser['LastName'] . " <" . $row_rs_CurrentUser['Email'] . ">";
if (mail($to, $subject, $body, $headers)) {
} else {
echo("<p>Message delivery failed...</p>");
}
}
您给我的代码,我尝试(但失败)编辑和制作:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
$startcode = $_POST['messagefield'];
$replaced = preg_replace( '/\\\\(?="|\')/', '', $startcode );
mysql_select_db($database_myBackOfficeConn, $myBackOfficeConn);
$collectedleads = implode(", ", $_POST['selectleads']);
//arrays to store email addresses and names
$emails = array();
$names = array();
foreach ($collectedleads as $id) {
mysql_query("SELECT Email, FullName FROM Leads
WHERE Id = " . mysql_real_escape_string($id));
while ($row = mysql_fetch_assoc()) {
$emails[] = $row['Email'];
$names[] = $row['FullName'];
}
}
$to = $collectedleads;
$subject = $_POST['subjectfield'];
$body = $replaced;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: " . $row_rs_CurrentUser['FirstName'] . " " . $row_rs_CurrentUser['LastName'] . " <" . $row_rs_CurrentUser['Email'] . ">";
if (mail($to, $subject, $body, $headers)) {
} else {
echo("<p>Message delivery failed...</p>");
}
}
?>
【问题讨论】:
-
不知道为什么这被否决了......我想我知道你在说什么,但你能发布一些代码吗?更容易谈论细节。
-
当然,我也有同感!为什么人们要拿走我的代表 LOL!
-
我发布的代码有帮助吗?
-
只是为了检查 - 您希望用户的电子邮件列表显示在
<select>中。用户选择一个选项,单击一个按钮,然后显示该电子邮件?这是交易吗? -
不,我在选择中显示了潜在客户的 Names,当用户选择一个时,他们选择的人的姓名和电子邮件将被发送到 mysql数据库,以及主题和消息... 然后,我将使用 cron 作业调用一个 php 脚本,该脚本将向提供的电子邮件发送一封电子邮件,并附上相应的主题和消息。然后,名称、主题和消息将被发送到一个名为 sentemails 的单独 mysql 数据库表中,我将有一个单独的网页,他们可以在其中查看已发送的电子邮件,但我希望他们能够看到潜在客户的名称,不是电子邮件...
标签: php html arrays forms parsing