|
|
|
| Отправляем письма, используя нижнию форму. Все работает.
Но создаю один в один еще один файл, только вместо
$address = $myrow["email"]; заношу другое поле $address = $myrow["2email"]; - второй email адрес.
И пишет, Письма не ушли
и кол-во отправленных писем считает по полю email, не по полю 2email: 5 шт.
<?
if(isset($_POST['name']))
{
/* пошел цикл отправки */
$res = mysql_query("SELECT * FROM example WHERE approved='1'");
$i = 0;
while($myrow = mysql_fetch_array($res))
{
$address = $myrow["email"];
$subject = "Про вас";
$message = "Здравствуйте!
";
$headers = "From: Газета <11@mail.ru>\r\ncontent-type:text/plain; charset=windows-1251\r\n";
$b = mail($address,$subject,$message,$headers);
$i++;
}
if($b) echo "<p class='nomistake'>Письма ушли</p>";
else echo "<p class='mistake'>Письма не ушли</p><br/ ><br/ >";
echo "<p class='nomistake'>Отправлено: "; echo $i; echo " шт.</p>";
}
?>
|
| |
|
|
|
|
|
|
|
для: Василий
(12.01.2012 в 20:32)
| | а в самой таблице есть ячейка "2email"? | |
|
|
|
|
|
|
|
для: ladan
(13.01.2012 в 00:19)
| | есть конечно | |
|
|
|
|
|
|
|
для: Василий
(13.01.2012 в 00:40)
| | А эти поля все заполненные или среди них есть пустые? | |
|
|
|
|
|
|
|
для: Василий
(12.01.2012 в 20:32)
| | Вообще-то в названиях полей таблиц и самих таблиц лучше цифры ставить в конце названия, а не в начале. | |
|
|
|
|
|
|
|
для: Lotanaen
(13.01.2012 в 15:08)
| | А эти поля все заполненные или среди них есть пустые?
да. есть и пустые поля.
в первом случае - где поле email - заполненны все 5 полей
в втором случае - где поле 2email - заполнено из 5 только одно поле | |
|
|
|
|
|
|
|
для: Василий
(13.01.2012 в 16:14)
| | задача решаема? | |
|
|
|
|
|
|
|
для: Василий
(13.01.2012 в 19:35)
| | что можно сделать? | |
|
|
|
|
|
|
|
для: Василий
(13.01.2012 в 21:48)
| | и все же, в чем может быть ошибка? | |
|
|
|
|
|
|
|
для: Василий
(13.01.2012 в 23:30)
| | в ожидании ответа | |
|
|
|
|
|
|
|
для: Василий
(14.01.2012 в 14:49)
| | Долго будете ждать, сами делайте...
Вот что Вы сделали для того, что бы решить проблему?
показывайте код... с Вашими комментариями, что и для чего... | |
|
|
|
|
|
|
|
для: Василий
(13.01.2012 в 16:14)
| | >А эти поля все заполненные или среди них есть пустые?
>
>да. есть и пустые поля.
>в первом случае - где поле email - заполненны все 5 полей
>в втором случае - где поле 2email - заполнено из 5 только одно поле
Куда отправлять письмо, если в 4/5 2email пусто? По этому и выводит "Не отправлено"
Сделайте уж тогда выборку если используете 2email
SELECT * FROM example WHERE approved='1' and 2email != null | |
|
|
|
|
|
|
|
для: Василий
(12.01.2012 в 20:32)
| | Да по идеи у вас даже в этом примере всегда должно выводить "Письма не ушли" так как переменная $b инициализируется в цикле, и по этому доступна только в цикле.
Проверка if($b) выдала бы ошибку Undefined variable(если честно не помню точно, может и false) или "Письма не ушли".
PS: Или может я чего пропустил? | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(15.01.2012 в 01:11)
| | Да, вы немного попутали пхп с срр либо с паскалем либо еще с чем-то к чему вы привыкли :D | |
|
|
|
|
|
|
|
для: Sfinks
(15.01.2012 в 02:08)
| | Такая доступность к переменным обезнадеживает xD | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(15.01.2012 в 02:13)
| | Не знаю что значит обезнадеживает, но даже в си переменная определенная за пределами цикла внутри цикла доступна. Цикл по-моему ни в одном языке не разграничивает область видимости. Это ж не класс и не метод. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(15.01.2012 в 01:11)
| | Но направление мыслей правильное.....
У вас переменная определяется в цикле и каждый проход переопределяется
......
Ловите ход мысли?....
.......
А выводится результат уже за пределами цикла....
.....
Сколько раз выводится?.....
.....
Правильно - один раз!
......
И что выводится?
......
Правильно - то значение которое было записано в нее последним!
.....
И что из этого следует????
......
Нужно внести вывод результата внутрь цикла =) | |
|
|
|
|
|
|
|
для: Sfinks
(15.01.2012 в 02:15)
| | Вот это геморойная штука. Не знай как сделать то правильнее...
Толи массив создавать и пихать туда результаты+данные, а по завершению проверить есть ли FALSE в массиве, что бы потом вывести список, толи сразу выводить "Не удалось отправить сообщение по адресу {$myrow[2email]}" и попутно вести счетчик неудач, чтобы потом статистику привести. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(15.01.2012 в 02:26)
| | ниче геморойного. просто проверку надо в цикле делать, а не за циклом:
<?php
if ( mail (......) ) echo "письмо ".(++$i)." ушло";
else echo "письмо ".(++$i)." не ушло";
?>
|
| |
|
|
|
|
|
|
|
для: Sfinks
(15.01.2012 в 02:33)
| | работает.
если в БД поле "2email" только одну запись, а другие 4 - пустые, то сообщение выглядит так:
письмо 1 ушло
письмо 2 не ушло
письмо 3 не ушло
письмо 4 не ушло
письмо 5 не ушло
|
| |
|
|
|
|
|
|
|
для: Василий
(16.01.2012 в 16:01)
| | Само собой. Но правильнее было бы и не пытаться отправить на пустой e-mail.
Для этого можно сделать проверку:
if(empty($address = $myrow["email"])) continue;
| вместо строки
$address = $myrow["email"];
| Зачем сервер насиловать глупой работой? | |
|
|
|
|
|
|
|
для: Василий
(16.01.2012 в 16:01)
| | Василий, мне вообще не ясно зачем вы оставляете поля email пустыми. Если у вас на сайте есть регистрация или что-то типа этого, проще заставить человека ввести свой рабочий email(предварительно отправить ссылку с кодом для проверки) и после внести его данные в таблицу и вы уже будите уверены, что письмо отправится этому человеку. | |
|
|
|
|
|
|
|
для: ladan
(16.01.2012 в 20:45)
| | поля компаний я сам заполняю. у некоторых нет email
на строчку
if(empty($address = $myrow["email"])) continue;
|
дает ошибку:
Parse error: syntax error, unexpected '=', expecting ')'
<?
if(isset($_POST['name']))
{
/* пошел цикл отправки */
$res = mysql_query("SELECT * FROM example WHERE approved='1'");
$i = 0;
while($myrow = mysql_fetch_array($res))
{
if(empty($address = $myrow["email"])) continue;
$subject = "про вас";
$message = "Здравствуйте!";
$headers = "From: Газета <11@mail.ru>\r\ncontent-type:text/plain; charset=windows-1251\r\n";
if (mail($address,$subject,$message,$headers)) echo "<p class='nomistake'>письмо ".(++$i)." ушло</p>";
else echo "<p class='mistake'>письмо ".(++$i)." не ушло</p>";
}}
?>
|
| |
|
|
|
|
|
|
|
для: Василий
(16.01.2012 в 21:12)
| | ну значит надо их разделить:
$address = $myrow["email"];
if(empty($address)) continue;
| или так:
if(!$address = $myrow["email"]) continue;
|
| |
|
|
|
|
|
|
|
для: Sfinks
(16.01.2012 в 23:08)
| | работает
письмо 1 ушло
письмо 2 ушло
письмо 3 ушло
письмо 4 ушло
письмо 5 ушло
|
можно ли одной строкой:
ушло N писем | |
|
|
|
|
|
|
|
для: Василий
(16.01.2012 в 23:27)
| | если будет 1000 писем.
ну зачем такой листинг.
как сделать сообщение одной строкой, что ушло столько-то писем | |
|
|
|
|
|
|
|
для: Василий
(18.01.2012 в 23:15)
| | Нужно исправить так, чтобы $i не увеличивалось если письмо не отправлено и вынести вывод сообщения из цикла. | |
|
|
|
|
|
|
|
для: Sfinks
(18.01.2012 в 23:44)
| | хорошо, что нашлось решение.
как именно нужно исправить? | |
|
|
|
|
|
|
|
для: Василий
(19.01.2012 в 06:59)
| | Ручками.
___
Если вы вообще не будете ни думать ни пытаться что-либо сделать самому, а только ждать готового кода, очень скоро вам перестанут помогать. Это форум для тех кто хочет научиться, а не для тех, кто хочет чтоб за него все сделали другие. | |
|
|
|