Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2010, 21:50   #11
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

echo - и никаких бы вопросов))))
Не бойтесь вывода в браузер - это основной инструмент отладки.
Andkorol вне форума Ответить с цитированием
Старый 27.09.2010, 23:04   #12
agent007
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 53
По умолчанию

мда да что то не очень шибко на практике хочет работать, в итоге письмо приходит вообще пустым(

<?php
$message = '';
while($myrow=mysql_fetch_assoc($res ult)) {
$message.="Брэнд : " . $myrow['Brand'] . "\n";
$message.="Ёмкость : " . $myrow['Emkost'] . "\n";
$message.="Пусковой ток : " . $myrow['Puskt'] . "\n";
$message.="Длина : " . $myrow['Dlina'] . "\n";
$message.="Ширина : " . $myrow['Shirina'] . "\n";
$message.="Высота : " . $myrow['Vysota'] . "\n";
$message.="Цена : " . $myrow['Cena'] . "\n\nКонтактные данные:\n\n";
$message.="Фамилия : " . $myrow['Familia'] . "\n";
$message.="Имя : " . $myrow['Imia'] . "\n";
$message.="Адрес : " . $myrow['Adres'] . "\n";
$message.="Телефон : " . $myrow['Telefon'] . "\n\n=========\n\n";
}
echo $message;


mail("nevazhno@gmail.com", "On-line", $message);
?>
agent007 вне форума Ответить с цитированием
Старый 28.09.2010, 09:22   #13
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Что при этом выводит echo ?
Andkorol вне форума Ответить с цитированием
Старый 28.09.2010, 11:26   #14
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

а что за переменная $res ult ?
скиньте весь ваш код..
ssdm вне форума Ответить с цитированием
Старый 28.09.2010, 19:43   #15
agent007
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 53
По умолчанию

ну вообщето $result, просто пробел при вставке нажал нечаянно:
Код:
<?php   
include ("blocks/bd.php"); /*соеденяемся с БД*/ 
session_start(); 
if (isset ($_POST['Familia'])) {$Familia = $_POST['Familia'];} if ($Familia == '') {unset($Familia);} 
if (isset ($_POST['Imia'])) {$Imia = $_POST['Imia'];} if ($Imia == '') {unset($Imia);} 
if (isset ($_POST['Adres'])) {$Adres = $_POST['Adres'];} 
if (isset ($_POST['Telefon'])) {$Telefon = $_POST['Telefon'];} 
$PHPSESSID = session_id(); 
$result = mysql_query ("SELECT * FROM zakaz WHERE PHPSESSID='$PHPSESSID'",$db); 
$myrow = @mysql_fetch_array ($result); 



?> 

<!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> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
</head> 
<body> 




<?php 
if ( isset($Familia) && isset($Imia)) 
{ 
do {  

$Brand = $myrow["Brand"]; 
$Emkost = $myrow["Emkost"]; 
$Puskt = $myrow["Puskt"]; 
$Cena = $myrow["Cena"]; 
$Shirina=$myrow["Shirina"]; 
$Dlina=$myrow["Dlina"]; 
$Vysota=$myrow["Vysota"]; 

$Date= time(); 
  
$result2 = mysql_query("INSERT INTO `order` (Brand,Emkost,Puskt,Dlina,Shirina,Vysota,Cena,PHPSESSID,Familia,Imia,Adres,Telefon,Date) VALUES ('$Brand','$Emkost','$Puskt','$Dlina','$Shirina','$Vysota','$Cena','$PHPSESSID','$Familia','$Imia','$Adres','$Telefon','$Date')"); 

$result3 = mysql_query ("Delete FROM zakaz",$db); 


} 
while ($myrow = @mysql_fetch_array ($result)); 
printf("Спасибо, ваш заказ принят в обработку, в ближаешее время вам позвонят"); 







} 
else { 
print <<<HERE 
Пожалуйста, заполните все поля! 
<form>  
  <button onclick="javascript:history.back();">Вернутся назад</button>  
</form> 
HERE; 
} 

$resultm = mysql_query ("SELECT * FROM order WHERE PHPSESSID='$PHPSESSID'",$db); 
$myrow2 = @mysql_fetch_array ($resultm); 
$message = '';  
while($myrow2=@mysql_fetch_array ($resultm)) {  
$message.="Брэнд : " . $myrow2['Brand'] . "\n";  
$message.="Ёмкость : " . $myrow2['Emkost'] . "\n";  
$message.="Пусковой ток : " . $myrow2['Puskt'] . "\n";  
$message.="Длина : " . $myrow2['Dlina'] . "\n";  
$message.="Ширина : " . $myrow2['Shirina'] . "\n";  
$message.="Высота : " . $myrow2['Vysota'] . "\n";  
$message.="Цена : " . $myrow2['Cena'] . "\n\nКонтактные данные:\n\n";  
$message.="Фамилия : " . $myrow2['Familia'] . "\n";  
$message.="Имя : " . $myrow2['Imia'] . "\n";  
$message.="Адрес : " . $myrow2['Adres'] . "\n";  
$message.="Телефон : " . $myrow2['Telefon'] . "\n\n=========\n\n";  
}  
echo $message; 


mail("nnnn@gmail.com", "Заказ аккумулятора on-line", $message);  


?> 



<?php  
session_unset();  
session_destroy(); 
?> 
</body> 
</html>
это результат действия формы, на прошлой странице человек вводит имя фамилию адрес телефон, и передаёт в этот обработчик, также передаётся товар,не видимым для пользователя образом должно работать

Более подробно: пользователь добавил товары во временную таблицу, при оформлении данные из временной переносятся в таблицу заказа, юзер вводит свои данные и опа, на почту админа должно прийти ОДНО! письмо, пример:
Вам отправили запрос:
Товары: И ТУТ ИДЁТ ЦИКЛ ДЛЯ ВСЕЗ ЗАПИСЕЙ ТАБЛИЦЫ ЭТОГО ЮЗЕРА(определяем по session_id)
А чуть ниже ИМЯ, АДРЕС, ТЕЛЕФОН! один раз без цикла!
agent007 вне форума Ответить с цитированием
Старый 28.09.2010, 23:20   #16
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Да уж...
Вопросы к вам:
1.Добавляются ли товары во временную таблицу zakaz ?
2.Переносятся ли товары в таблицу order ?
3.Проверьте - возвращают ли ваши SELECT-ы результаты(как - описано ниже).
4.Что выводит echo $message ?(предполагаю что ничего)
Вопросы эти задаю вот почему - вы так щедро растыкали везде по коду "подавление ошибок"(@) - это значит,что ваши функции-обработчики результатов запросов прямо-таки засЫпали вас подсказками(ошибками) о том,почему же ничего не работает.

Советы:
1. isset() - просто проверяет,существует ли указанная переменная, а вот empty() - проверяет и существование переменной,и то,что она не пуста(или не равна 0(FALSE)) - потому в большинстве случаев предпочтительнее использовать empty()
Тогда не понадобятся эти ваши
Цитата:
if ($Familia == '') {unset($Familia);}
if ($Imia == '') {unset($Imia);}
2.Вот вы используете do ... while() - вы понимаете,что даже если ваш запрос не вернул результата(т.е. условие в while ложно) - вы всё равно выполните ваш INSERT INTO `order` .... один раз,с пустыми значениями?Используйте просто цикл while(){...}.

3.Вы (и многие другие) привыкли воспринимать результат запроса к Базе как должное(т.е. запрос полюбому вернёт результат),и эти ваши @ тому подтверждение - а вот этого частенько и не случается.Скорее всего в этом причина ваших пустых писем - у вас нигде нет проверки результатов запроса.Потому ваша mail() и шлёт письма независимо от того,есть ли в этом необходимость.
Проверяйте результат запроса(я имею ввиду SELECT-ы, разумеется):
PHP код:
$result musql_query("some_query");
if(
mysql_num_rows($result) > 0){
    
// ....обработка результатов запроса....
}
// а так можно увидеть количество строк в результате
echo mysql_num_rows($result); 
4.
Цитата:
А чуть ниже ИМЯ, АДРЕС, ТЕЛЕФОН! один раз без цикла!
Ну так вынесите из цикла эту информацию - ВСЁ В ВАШИХ РУКАХ)))!

