vinpkl Posted November 19, 2008 Share Posted November 19, 2008 hi all i have an created email function that sends the product information from shopping cart to the customer. i have inserted loop outside the body of email that is showing all the results of products in loop corectly. But i m not able to send that loop results in the email as i m not able to insert that loop in the email body. my email script is here <?php if(isset($_REQUEST['submit'])) { $qry_p="select * from order_detail_table where customer_name='$log_id'"; $result_p=mysql_query($qry_p); $row_p=mysql_fetch_array($result_p); while($row_p=mysql_fetch_array($result_p)) { $product_name=$row_p['product_name']; $quantity=$row_p['quantity']; $shipping=$row_p['shipping']; $price=$row_p['price']; $total_cost=$row_p['total_cost']; } $to= $customer_log_id; $subject= "Shopping Order details with gadgetsonline.co.nz"; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From:[email protected]' . "\r\n"; $body="This is a detail bill.". " \n<br><br> -----------------------------------------------------------" ." \n<br> Product Details : ". " \n<br> Product Name = " .$product_name . " \n\n<br> Quantity = " .$quantity . " \n<br> Shipping cost= ".$shipping. " \n<br> Price= ".$price. " \n<br> Total cost= ".$total_cost. " \n<br> Payment Status =". "Pending"; if(mail($to,$subject,$body,$headers)) $msg2= "order mail sent!"; else $msg2= "order mail not sent!"; } ?> Link to comment https://forums.phpfreaks.com/topic/133316-solved-inserting-loop-in-email-body/ Share on other sites More sharing options...
gevans Posted November 19, 2008 Share Posted November 19, 2008 Hi vinpkl, You should include some error checks in you code to ensure that it's all working properly, for example; <?php $qry_p="select * from order_detail_table where customer_name='$log_id'"; $result_p=mysql_query($qry_p); if (!$result_p) die('Invalid query: ' . mysql_error()); ?> Try adding this and make sure it runs properly. Do you mean that the email currently has no product details when sent? Link to comment https://forums.phpfreaks.com/topic/133316-solved-inserting-loop-in-email-body/#findComment-693336 Share on other sites More sharing options...
vinpkl Posted November 19, 2008 Author Share Posted November 19, 2008 Hi vinpkl, You should include some error checks in you code to ensure that it's all working properly, for example; <?php $qry_p="select * from order_detail_table where customer_name='$log_id'"; $result_p=mysql_query($qry_p); if (!$result_p) die('Invalid query: ' . mysql_error()); ?> Try adding this and make sure it runs properly. Do you mean that the email currently has no product details when sent? hi thanks for reply. i wil include that in my script. The email at present send information of only one product. <?php $qry_p="select * from order_detail_table where customer_name='$log_id'"; $result_p=mysql_query($qry_p)or die (mysql_error()); $row_p=mysql_fetch_array($result_p); while($row_p=mysql_fetch_array($result_p)) { $product_name=$row_p['product_name']; $quantity=$row_p['quantity']; $shipping=$row_p['shipping']; $price=$row_p['price']; $total_cost=$row_p['total_cost']; } ?> vineet Link to comment https://forums.phpfreaks.com/topic/133316-solved-inserting-loop-in-email-body/#findComment-693338 Share on other sites More sharing options...
gevans Posted November 19, 2008 Share Posted November 19, 2008 If you want to get all your products in noe email you're going to need to do a few changes to your code, try the code bellow and see if it works for you; <?php if(isset($_REQUEST['submit'])) { $qry_p="select * from order_detail_table where customer_name='$log_id'"; $result_p=mysql_query($qry_p)or die (mysql_error()); $row_p=mysql_fetch_array($result_p); while($row_p=mysql_fetch_array($result_p)) { $array_p['product_name'][]=$row_p['product_name']; $array_p['quantity'][]=$row_p['quantity']; $array_p['shipping'][]=$row_p['shipping']; $array_p['price'][]=$row_p['price']; $array_p['total_cost'][]=$row_p['total_cost']; } $absolute_total = 0; for($i=0;$i<count($array_p['total_cost']);$i++) { $absolute_total += $array_p['total_cost'][$i]; } $to= $customer_log_id; $subject= "Shopping Order details with gadgetsonline.co.nz"; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From:[email protected]' . "\r\n"; $body="This is a detail bill.".."\n<br><br> -----------------------------------------------------------".." \n<br>"; for($j=0;$j<count($array_p['product_name']);$j++) { $body .= "Product Details : \n<br> Product Name = ".$array_p['product_name'][$j]." \n\n<br> Quantity = ".$array_p['quantity'][$j]." \n<br> Shipping cost= ".$array_p['shipping'][$j]." \n<br> Price= ".$array_p['price'][$j]." \n<br>"; } $body .= "Total cost= ".$absolute_total." \n<br> Payment Status = Pending"; if(mail($to,$subject,$body,$headers)) $msg2= "order mail sent!"; else $msg2= "order mail not sent!"; } ?> Give that a try, hopefully it will work ok for you. Link to comment https://forums.phpfreaks.com/topic/133316-solved-inserting-loop-in-email-body/#findComment-693345 Share on other sites More sharing options...
vinpkl Posted November 19, 2008 Author Share Posted November 19, 2008 hi gevans thanks very much. your code worked for me and i m getting the result that i needed. vineet Link to comment https://forums.phpfreaks.com/topic/133316-solved-inserting-loop-in-email-body/#findComment-693391 Share on other sites More sharing options...
vinpkl Posted November 19, 2008 Author Share Posted November 19, 2008 hi gevans i would like to ask you one more question. I have 3 row results in my order table and i when i echo them in the loop then i get only two row result with same query for three. But when i write <?php echo mysql_num_rows($result_p); ?> then i get result as 3. That is corect number of rows. If this is corect then why i am not able to print 3 rows. i m able to print only 2 rows. This is my code without email. just for test <?php $qry_p="select * from order_detail_table where customer_name='$log_id'"; $result_p=mysql_query($qry_p); $row_p=mysql_fetch_array($result_p); //echo mysql_num_rows($result_p); //this is giving me corect result. while($row_p=mysql_fetch_array($result_p)) { $product_name=$row_p['product_name']; $quantity=$row_p['quantity']; $shipping=$row_p['shipping']; $price=$row_p['price']; $total_cost=$row_p['total_cost']; //echo $qry_p ."<br>". $product_name.",".$quantity.",".$shipping.",".$price."<br>"; } ?> what could be the reason and how can i find out. vineet Link to comment https://forums.phpfreaks.com/topic/133316-solved-inserting-loop-in-email-body/#findComment-693417 Share on other sites More sharing options...
gevans Posted November 19, 2008 Share Posted November 19, 2008 hi gevans i would like to ask you one more question. I have 3 row results in my order table and i when i echo them in the loop then i get only two row result with same query for three. But when i write <?php echo mysql_num_rows($result_p); ?> then i get result as 3. That is corect number of rows. If this is corect then why i am not able to print 3 rows. i m able to print only 2 rows. This is my code without email. just for test <?php $qry_p="select * from order_detail_table where customer_name='$log_id'"; $result_p=mysql_query($qry_p); $row_p=mysql_fetch_array($result_p); //echo mysql_num_rows($result_p); //this is giving me corect result. while($row_p=mysql_fetch_array($result_p)) { $product_name=$row_p['product_name']; $quantity=$row_p['quantity']; $shipping=$row_p['shipping']; $price=$row_p['price']; $total_cost=$row_p['total_cost']; //echo $qry_p ."<br>". $product_name.",".$quantity.",".$shipping.",".$price."<br>"; } ?> what could be the reason and how can i find out. vineet SO when you run the above script you only get two rows from your database prinnitng? Link to comment https://forums.phpfreaks.com/topic/133316-solved-inserting-loop-in-email-body/#findComment-693451 Share on other sites More sharing options...
vinpkl Posted November 19, 2008 Author Share Posted November 19, 2008 hi gevans thanks once again for the reply. it was my mistake. it has been resolved. i got it working. everything is fine now. no issues. vineet Link to comment https://forums.phpfreaks.com/topic/133316-solved-inserting-loop-in-email-body/#findComment-693457 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.