Форум: "Прочее";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];
ВнизПомогите сделать уведомление об ответе Найти похожие ветки
← →
@!!ex © (2009-02-22 11:56) [0]Подкручиваю движок форума Антона и Керка.
Хочу сделать возможность уведомлять об ответе, но мало опыта и знаний php и вообще веб программирования.
Подскажите, как сделать?
← →
Eraser © (2009-02-22 12:08) [1]см. функцию mail().
← →
Anatoly Podgoretsky © (2009-02-22 12:14) [2]> @!!ex (22.02.2009 11:56:00) [0]
Ну посылай сразу в два адреса, ответ и уведомлениею.
← →
antonn © (2009-02-22 15:52) [3]
> @!!ex © (22.02.09 11:56)
если на хосте недоступен mail(), то можно через SMTP честно отправлять, только ящик нужен реальный (я использую админский с того же хоста). Поищи модули "SMTP - PHP SMTP class" и "PHPMailer" (первый инклудится во втором)PHPMailer - класс для передачи электронной почты, позволяющий, в частности, вкладывать в сообщение несколько файлов, посылать копии CC и BCC, устанавливать атрибут REPLY-TO, использовать в сообщениях HTML, работать с резервными SMTP-серверами, переносить строки по словам. Он может посылать сообщения с через sendmail, PHP mail() или непосредственно по протоколу SMTP. Методы основаны на популярном серверном компоненте AspEmail.
а собсно вот он - http://phpmailer.codeworxtech.com/
Так же вероятно у тебя встанет проблема с большим потоком (мало ли, ветка раздуется и много подписчиков будет), тут уж придется как то разруливать (как вариант - ограничить пользователю количество подписок, надо бы глянуть как в IPB это разрулили)
← →
antonn © (2009-02-22 15:53) [4]
> @!!ex © (22.02.09 11:56)
багу с $pdata2["thread_locked"] подправил правильно? :)
← →
antonn © (2009-02-22 15:58) [5]и по самой идее можно двумя (на вскидку :)) путями пойти. Создать в таблице тем поле типа TEXT и заносить туда через разделители user_id (когда юзер хочет подписаться). При ответе выбираешь это поле, перегоняешь в массив или сразу делаешь запрос через
user_id IN()
, получаешь список юзеров и в цикле штампуешь им письма. Геморр в соблюдении валидности поля содержащего ИД юзеров.
Можно завести новую табличку (user_id, thread_id), куда заносить ИД юзера и ИД темы, одним легким движением выбирать всех юзеров дял нужной темы (так же как все темы для юзера), в принципе вариант получше, вот только большая может быть она в теории :) добавить индексов и тормозить почти перестанет :)
← →
@!!ex © (2009-02-22 16:40) [6]> [5] antonn © (22.02.09 15:58)
Второй вариант для меня слишком сложен, я в базах мало шарю.
По поводу первого:
зачем соблюдать валидность user id? просто на запрос невалидного id будет пустой результат выборки, значит можно игнорить.
← →
antonn © (2009-02-22 17:04) [7]а первое еще более сложное, чем второе (кстати, первым вариантом сделана система избранного, не знаю, зачем я ее клепал в таком стиле :) )
Во втором случае ты подписывая юзера заносишь в новую табличку user_id/thread_id:sql_insert($db_pref."podpiska",array("user_id","thread_id"),array($user_id ,$thread_id));
при ответе в теме выполняешь запрос:$result = dbquery("SELECT u.* FROM ".$db_pref."podpiska pd
LEFT JOIN ".$db_pref."users u ON u.user_id=pd.user_id
WHERE pd.thread_id="$thread_id"");
if(dbrows($result)){
postu = sql_array($result);
for($i=0; $i<count($postu); $i++){
//echo $postu[$i]["username"];
}
}
}
← →
antonn © (2009-02-22 17:09) [8]
> зачем соблюдать валидность user id? просто на запрос невалидного
> id будет пустой результат выборки, значит можно игнорить.
>
чтобы в поле юзер не задваивался, как пример. Я регулярками по базе проверял, а регулярки не самый быстрый способ фильтра в мускле :)
Все равно с доп. табличкой будет быстрее написать, чем переписать готовый favor.inc.php (а избранное ведь обратная система, к юзеру привязываются темы, тебе надо наоборот), и вероятно быстрее будет работать.
Подразберись немного в базах и ПХП, он очень легкий язык, после дельфи как по маслу идет, а базы и в африке базы :)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c