Автор Тема: Проблем с получаването на имейл  (Прочетена 974 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

aivanov

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 8
Проблем с получаването на имейл
« -: 20 Ноември 2015, 12:19:39 »
Чрез електронна кошница поръчвам няколко артикула и стигаме до момента на изпращане на поръчка, но не я записване в базата данни, а направо я изпращаме по емайл. При полувачане на обаче ми изписва само последният артикул.

<?php
      
include("includes/db.php");
      include(
"includes/functions.php");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Billing Info</title>
<script language="javascript">
      function validate(){
            var f=document.form1;
            if(f.name.value==''){
                  alert('Your name is required');
                  f.name.focus();
                  return false;
            }
            f.command.value='update';
            f.submit();
      }
</script>
</head>


<body>



         <table border="0" cellpadding="5px" cellspacing="1px" style="font-family:Verdana, Geneva, sans-serif; font-size:11px; background-color:#E1E1E1" width="100%">
      <?php      
    
echo '<tr bgcolor="#FFFFFF" style="font-weight:bold"><td>Serial</td><td>Name</td><td>Price</td><td>Qty</td><td>Amount</td></tr>';
      
                              
$max=count($_SESSION['cart']);
                              for(
$i=0;$i<$max;$i++){
                              
$pid=$_SESSION['cart'][$i]['productid'];
                              
$q=$_SESSION['cart'][$i]['qty'];
                              
$pname=get_product_name($pid);
                              if(
$q==0) continue;
                  
?>

                        <tr bgcolor="#FFFFFF"><td><?=$i+1?></td><td><?=$pname?></td>
                    <td>$ <?=get_price($pid)?></td>
                    <td><?=$q?></td>                    
                    <td>$ <?=get_price($pid)*$q?></td></tr>
            <?php                              
                        
}
                  
?>

                        <tr><td><b>Order Total: $<?=get_order_total()?></b></td></tr>
      
    </table>
    
      <?php  
      $contact_email 
= isset($_POST['EmailAddress']) ? $_POST['EmailAddress'] : '';
      
$contact_name = isset($_POST['FullName']) ? $_POST['FullName'] : '';
      
$contact_mobilen = isset($_POST['Mobilen']) ? $_POST['Mobilen'] : '';
      
$to ''// Мейла до който ще се изпращат съобщенията //
      
$subject ""// Тема //

      
$message '
      <table border="0" cellpadding="5px" cellspacing="1px" style="font-family:Verdana, Geneva, sans-serif; font-size:11px; background-color:#E1E1E1" width="100%">
      <tr bgcolor="#FFFFFF" style="font-weight:bold"><td>Serial</td><td>Name</td><td>Price</td><td>Qty</td><td>Amount</td></tr>
      <tr bgcolor="#FFFFFF"><td>'
.$i++.'</td><td>'.$pname.'</td>
      <td>$ '
.get_price($pid).'</td>
      <td>'
.$q.'</td>
      <td>$ '
.get_price($pid)*$q.'</td></tr>
      <tr><td><b>Order Total: '
.get_order_total().'</b></td></tr>
</table><br /><br />'


."Име:  $contact_name<br />"
."Мобилен:  $contact_mobilen<br />"
."Email:  $contact_email<br />"
."От адрес:  {$_SERVER['SERVER_NAME']}{$_SERVER['REQUEST_URI']}";

$headers "From: $contact_name <$contact_email>\n";
$headers 'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' "\r\n"
."Мобилен: $contact_mobilen\r\n"
."Reply-To: $contact_email\n"
."X-Mailer: PHP/".phpversion();
?>


             <?php
                  
if(empty($contact_name) || empty($contact_email))  {
            
?>
            
            
<form method="post" action="" enctype="multipart/form-data">
    <input type="hidden" name="command" />
      <div align="center">
        <h1 align="center">Billing Info</h1>
        <table border="0" cellpadding="2px">
            <tr><td><input name="FullName" id="input" type="text" onFocus="if(this.value =='Име и Фамилия' ) this.value=''" onBlur="if(this.value=='') this.value='Име и Фамилия'" value="Име и Фамилия"></td></tr>
            <tr><td><input name="EmailAddress" id="input" type="text" onFocus="if(this.value =='Email' ) this.value=''" onBlur="if(this.value=='') this.value='Email'" value="Email"></td></tr>
            <tr><td><input name="Mobilen" id="input" type="text" onFocus="if(this.value =='Мобилен' ) this.value=''" onBlur="if(this.value=='') this.value='Мобилен'" value="Мобилен"></td></tr>
            <tr><td>&nbsp;</td><td><input type="submit" value="Place Order" /></td></tr>
        </table>
      </div>
</form>
<?php
} elseif(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"$contact_email)) {
echo 
"<p><br><center>Моля въведете <br>валиден e-mail.</center></p>";

else {
mail$to$subject$message$headers );
echo 
"<br /><h3><center>Съобщението беше изпратено успешно!</center>";
}
?>


</body>
</html>

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 120
  • -Получени: 73
  • Публикации: 994
  • Кибик
Re: Проблем с получаването на имейл
« Отговор #1 -: 20 Ноември 2015, 18:41:26 »
Здравей, кода ти е трудно четим, но до колкото разбрах, струва ми се, че като присвояваш редовете на стринг, го презаписваш и така остава последния ред, а трябва да го добавяш ;)
например:
Код: PHP
  1. foreach ($array as $v) {
  2.     $html .= '<tr><td>' . $v['serial'] . '</td><td>' . $v['name'] . '</td><td>' . $v['price'] . '</td><td>' . $v['qty'] . '</td><td>' . $v['amount'] . '</td></tr>';
  3. }
  4.  
