Форум -> О форуме на Понедельниках -> Для Сержа... Кнопка "Сказать Спасибо" |
Для Сержа... Кнопка "Сказать Спасибо" |
---|
WhiteWolf | Дата: 05.12.2007, в 18:20 | Сообщение №1 |
ПользовательПользователь №: 53 Сообщений: 35
| Серж, привет. Попробовал написать кнопку Спасибо.
Глянь своим опытным глазом... Может упростить что-нибудь можно. В принципе, все работает...
Значит, так: добавил в таблицу forum_posts еще одно поле thank_count. Если была хоть одна благодарность - ставим 1. По умолчанию - 0. Это чтобы не делать лишние запросы если благодарностей небыло. Создал таблицу _forums_thanks с полями
Код | 1
| `id` int(11) NOT NULL auto_increment,
`user_name` varchar(255) NOT NULL default '',
`post_num` int(11) NOT NULL default '0',
`num_topic` int(11) NOT NULL default '0',
`user_id` int(11) NOT NULL default '0',
PRIMARY KEY (`id`) |
Поле num_topic для удаления всех записей при удалении темы.
Функция самой кнопки
Код | 1
| function saidthank($mid, $muser) {
global $prefix, $db, $user, $module_name, $id, $postspg, $numcount,$postcount;
if(!is_user($user)) {
Header("Location: index.php?error=403");
die();
}
include("header.php");
$result = $db->sql_query("SELECT id FROM ".$prefix."_forums_thanks where (post_num='$mid') AND (user_name='$user[1]')");
while ($row = $db->sql_fetchrow($result)) $kol = intval($row['id']);
if ($kol > 0){
menu();
OpenTable();
echo "<br><center><font class=\"option\">$user[1], Вы уже говорили `Спасибо` за этот пост!</font><br><br><a href=\"javascript:history.go(-1)\">[Назад]</a></center><br><br>";
CloseTable();
} else {
$result = $db->sql_query("SELECT tid FROM ".$prefix."_forums_posts WHERE id='$mid'");
while ($row = $db->sql_fetchrow($result))
$tid = intval($row['tid']);
list($postcount) = $db->sql_fetchrow($db->sql_query("SELECT Count(id) FROM ".$prefix."_forums_posts WHERE id<='$mid' AND tid='$tid'"));
$numcount = ceil($postcount/$postspg);
$db->sql_query("INSERT INTO ".$prefix."_forums_thanks SET user_name='$user[1]', post_num='$mid', num_topic='$tid', user_id = '$muser' ");
$db->sql_query("UPDATE ".$prefix."_forums_posts SET thank_count= '1' WHERE id='$mid'");
menu();
warning("Ваша благодарность принята!", "?name=$module_name&op=showtopic&id=$tid&pagenum=$numcount#$postcount", 3, 2);
}
include("footer.php");
} |
Функция Показать все благодарности
Код | 1
| function show_thank($user_id) {
global $prefix, $db, $user, $module_name, $user_id;
if(!is_user($user)) {
Header("Location: index.php?error=403");
die();
}
include("header.php");
menu();
OpenTable();
echo "<table class=\"bgcolor12\" border=0 cellpadding=0 cellspacing=1 width=100%>
<tr><td class=\"bgcolor13\" align=\"center\"><font class=\"option2\">Юзер</font></td>
<td class=\"bgcolor13\" align=\"center\"><font class=\"option2\">Пост</font></td>
<td class=\"bgcolor13\" align=\"center\"><font class=\"option2\">Дата</font></td>
<td class=\"bgcolor13\" align=\"center\"><font class=\"option2\">Текст</font></td>
<td class=\"bgcolor13\" align=\"center\"><font class=\"option2\">...</font><td></tr>";
$result = $db->sql_query("SELECT user_name, post_num FROM ".$prefix."_forums_thanks where user_id='$user_id'");
while ($row = $db->sql_fetchrow($result)) {
$user_name = $row['user_name'];
$post_num = intval($row['post_num']);
$uuname=urlencode($user_name);
echo "<tr>
<td class=\"bgcolor1\" align=\"center\" nowrap=\"nowrap\"><a href=\"index.php?name=Account&op=userinfo&user_name=$uuname\" target=\"_blank\">$user_name</a></td>
<td class=\"bgcolor1\" align=\"center\">№ <a href=\"index.php?name=Forums&op=show_post&post=$post_num\" title=\"Показать полный текст \">$post_num</a></td>";
$result2 = $db->sql_query("SELECT date, message FROM ".$prefix."_forums_posts where id='$post_num'");
while ($row2 = $db->sql_fetchrow($result2)) {
$message = stripslashes($row2['message']);
$message = cutstr(bb_decode($message), 120);
$date = stripslashes($row2['date']);
echo"<td class=\"bgcolor1\" align=\"center\">$date</td>
<td class=\"bgcolor1\">$message</td>
<td class=\"bgcolor1\" align=\"center\"><a href=\"index.php?name=Forums&op=show_post&post=$post_num\"><img src=\"images/right.gif\" border=\"0\" alt=\"\" title=\"Показать полный текст \"><td>
</tr>";
}}
echo "</table>";
CloseTable();
include("footer.php");
} |
А это показ полного текста поста
Код | 1
| function show_post($post) {
global $prefix, $db, $user, $module_name, $user_id;
if(!is_user($user)) {
Header("Location: index.php?error=403");
die();
}
include("header.php");
menu();
OpenTable();
echo "<center><font class=\"option2\">Сообщение № $post</font></center><br>";
echo "<table class=\"bgcolor12\" border=0 cellpadding=0 cellspacing=1 width=100%><tr>";
$result = $db->sql_query("SELECT message FROM ".$prefix."_forums_posts where id='$post'");
while ($row = $db->sql_fetchrow($result)) {
$message = stripslashes($row['message']);
$message=bb_decode($message);
echo"<td class=\"bgcolor1\">$message</td></tr></table><br>
<a href=\"javascript:history.go(-1)\"><center>[Назад]</a></a>";
}
CloseTable();
include("footer.php");
} |
Ну, и разумеется вставил в код... если это не юзер, то кнопку не показывать, если это ты сам тоже, чтобы сам себе Спасибо не говорил и т.п.
Напиши, что не так.
Да..., у меня не получилось без дополнительных запросов проверять, мол, если запись < count, то ставить запяту. Т.е., Спасибо сказали: первый, второй. Как к тебя "Эту тему читают"
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно WhiteWolf 05.12.2007 г. в 18:22:00 |
|
|
leo | Дата: 05.12.2007, в 18:46 | Сообщение №2 |
СтарожилПользователь №: 47 Сообщений: 321
| может лучше сделать 2 кнопки: Одобряю и Не одобряю? Так по моему более правильно будет |
|
|
Sunvas | Дата: 05.12.2007, в 19:09 | Сообщение №3 |
ПрофиПользователь №: 181 Сообщений: 554
| Я вообще не понимаю, нах это "Спасибо" вообще надо. Хэрня ненужная, если честно. Лучше сделать репутацию, или оценку постов.. |
|
|
Serg_pnz | Дата: 05.12.2007, в 19:26 | Сообщение №4 |
АдминистраторПользователь №: 1 Сообщений: 2243
| Ну тогда пойдем обеими путями, буду внедрять:
1. Спасибо (просто, что бы отметить пост человека)
2. Карма (плюс и минус к репутации, с обоснованием за что) | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
Sunvas | Дата: 05.12.2007, в 19:28 | Сообщение №5 |
ПрофиПользователь №: 181 Сообщений: 554
| Serg_pnz, дело, конечно твое, но я бы сделал оценку постов - смотрится не только лучше, но и круче. |
|
|
Serg_pnz | Дата: 05.12.2007, в 19:46 | Сообщение №6 |
АдминистраторПользователь №: 1 Сообщений: 2243
| ок. будет третим пунктом. но тогда вопрос: оценка конкретного поста или темы? | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
Sunvas | Дата: 05.12.2007, в 20:06 | Сообщение №7 |
ПрофиПользователь №: 181 Сообщений: 554
| Оценка конкретного поста.. Тему, имхо глупо оценивать.
А если еще на AJAXe это замутить, то вообще сказка будет.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно Sunvas 05.12.2007 г. в 20:07:05 |
|
|
leo | Дата: 06.12.2007, в 00:12 | Сообщение №8 |
СтарожилПользователь №: 47 Сообщений: 321
| ну сделать как на сёрче - что не нравится-то? |
|
|
Serg_pnz | Дата: 06.12.2007, в 00:45 | Сообщение №9 |
АдминистраторПользователь №: 1 Сообщений: 2243
| leo, куда смотреть? | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
omvitamin | Дата: 06.12.2007, в 01:33 | Сообщение №10 |
Активный участникПользователь №: 157 Сообщений: 188
| Serg_pnz, я думаю leo говорит про воблу которая на searchengines.ru
Там по аватарой кнопочка- нажал- выползла (как и всё в вобле) менюшка и там:
Добавить отзыв: НикЮзверя
Дальше типа что Вы думаете об этом сообщении НикЮзверя
Ниже выбираешь одобряю или нет и коментарий. за одобрение кажется репутация растёт.
В любом топе посмотри: иконка весов под аватарой.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно omvitamin 06.12.2007 г. в 01:34:39 |
|
|
leo | Дата: 06.12.2007, в 01:37 | Сообщение №11 |
СтарожилПользователь №: 47 Сообщений: 321
| |
|
omvitamin | Дата: 06.12.2007, в 01:41 | Сообщение №12 |
Активный участникПользователь №: 157 Сообщений: 188
| Ну вобще я думаю если это включать в форум, что нужна ещё опция в админке в любом случае. Потому, что далеко не каждому проекту это нужно на форуме. Поэтому конечно добавлю пунктик на всякий случай:
Возможность выключения через админ-панель. |
|
|
Serg_pnz | Дата: 06.12.2007, в 02:34 | Сообщение №13 |
АдминистраторПользователь №: 1 Сообщений: 2243
| Давайте это на попозже отложим. У меня всё голова о почте болит, об уведомлениях.
Сюжет в следующем. Когда я написал свой скрипт рассылки, то к майлу попал в бан очень быстро, поскольку скрипт генерил штук по 30 писем в секунду.
Потом поставил таймер - всё нормализовалось.
Таймер стоит сейчас на 1 секунду. В принципе мне при рассылке не напряг кнопочку понажимать (хак уже есть, только как всегда в сырцах, т.е. не прикручен к модулю. Впрочем я отвлекся.)
Внимание вопрос: сколько милисекунд надо выставить между двумя письмами, что бы не попасть к почтовику с пометкой спам или, что еще хуже, в бан? | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
|
|
suntrade | Дата: 13.08.2009, в 10:13 | Сообщение №14 |
УчастникПользователь №: 348 Сообщений: 67
| Люди подскажите, куда этот код вставлять? |
|
|
|
Вы не можете ответить в тему анонимно, пожалуйста, войдите или зарегистрируйтесь!
|