[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как отправить в письме инфрмацию из базы MySQL
Хиросим
Здравствуйте, уважаемые!

Вроде задача стандартная но по форуму не нашел подобного.
В общем в базе данных формируется таблица с заказанными покупателем товарами, при заказе отсылается письмо с данными о покупателе, которые он завел в форму. Вот я хочу сделать чтобы вместе с данными о покупателе из POST массива, в письмо попадал еще и список заказанного товара. Причем делать письмо в формате html не хочу... письмо придет мне а мне на красоту наплевать.
Так вот как я мыслю...
1. Делаю выборку из бд по конкретному заказу
$result_zakaz = mysql_query("SELECT * FROM zakaz WHERE zak_num='$zak_number'", $db);
$zakaz = mysql_fetch_array($result_zakaz);

2. Вот тут я совсем не уверен, что использую правильную функцию, но -
создаю первую строку в теле письма с ключами массива zakaz, чтобы было понятно в каком порядке выводятся данные о товаре:
$message = array_keys ($zakaz);

2. Далее в цикле
while ($zakaz= mysql_fetch_array($result_zakaz))

Делаю строку из этого массива функцией
$string_zakaz = implode ($zakaz);

3. И дописываю строку в переменную message
$message = $message.\n.$string_zakaz;

(в правильности синтаксиса переноса строки не уверен, буду благодарен за исправления)

В итоге получится несколько строк с данными о товаре в заказе.
Вот хочу проконсультироваться на сколько правильный алгоритм, возможно у кого то есть более светлые мысли на эту тему.
twin
Цитата
в правильности синтаксиса переноса строки не уверен

так начни с этого. куда без синтаксиса то?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Хиросим
twin,
с синтаксисом я разберусь... мне сам алгоритм важен.. а то засяду код точить на сутки, а окажется что все не так надо было делать....
twin
Хочешь научиться плавать без воды?
Учи синтаксис говорю. mad.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
segods
Как то так будет:
$result_zakaz = mysql_query("SELECT * FROM zakaz WHERE zak_num='$zak_number'", $db);
$zakaz = mysql_fetch_array($result_zakaz);
while (list($key, $value) = each($zakaz))
{$message.=$key." = ".$value."\n";}


Цитата
с синтаксисом я разберусь... мне сам алгоритм важен.. а то засяду код точить на сутки, а окажется что все не так надо было делать....

Вообще у тебя неправельный подход, так не напишешь и простые вещи.
Лучше сутки удели на чтение самоучителя, сразу проверяя на практике примеры из книги.
Глядишь и то что раньше писал за сутки, напишешь за полчаса.
moserg777
Доброго времени суток!Требуется помощь!!!
Смысл в следующем-делаю интернет-магазин, при оформлении заказа клиентом на мою и его почту необходимо отправить письмо с данными по заказу:
1. Номер заказа
2.Данные о клиенте
3.Состав заказа
Все работает за исключением третьего пункта.Не получается вставить в письмо данные из таблицы MySql
КОНКРЕТНЕЕ:
имеется таблица zakaz_table в нее записывается состав заказа:
1. id_zakaz - номер заказа
2. name_categories - наименование категории
3. name_tovar - наименование товара
4. artikul - артикул товара
5. autor - производитель
6. pay_rub - цена
7. kol-количество
ПРИ ВЫВОДЕ ИНФОРМАЦИИ В ПИСЬМО НЕОБХОДИМО ОТРАЗИТЬ СОСТАВ ЗАКАЗА, но выводит только первую найденную строку в таблице, остальные не выводит.
Причем команда - echo выводит все строки(но на экран, что мне не надо), а команда return (из функции)- только первую найденную строку.

КОД ФУНКЦИИ ДЛЯ ОТБОРА СТРОК ПО ЗАКАЗУ:

1. function mail_show_zakaz1($id_zakaz)
2. {//$id_zakaz - входной параметр в функцию - номер заказа в системе
3. $conn = db_connect();//соединение с БД(через функцию)
4. //формируем запрос к таблице с составом заказа
5. $query11 = "SELECT * FROM zakaz_table WHERE id_zakaz = '".$id_zakaz."'";
6. //присваиваем переменной результат запроса
7. $result11 = @$conn->query($query11);
8. //если результат запроса отрицательный - останавливаем функцию
9. if (!$result11)
10. {return false;}
11. elseif ($result11)//ИНАЧЕ ЕСЛИ ЗАПРОС ПРОШЕЛ
12. {
13. $result11 = db_result_to_array($result11);//создаем массив
14. $mass1 = array();//создаем еще один массив для хранения выборки по составу корзины
15. $i=1;//устанавливаем значение счетчика
16. foreach ($result11 as $row)//перебираем массив с данными по номеру заказа в таблице zakaz_table
17. {
18. $id = $row['id_zakaz']; // номер заказа в системе
19. $name_categories = $row['name_categories'];//категория товаров
20. $name_tovar = $row['name_tovar'];//название товара
21. $artikul = $row['artikul'];//артикул
22. $autor = $row['autor'];//производитель
23. $pay_rub = $row['pay_rub'];//стоимость
24. $kol = $row['kol'];//количество
25. $summa_rub = $row['summa_rub'];//итоговая сумма за наименование
26. //выводим результаты в переменную
27. $zakaz = "
28. <b>Запись :</b>&nbsp;&nbsp;".$i."<br/>
29. <b>N заказа :</b>&nbsp;&nbsp;".$id."<br/>
30. <b>Категория товара :</b>&nbsp;&nbsp;".$name_categories."<br/>
31. <b>Наименование товара :</b>&nbsp;&nbsp;".$name_tovar."<br/>
32. <b>Артикул товара :</b>&nbsp;&nbsp;".$artikul."<br/>
33. <b>производитель :</b>&nbsp;&nbsp;".$autor."<br/>
34. <b>Цена :</b>&nbsp;&nbsp;".$pay_rub."&nbsp;&nbsp;руб.<br/>
35. <b>Количество :</b>&nbsp;&nbsp;".$kol."&nbsp;&nbsp;шт.<br/><br/>
36. <b>Итого за наименование:</b>&nbsp;&nbsp;".$summa_rub."&nbsp;&nbsp;руб.<br/><hr/><br/>
37. ";
38. $mass1[] = $zakaz;//добавляем переменную в новый массив
39. $i++;//увеличиваем счетчик на один после каждого цикла
40. } //ЗАКРЫВАЕМ ПЕРЕБОР МАССИВА
41. while (list($key, $val) = each($mass1))//перебираем новый массив с полученными результатами
42. return $val.'<br/>';//выводим результаты в письмо !!!!ЕСЛИ ПОМЕНЯТЬ return на echo ТО ВСЕ ВЫВОДИТСЯ КАК НАДО-НО НА ЭКРАН!!!А НЕ В ПИСЬМО!!!
43. }//ЗАКРЫВАЕМ ЕСЛИ ЗАПРОС ПРОШЕЛ
44. }//ЗАКРЫВАЕМ ФУНКЦИЮ

КОД ПИСЬМА:

1. //------- ОПРЕДЕЛЯЕМ ПЕРЕМЕННЫЕ ДЛЯ ОТПРАВКИ ПИСЬМА АДМИНУ --------------------------------------------------///
2. //определяем переменные сессии КОНТАКТНЫЕ ДАННЫЕ ПОКУПАТЕЛЯ 3. $user_name = cutty($_SESSION['client_name']);//переменная сессии - ИМЯ ПОКУПАТЕЛЯ
4. $user_email = cutty($_SESSION['client_email']);//переменная сессии - ЕМЕЙЛ ПОКУПАТЕЛЯ
5. $user_telefon = cutty($_SESSION['client_telefon']);//переменная сессии - ТЕЛЕФОН ПОКУПАТЕЛЯ
6. $cart = $_SESSION['cart'];//переменная корзины
7. //определяем переменные сессии АДРЕС ДОСТАВКИ
8. $client_strana_dostavka = 'Самовывоз';//переменная СТРАНА ДОСТАВКИ
9. $client_index_dostavka = 'Самовывоз'; //переменная ИНДЕКС ДОСТАВКИ
10. $client_region_dostavka = 'Самовывоз'; //переменная РЕГИОН ДОСТАВКИ
11. $client_gorod_dostavka = 'Самовывоз'; //переменная ГОРОД ДОСТАВКИ
12. $client_strit_dostavka = 'Самовывоз'; //переменная УЛИЦА ДОСТАВКИ
13. $client_dom_dostavka = 'Самовывоз'; //переменная ДОМ ДОСТАВКИ
14. $client_kvartira_dostavka = 'Самовывоз'; //переменная КВАРТИРА
15. $client_readmy_adres_dostavka = 'Самовывоз';
16. ///----------------------------- ОТПРАВКА СООБЩЕНИЯ НА ЭЛЕКТРОННУЮ ПОЧТУ АДМИНА ------------------------------///
17. //сoздаем переменную для текущей даты и времени
18. $var_date = date("Y-m-d H:i:s");
19. //ФОРМИРУЕМ ЗАГОЛОВКИ ПИСЬМА
20. $to = $mail_admin;//переменная с адресом электронной почты на который отправляется сообщение
21. $subject = 'РЕГИСТРАЦИЯ НОВОГО ЗАКАЗА'; //пeременная $subject формирует тему письма
22. $from = $user_email;//создаем в письме заголовок - от кого письмо
23. $headers = "From: <".$from.">\r\n";
24. $headers .= "MIME-Version: 1.0\r\n";//Указываем правильный MIME-тип сообщения
25. $headers .= "Content-type:text/html; charset=\"windows-1251\" r\n";//задаем кодировку
26. ///------------------------------- 4.3. формируем сообщение ------------------------------------------------------///
27. $message =
28. '<html>
29. <head>
30. <title>РЕГИСТРАЦИЯ НОВОГО ЗАКАЗА</title>
31. </head>
32. <body>
33. <table cellpadding="0" cellspacing="0" border="0" width="95%">
34. <div style="margin-left: 10%; margin-right: 10%; padding: 10px; border: 1px; border: solid; border-color: #3CF;">
35. <table cellpadding="0" cellspacing="0" border="0" width="100%">
36. <tr>
37. <td width="100%" align="left"><p>
38. <img src="http://'.$_SERVER['SERVER_NAME'].'/images/image_warning/shopping-bag.png" width="50" height="50">
39. </tr>
40. <tr>
41. <td width="100%" align=""><p style="color: green;"><b>У ВАС НОВАЯ РЕГИСТРАЦИЯ ЗАКАЗА :</b></p></td>
42. </tr>
43. <tr>
44. <td width="100%" align=""><p>
45. <b style="color: green;">НОМЕР ЗАКАЗА :</b>&nbsp;&nbsp;'.$id_zakaz.'<br/><br/>
46. <b style="color: green;">ПОКУПАТЕЛЬ :</b><hr/><br/>
47. <b>Статус покупателя :</b>&nbsp;&nbsp;'.$status_user.'<br/>
48. <b>Имя покупателя :</b>&nbsp;&nbsp;'.$user_name.'<br/>
49. <b>Адрес email покупателя :</b>&nbsp;&nbsp;'.$user_email.'<br/>
50. <b>Телефон покупателя :</b>&nbsp;&nbsp;'.$user_telefon.'<br/>
51. <b>Время регистрации заказа в системе :</b>&nbsp;&nbsp;'.$var_date.'<br/><br/>
52. <b style="color: green;">ДАННЫЕ ПО ЗАКАЗУ :</b><hr/><br/>
53. <b>Способ оплаты:</b>&nbsp;&nbsp;'.($_SESSION['client_variant_oplata']).'<br/>
54. <b>Способ доставки:</b>&nbsp;&nbsp;'.($_SESSION['client_variant_dostavca']).'<br/>
55. <b style="color: green;" >СОСТАВ ЗАКАЗА :</b><hr/><br/>
56. '.mail_show_zakaz1($id_zakaz).'<br/><br/>
57. </p><b style="color: green;">ПОЯСНЕНИЕ К ЗАКАЗУ :</b><hr/><br/>'.$client_readmy_adres_dostavka.'<br/>
58. </td>
59. </tr>
60. </table>
61. </div>
62. </table>
63. </body>
64. </html>';
65. $message = mb_convert_encoding($message,"windows-1251","UTF-8");//преобр из кодировки "UTF-8" в кодировку "windows-1251"
66. $subject = mb_convert_encoding($subject,"windows-1251","UTF-8");//преобр из кодировки "UTF-8" в кодировку "windows-1251"
67. ///---------------------------- отправляем письмо АДМИНУ --------------------------------------------------///
68. @mail($to,$subject,$message,$headers);

ВСЕ РАБОТАЕТ КРОМЕ ТОГО ЧТО СОСТАВ ЗАКАЗА ВЫВОДИТ В ПИСЬМО ТОЛЬКО ПЕРВУЮ НАЙДЕННУЮ СТРОКУ.

ВЫГЛЯДИТ В ПИСЬМЕ ТАК:

СОСТАВ ЗАКАЗА :

Запись : 1
N заказа : 37
Категория товара : МЕДИЦИНСКИЕ ИЗДЕЛИЯ С НАПОЛНИТЕЛЕМ ИЗ МИКРОСФЕР ООО АЛЬСАРИЯ
Наименование товара : ПОДУШКА 40Х50
Артикул товара : AR111
производитель : ООО Альсария
Цена : 5500.00 руб.
Количество : 1 шт.

Итого за наименование: 5500.00 руб.

А НАДО ЧТОБЫ ВЕСЬ СОСТАВ ЗАКАЗА БЫЛ,НАПРИМЕР:
СОСТАВ ЗАКАЗА :

Запись : 1
N заказа : 37
Категория товара : МЕДИЦИНСКИЕ ИЗДЕЛИЯ С НАПОЛНИТЕЛЕМ ИЗ МИКРОСФЕР ООО АЛЬСАРИЯ
Наименование товара : ПОДУШКА 40Х50
Артикул товара : AR111
производитель : ООО Альсария
Цена : 5500.00 руб.
Количество : 1 шт.

Итого за наименование: 5500.00 руб.
________________________________________________

Запись : 2
N заказа : 37
Категория товара : МЕДИЦИНСКИЕ ИЗДЕЛИЯ С НАПОЛНИТЕЛЕМ ИЗ МИКРОСФЕР ООО АЛЬСАРИЯ
Наименование товара : ПОДУШКА 17Х50
Артикул товара : AR222
производитель : ООО Альсария
Цена : 5000.00 руб.
Количество : 1 шт.

Итого за наименование: 5000.00 руб.

Прошу помощи, если вдруг кто то сталкивался уже с такой проблемой?Заранее благодарен.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.