2012-11-20 77 views
0

即時通訊試圖做的是從網站生成一個購物車,並讓它通過電子郵件發送。當我運行我的代碼時,該函數在頁面上運行,並不通過電子郵件發送,但它顯示正確。我不能得到我的函數的輸出存儲到一個將在電子郵件中工作的變量。這裏是我的代碼有...PHP電子郵件購物車沒有被填充循環

function emailcartview() { 
$total=0; 
$totalvalue=0; 
foreach($_SESSION as $name => $value) { 
    if ($value>0){ 
     if (substr($name, 0, 5)=='cart_'){ 
      $id = substr($name, 5, (strlen($name)-5)); 
      $get = mysql_query('SELECT id, name, cost, item_number FROM mydbname WHERE id='.mysql_real_escape_string((int)$id)); 


      $cart = array(); 
      while ($get_row = mysql_fetch_assoc($get)) { 
       $cart[] = array(
       'hsid' => $get_row['id'], 
       'cost' => $get_row['cost'], 
      $cost = $get_row['cost'], 
       'itemno' => $get_row['item_number'], 
       'name' => $get_row['name'], 
       'value' => $value, 
       $sub = $value*$cost, 
       $total += $sub, 
       $totalvalue = $value, 
       'realsub' => number_format($sub, 2), 
       ); 

       } 
       foreach($cart as $index => $record){ 
        global $emailcart; 
        $emailcart = "Item: {$record['itemno']} - {$record['name']} | Qty: {$record['value']} | Cost: {$record['cost']} x {$record['value']} = {$record['realsub']} <br>"; 
        echo $emailcart; 


      } 

     } 

    } 

} 
echo "Total : $".number_format($total, 2); 
} 


$emailSubject = 'Invoice Submission'; 
$webMaster = '[email protected]'; 


$companyName = $_POST['companyname']; 
$contactName = $_POST['contactname']; 
$contactEmail = $_POST['contactemail']; 
$teleNumber = $_POST['telenumber']; 
$billAddr = $_POST['billaddr']; 
$shipAddr = $_POST['shipaddr']; 
$neededBy = $_POST['neededby']; 
$cartprint .= emailcartview(); 

$body = " 
<br><hr><br> 
Company Name: $companyName <br> 
Contact Name: $contactName <br> 
Contact Email: $contactEmail <br> 
Telephone Number: $teleNumber <br> 
Billing Address: $billAddr <br> 
Shipping Address: $shipAddr <br> 
Date Needed: $neededBy <br> <br> 
<br><hr><br> 
$cartprint"; 

$headers = "From: [email protected]\r\n"; 
$headers .= "Content-type: text/html\r\n"; 
$success = mail($webMaster, $emailSubject, $body, $headers); 

?> 

有奇怪的事情恐怕相當多的殘餘香港專業教育學院嘗試和還沒有工作,不乾淨的。任何援助將不勝感激! Tylor。

Tylor。

回答

1

在函數emailcartview中,您需要生成字符串而不是echo語句,並且在函數結束時您應該返回該字符串。

檢查下面的代碼:

function emailcartview() { 
$total=0; 
$totalvalue=0; 
$str = ''; 
foreach($_SESSION as $name => $value) { 
    if ($value>0){ 
     if (substr($name, 0, 5)=='cart_'){ 
      $id = substr($name, 5, (strlen($name)-5)); 
      $get = mysql_query('SELECT id, name, cost, item_number FROM mydbname WHERE id='.mysql_real_escape_string((int)$id)); 


      $cart = array(); 
      while ($get_row = mysql_fetch_assoc($get)) { 
       $cart[] = array(
       'hsid' => $get_row['id'], 
       'cost' => $get_row['cost'], 
      $cost = $get_row['cost'], 
       'itemno' => $get_row['item_number'], 
       'name' => $get_row['name'], 
       'value' => $value, 
       $sub = $value*$cost, 
       $total += $sub, 
       $totalvalue = $value, 
       'realsub' => number_format($sub, 2), 
       ); 

       } 
       foreach($cart as $index => $record){ 
        global $emailcart; 
        $str. = "Item: {$record['itemno']} - {$record['name']} | Qty: {$record['value']} | Cost: {$record['cost']} x {$record['value']} = {$record['realsub']} <br>"; 

      } 

     } 

    } 


} 
$str. = "Total : $".number_format($total, 2); 
return $str; 
} 


$emailSubject = 'Invoice Submission'; 
$webMaster = '[email protected]'; 


$companyName = $_POST['companyname']; 
$contactName = $_POST['contactname']; 
$contactEmail = $_POST['contactemail']; 
$teleNumber = $_POST['telenumber']; 
$billAddr = $_POST['billaddr']; 
$shipAddr = $_POST['shipaddr']; 
$neededBy = $_POST['neededby']; 
$cartprint .= emailcartview(); 

$body = " 
<br><hr><br> 
Company Name: $companyName <br> 
Contact Name: $contactName <br> 
Contact Email: $contactEmail <br> 
Telephone Number: $teleNumber <br> 
Billing Address: $billAddr <br> 
Shipping Address: $shipAddr <br> 
Date Needed: $neededBy <br> <br> 
<br><hr><br> 
".emailcartview(); 

$headers = "From: [email protected]\r\n"; 
$headers .= "Content-type: text/html\r\n"; 
$success = mail($webMaster, $emailSubject, $body, $headers); 

?> 
+0

當我嘗試返回行,只發出了第一項.....據我瞭解它結束與返回指令循環以某種方式......你能解釋我可以怎麼做嗎? – user1834995

+0

添加代碼。現在檢查。 – VibhaJ

+0

這工作幾乎完美!我現在唯一的問題是我不能讓總回報,我只能使用一個回報?它是你在回報之上註釋掉的代碼。 – user1834995