« Последна редакция: 20 Ноември 2015, 18:44:51 от HanKrum »
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

bulforce

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 1
  • -Получени: 8
  • Публикации: 67
Re: Проблем с получаването на имейл
« Отговор #2 -: 20 Ноември 2015, 18:43:13 »
Виждам, че въртиш тука:

Код: PHP
  1. $max=count($_SESSION['cart']);
  2. for($i=0;$i<$max;$i++){
  3. $pid=$_SESSION['cart'][$i]['productid'];
  4. $q=$_SESSION['cart'][$i]['qty'];
  5. $pname=get_product_name($pid);
  6. if($q==0) continue;
  7.  

И при всеки цикъл презаписваш стойноста на $pname която пък от своя страна ползваш по-долу при изпращането на емайла.
Можеш или в този цикъл да си записваш нещата в масив и долу в емайла отново да въртиш но този път масива. Или директно да преместиш тази въртележка долу в емайла.

Кода иначе изглежда страхотно, не губи надежда.


HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 120
  • -Получени: 73
  • Публикации: 994
  • Кибик
Re: Проблем с получаването на имейл
« Отговор #3 -: 20 Ноември 2015, 18:47:46 »
...
Кода иначе изглежда страхотно, не губи надежда.
???
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

bulforce

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 1
  • -Получени: 8
  • Публикации: 67
Re: Проблем с получаването на имейл
« Отговор #4 -: 20 Ноември 2015, 18:50:42 »
...
Кода иначе изглежда страхотно, не губи надежда.
???

Ми какво да му кажа на момчето, че ми извади очите ли?  :)

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 120
  • -Получени: 73
  • Публикации: 994
  • Кибик
Re: Проблем с получаването на имейл
« Отговор #5 -: 20 Ноември 2015, 20:43:42 »
:)
По точно трябваше да е така:
"Кода иначе изглежда страшно, но не губи надежда."
Ще се научи ;)
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: Проблем с получаването на имейл
« Отговор #6 -: 21 Ноември 2015, 18:50:58 »
@aivanov В един файл имаш html, javascript , php и inline css.  Това е за разстрел, поради няколко причини. Първо е нечетим. Освен това след време като се върнеш на него и трябва да направиш някаква промяна или да добавиш нещо, ще го гледаш като бебе в лампа.  Приеми го като препоръка.

aivanov

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 8
Re: Проблем с получаването на имейл
« Отговор #7 -: 23 Ноември 2015, 12:41:08 »
Виждам, че въртиш тука:

Код: PHP
  1. $max=count($_SESSION['cart']);
  2. for($i=0;$i<$max;$i++){
  3. $pid=$_SESSION['cart'][$i]['productid'];
  4. $q=$_SESSION['cart'][$i]['qty'];
  5. $pname=get_product_name($pid);
  6. if($q==0) continue;
  7.  

И при всеки цикъл презаписваш стойноста на $pname която пък от своя страна ползваш по-долу при изпращането на емайла.
Можеш или в този цикъл да си записваш нещата в масив и долу в емайла отново да въртиш но този път масива. Или директно да преместиш тази въртележка долу в емайла.

Кода иначе изглежда страхотно, не губи надежда.

Прехвърлих цикъла долу във формата за изпращане и татално забих и не ми идва на ум как да го оправя. Най - вероятно е нещо много просто, но немога да се сетя.

Цитат
               $max=count($_SESSION['cart']);
               for($i=0;$i<$max;$i++){
               $pid=$_SESSION['cart'][$i]['productid'];
               $q=$_SESSION['cart'][$i]['qty'];
               $pname=get_product_name($pid);
               if($q==0) continue;

   $message = "
   <table border='0' cellpadding='5px' cellspacing='1px' style='font-family:Verdana, Geneva, sans-serif; font-size:11px; background-color:#E1E1E1' width='100%'>
   <tr bgcolor='#FFFFFF' style='font-weight:bold'><td>Serial</td><td>Name</td><td>Price</td><td>Qty</td><td>Amount</td></tr>   
   <tr bgcolor='#FFFFFF'><td>".$i++."</td><td>".$pname."</td>
   <td>$ ".get_price($pid)."</td>
   <td>".$q."</td>
   <td>$ ".get_price($pid)*$q."</td></tr>
               }
   <tr><td><b>Order Total: ".get_order_total()."</b></td></tr>
</table><br /><br />"

Грешката идва }, при затварящата скоба между кавчиките в променливата $mеssage ""