Кнопка "Мне нравится" (аля ВК)

dredd

Пользователь
Проблема была пофиксена. Какую версию использовали? Я просто несколько раз архив обновлял, все эти проблемы были решены. Попробуйте обновиться, а именно замените файл like.php на тот что в архиве
 

r3vizor

Пользователь
Проблема была пофиксена. Какую версию использовали? Я просто несколько раз архив обновлял, где все эти проблемы были решены. Попробуйте обновиться, а именно замените файл like.php на тот что в архиве
http://torrentpier.com/threads/Кнопка-Мне-нравится-аля-ВК.1463/page-3#post-26856
 

Wertos

Пользователь
В моде, на мой взгляд несколько грубых ошибок... Попробую перечислить...
1) Структура самой таблицы
2) like это зарезервированный операнд для MySQL
3) Мод в viewtopic.php добавит столько запросов, сколько постов отображается на странице
Подробнее...
1) В структуре таблицы не определены индексы ! Грубейшая ошибка... при заходе в топик с 100(например) постами вы умрёте ждать пока он откроется ! Я как то уже обжёгся на этом.
PHP:
CREATE TABLE IF NOT EXISTS `bb_attachments_liked` (
  `attach_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `user_id` mediumint(9) NOT NULL DEFAULT '0',
  `liked` tinyint(1) NOT NULL DEFAULT '0',
  `unliked` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`attach_id`,`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Пример моей таблицы для like/unlike
-----------------------------------------------------
2) Вместо like всётаки лучше использовать другой вариант...
-----------------------------------------------------
3) Если плюсование лайков на аяксе, то рекомендую сумму лайков для поста считать сразу и писать туда... Это избавит от запроса в viewtopic.php Или же делать LEFT JOIN в существующем запросе, но эт тоже не айс... Я бы сразу считал
 

Lynx

Пользователь
пользователь мог ставить лайки до бесконечного колличества
Да, такая проблема есть.Мод ставил из последнего архива.
И есть ещё одно неудобство: при нажатии на кнопку "мне нравится", выкидывает из поста, который нравится, в начало страницы.
 

dredd

Пользователь
Lynx, вся проблема в таблице, это я уже понял. Но не могу понять как решить это проблему:)
 

Lynx

Пользователь
dredd, когда немного голосующих за сообщение, мод работает корректно - при повторном нажатии кнопки голос аннулируется.
У меня вот такой вариант таблицы:
PHP:
 CREATE TABLE IF NOT EXISTS `bb_like` (
  `user_id` mediumint(10) NOT NULL DEFAULT '0',
  `post_id` mediumint(11) NOT NULL DEFAULT '0',
  `liked` tinyint(1) NOT NULL DEFAULT '0',
  `unliked` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`user_id`,`post_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

А в чём проблема с выбрасыванием из поста наверх страницы? Как избавиться?
 

drew

Легенда
Так будет правильнее. По поводу ошибки щас поглядим.
Найти
PHP:
case 'like':
        $row = DB()->fetch_row("SELECT * FROM bb_like WHERE post_id = $post_id");
        if($userdata['user_id'] != $row['user_id'])
        {
            DB()->query("INSERT INTO bb_like(user_id, post_id) VALUES('".$userdata['user_id']."', '".$post_id."')");
            $count = DB()->fetch_row("SELECT COUNT(user_id) as likes FROM bb_like WHERE post_id = $post_id");
            $this->response['post_id'] = $post_id;
            $this->response['count'] = $count['likes'];
        }
        if($userdata['user_id'] == $row['user_id'])
        {
            DB()->query("DELETE FROM bb_like WHERE post_id = $post_id AND user_id = {$userdata['user_id']}");
            $count = DB()->fetch_row("SELECT COUNT(user_id) as likes FROM bb_like WHERE post_id = $post_id");
            $this->response['post_id'] = $post_id;
            $this->response['count'] = $count['likes'];
        }
    break;
Заменить
PHP:
case 'like':
        if(!DB()->fetch_row("SELECT * FROM bb_like WHERE post_id = $post_id AND user_id = {$userdata['user_id']}"))
        {
            DB()->query("INSERT INTO bb_like(user_id, post_id) VALUES('".$userdata['user_id']."', '".$post_id."')");
            $count = DB()->fetch_row("SELECT COUNT(user_id) as likes FROM bb_like WHERE post_id = $post_id");
            $this->response['post_id'] = $post_id;
            $this->response['count'] = $count['likes'];
        }
        else
        {
            DB()->query("DELETE FROM bb_like WHERE post_id = $post_id AND user_id = {$userdata['user_id']}");
            $count = DB()->fetch_row("SELECT COUNT(user_id) as likes FROM bb_like WHERE post_id = $post_id");
            $this->response['post_id'] = $post_id;
            $this->response['count'] = $count['likes'];
        }
    break;
 

Begemot

Пользователь
Привет, не поможете-ли мне адаптировать мод под обычный SVN. Пользуюсь сборкой от torrentpier . kz. Если "Да", то пожалуйста пиши сразу про сюда цену в или контакт

Please Login or Register to view hidden text.

ЛС (плачу wm, аттестат продавца wmid: 584002099198)
 
Сверху