5.Просто замечание - вы(возможно по советам дяди Попова ) добавляете в запросы $db(очевидно - дескриптор соединения с БД?) - вот только как-то избирательно(в SELECT & DELETE есть, в INSERT INTO - нет),вы уж определитесь,либо добавляйте,либо нет - вообще это делать не обязательно.

Вобщем - ждём ваших ответов на наши вопросы))!

Последний раз редактировалось Andkorol; 28.09.2010 в 23:27. Причина: Уточнение
Andkorol вне форума Ответить с цитированием
Старый 29.09.2010, 01:06   #17
agent007
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 53
По умолчанию

ответ:
1-3 всё работает инсерты и т.д. без проблем, вот передача в $message и вывод неидёт почему то
agent007 вне форума Ответить с цитированием
Старый 29.09.2010, 01:11   #18
agent007
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 53
По умолчанию

без mail всё работает без проблем с таблицами ещё раз повторюсь, но вы видимо не понимаете что я хочу от вас понять...
мне нужно банально в одно письмо загнать цикл, как сделать цикл{а внутри mail понятно }, но эффект будет столько писем сколько записей, мне нужно так: mail({ЦИКЛ как бы внутри}), т.е. в одном письме все записи необходимые
придиратся по поводу инсертов здесь неуместно, у меня цель другая
agent007 вне форума Ответить с цитированием
Старый 29.09.2010, 01:14   #19
agent007
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 53
По умолчанию

блин как этой идиотской $message присвоить текст и цикл одновременно?
agent007 вне форума Ответить с цитированием
Старый 29.09.2010, 01:31   #20
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
мне нужно банально в одно письмо загнать цикл, как сделать цикл{а внутри mail понятно }, но эффект будет столько писем сколько записей, мне нужно так: mail({ЦИКЛ как бы внутри}), т.е. в одном письме все записи необходимые
Опять 25 - я ж вам приводил результат такого цикла,это будет 1 письмо со списком всех товаров,которые выбрал данный клиент(с текущим session_id()).

Цитата:
блин как этой идиотской $message присвоить текст и цикл одновременно?
Элементарно,никаких проблем вообще.

Последний раз редактировалось Andkorol; 29.09.2010 в 01:47. Причина: error
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
php mail() Andrenik PHP 8 28.07.2010 15:37
использование функции mail() в Linux chnry PHP 0 14.04.2010 11:05
Функция mail() длинные домены (PHP) slavec PHP 6 17.03.2010 13:28
Проблема с кодировкой заголовков в функции mail Bendebej PHP 7 12.03.2010 13:28