Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.26;
Скачать: CL | DM;

Вниз

Помогите сделать уведомление об ответе   Найти похожие ветки 

 
@!!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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
10-1154672886
polyakov@asconm.ru
2006-08-04 10:28
2009.04.26
Проблема с использованием coFreeUnusedLibrary


15-1235555828
KilkennyCat
2009-02-25 12:57
2009.04.26
No royalties.


4-1208772445
Alex
2008-04-21 14:07
2009.04.26
D5,D7 при установке на VMWARE - не работает debuger


2-1236506534
salexn
2009-03-08 13:02
2009.04.26
Получить список всех НЕ-PUBLISHED методов


15-1235768854
Kostafey
2009-02-28 00:07
2009.04.26
Решил посмотреть программы для сравнения файлов