我正试图根据表分类器表中所做的更改来更新数据库表。我通过JS发送信息,每个项目都发布到将处理更新的php页面。这很好用。我现在需要让它发送一封电子邮件,显示买家姓名和处理的新日期,这样我们就可以从中计算佣金。当我添加foreach循环时,我会收到45封单独的电子邮件,而不仅仅是一封
我需要添加另一个foreach循环吗?或者我还需要做其他事情吗
以下是php页面的代码:
<?php
require_once ('../db.php');
$conn = db_connect();
session_start();
$buyer = $_POST['buyer'];
$isbn = $_POST['isbn'];
$sku = $_POST['sku'];
$cost = $_POST['cost'];
$csmt = $_POST['csmt'];
$hold = $_POST['hold'];
$today = date("Y-m-d");
$n=1;
foreach($sku as $value){
// update inventory table
$conn->query("update inventory set cost = $cost, csmt = $csmt, hold = $hold, date_process = $today where sku = $sku");
$holdList[$n] = array('buyer' => $buyer,
'process date' => $today,
);
$n++;
}
//loop trough hold list and store in csv format
$csvLists = to_csv($holdList);
function to_csv( $array ) {
$csv = "";
if (count($array) == 0) return "No Information found";
## Grab the first element to build the header
$arr = array_pop( $array );
$temp = array();
foreach( $arr as $key => $data ) {
$temp[] = $key;
}
$csv = implode( ',', $temp ) . "'r'n";
## Add the data from the first element
$csv .= to_csv_line( $arr );
## Add the data for the rest
foreach( $array as $arr ) {
$csv .= to_csv_line( $arr );
}
return $csv;
}
function to_csv_line( $array ) {
$temp = array();
foreach( $array as $elt ) {
$temp[] = '"' . addslashes( $elt ) . '"';
}
$string = implode( ',', $temp ) . "'r'n";
return $string;
}
$conn->close();
$pricingReport = "The Latest Hold List has been completed. 'n";
$pricingReport .= $csvLists;
//send email when pricing specs are done
$to = "jimd@bookcellaronline.com";
$subject = "Hold List";
$body = $pricingReport;
mail($to, $subject, $body);
?>
更新:这是JS:
// to save the changes to the hold table
$("#holdSave").live('click', function() {
$('#holdTable tbody tr').each(function()
{
$.ajax({
type: "POST",
url: "holdSave.php",
dataType: "json",
data: ({buyer: $(this).find('#tableBuyer').html(), sku: $(this).find('#tableSku').html(), isbn: $(this).find('#tableISBN').html(),
cost: $(this).find('#tableCost').val(), csmt: $(this).find('#tableConsignment').val(),
hold: $(this).find('#tableHold').val()}),
success: function(data) {
} // end of success function
}); // end of ajax call
}); // end of holdtable tbody function
}); // end of holdSave event
每个记录都会单独调用ajax函数,因此您会收到每个记录的邮件。
您可以使用整个数据集创建一个JSON对象,然后调用ajax调用:
var arr={};
var cnt=0;
$('#holdTable tbody tr').each(function()
{
arr[cnt]={buyer: $(this).find('#tableBuyer').html(), sku: $(this).find('#tableSku').html(), isbn: $(this).find('#tableISBN').html(),
cost: $(this).find('#tableCost').val(), csmt: $(this).find('#tableConsignment').val(),
hold: $(this).find('#tableHold').val()};
cnt++;
}
然后,在ajax调用中传递这个对象:
$.ajax({
type: "POST",
url: "holdSave.php",
dataType: "json",
data: {data:arr},
success: function(data) {
} // end of success function
});
在php端,您可以解析每条记录的$_POST[‘data’]。
$data=$_POST['data'];
$data
的各个元素是您必须插入的记录。它们可以在一个简单的for循环中解析为$data[$i]['buyer']
、$data[$i]['sku']
。。。