[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: отправка сообщений пользователям
okapo
каким оброзом можно отправить сообщение всем пользователям(или выбранных) на сайте 1 запросом

а то я делаю не правельно
делаю цикл пользователей и там запрос оправления сообщения

как можно 1 запросом или какие варианты есть ?



Спустя 27 минут, 10 секунд (1.02.2012 - 20:19) bob marley написал(а):
okapo
только циклическая отправка

Спустя 12 минут, 47 секунд (1.02.2012 - 20:32) neadekvat написал(а):
Внутрення почта сайта или email?

Спустя 18 минут, 32 секунды (1.02.2012 - 20:50) Zhandos написал(а):
Для начала хоть объясни как и куда отправляешь сообщения?
Если по email, то тут надо быть осторожным, многие хостинги делают ограничение на кол-во отправляемых писем. Решить это можно создав таблицу в БД где можно будет хранить задания для отправки, и кроном каждые 10-15 минут проверять таблицу на наличие новых заданий на отправку.
Если это внутренняя система, то надо знать как это все устроено. Телепаты в отпуске)))

Спустя 45 минут, 23 секунды (1.02.2012 - 21:36) okapo написал(а):
внутренняя почта по сайту
это меня интересует

Спустя 4 минуты, 58 секунд (1.02.2012 - 21:41) Zhandos написал(а):
Хм, и как все реализовано? Структура базы данных. Часть кода.

Спустя 12 минут, 53 секунды (1.02.2012 - 21:54) neadekvat написал(а):
Цитата (Zhandos @ 1.02.2012 - 22:41)
Часть кода.

Код не нужен.
Нужна структура того, как хранятся письма.

Спустя 8 минут, 38 секунд (1.02.2012 - 22:02) okapo написал(а):

CREATE TABLE IF NOT EXISTS `mails` (
`id_m` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(40) NOT NULL,
`message` text NOT NULL,
`readed` enum('1','0') NOT NULL DEFAULT '0',
`re` enum('1','0') NOT NULL,
`from` int(11) NOT NULL,
`to` int(11) NOT NULL,
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id_m`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=45 ;


вот таблица

Спустя 8 минут, 2 секунды (1.02.2012 - 22:10) neadekvat написал(а):
Придется таки в цикле перебирать всех пользователь, которым надо отправить письма. И вот в этом цикле в переменную следует собирать текст запроса на внесение строк.
То есть запрос, после цикла, должен выглядеть как-то так:
INSERT INTO `tbl` (`col`, `col`, `col`) VALUES
('$val', '$val', '$val'),
(
'$val', '$val', '$val'),
....

И делаешь уже запрос с этим текстом.

Спустя 23 часа, 50 минут, 4 секунды (2.02.2012 - 22:00) okapo написал(а):
вроде понял, спасибо, в карму добавил

Спустя 2 дня, 1 минута, 2 секунды (4.02.2012 - 22:01) okapo написал(а):
и так начал я делать

вот код
$ids = implode( ',', $_POST['ids'] );
$sql = $mysqli->query("SELECT `id` FROM `".DB_PREFIX."_users` WHERE `id` IN (".$ids.")");
$insert_pm = '';
while($res = mysqli_fetch_assoc($sql))
{
$insert_pm .= "('".input($_POST['title'])."','".input($_POST['message'])."','1','".intval($_SESSION['myid'])."','".$res['id']."',NOW()),";
}
$mysqli->query("INSERT INTO ".DB_PREFIX."_mails (`title`,`message`,`ref`,`from`,`to`,`date`)
VALUES "
.$insert_pm."");


я вот написал но почемуто не доходит, в чем ошибся поправьте меня пожалуста

Спустя 39 минут, 50 секунд (4.02.2012 - 22:41) nugle написал(а):
Выведи сам запрос через переменную и посмотри, что не так. попробуй в базу его заталкать

Спустя 1 минута, 50 секунд (4.02.2012 - 22:43) okapo написал(а):
мне кажется от того что в последней строке остоется запятая

Спустя 36 секунд (4.02.2012 - 22:44) nugle написал(а):
ну так обрежь через trim, что мешает то? я просто в код не вглядывался тщательно

Спустя 14 минут, 34 секунды (4.02.2012 - 22:58) okapo написал(а):
ну а как удалить запятую в последней строке ?

Спустя 3 минуты, 44 секунды (4.02.2012 - 23:02) nugle написал(а):
я же написал, ф-ей trim
$insert_pm = trim($insert_pm, ',');

Спустя 4 минуты, 32 секунды (4.02.2012 - 23:06) walerus написал(а):
<?php
$string = '1,2,3,4,';
if ( substr($string, -1) == "," )
$string = substr( $string, 0, -1 );

echo 'string - '.$string."<br>";

// или
$string = '1,2,3,4,';
$string = trim( $string, ',' );
echo 'string - '.$string."<br>";


Как больше нравится.

Спустя 43 минуты, 56 секунд (4.02.2012 - 23:50) okapo написал(а):
Цитата (walerus @ 4.02.2012 - 20:06)

$string = '1,2,3,4,';
$string = trim( $string, ',' );
echo 'string - '.$string."<br>";

вот что помогла, все спасибо rolleyes.gif
Быстрый ответ:

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