powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Система голосования "+1" кнопка like
11 сообщений из 11, страница 1 из 1
Система голосования "+1" кнопка like
    #38608525
xcislav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Like"-button 1 HTML/JS 2 PHP/PDO +3 mysql без логина/авторизации простейшая: чтобы в текстовый файл по onClick добавлялась на сервере +1 (или в базу данных).
Минимально понятный код (вот есть http://lanother.tk/likebutton.html - но там Ajax и dislike и много лишнего и вообще не PDO).

Просто нужно чтобы всем разным людям, зашедшим на страницу одинаково выдавалось количество щелчков сделанных любым зашедшим.
Грубо говоря:
1)
<input type="button" id="like" onClick="like1()" value="+1">
<script>
function like1 {
like.value += 1
}
</script>


2)
<?php
$db=new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'hyuiuik');
foreach($db->query('INSERT INTO TABBL') as
$values+1) {
echo $values++;
}
?>
(Не представляю даже как)

3)
Некоторый mysql
(возвращение через PDO/PHP из mysql на страницу на +1 лайк больше)

Ну и чтобы не зависело от прогрузки чьей-то страницы будет ли засчитан лайк на другой. Хотя лучше без этого - чем проще - тем лучше. Главное найти механизм.
...
Рейтинг: 0 / 0
Система голосования "+1" кнопка like
    #38608541
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xcislavГлавное найти механизм.
Самый "дешовый" вариант:
- отправлять те лайки на сервер
- там увеличивать счетчик
- слать клиенту текущее количество
Правда сидя на странице не будет видно как меняется тот счетчик... Но стоит обновить страничку и информация о тех лайках будет свежая.
...
Рейтинг: 0 / 0
Система голосования "+1" кнопка like
    #38608606
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без логина/авторизации:
то есть любой пользователь может кликать сколько угодно?
...
Рейтинг: 0 / 0
Система голосования "+1" кнопка like
    #38608675
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-k2-без логина/авторизации:
то есть любой пользователь может кликать сколько угодно?
Можно добавить анализ по сессии... Анализ куков или локального хранилища... Что добавит некие ограничения на "сколь угодно раз".
Но большего без регистрации не добиться.
...
Рейтинг: 0 / 0
Система голосования "+1" кнопка like
    #38608696
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

у меня просто готовый модуль есть, недавно делала, хотела предложить :)
но без pdo, без куков, без хранилища и с юзерами, в общем не то :)
...
Рейтинг: 0 / 0
Система голосования "+1" кнопка like
    #38610749
xcislav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa- отправлять те лайки на сервер
- там увеличивать счетчик
- слать клиенту текущее количество
сидя на странице не будет видно... Но стоит обновить страничку
...
Код: sql
1.
2.
$rs=$db->query("SELECT cn FROM CNT ");
echo $rs;


http://www.sql.ru/forum/1088145/convert-error-kak-vyvesti-inkrementnutyy-schyotchik-na-stranicu
Проблема с "выслать клиенту".

-k2-krvsa,
готовый модуль есть , недавно делала, хотела предложить :)
но без pdo, без куков, без хранилища и с юзерами, в общем не то

То что без PDO может быть может и не означать того, что там иначе, но, с другой стороны, помогло бы натолкнуть на мысль как решить "отсыл клиенту". Например, если бы Вы не побоялись код->то:
Это я нашёл:
the thing is query function returns you a reference to a statement. From the PHP manual
Return Values
PDO::query() returns a PDOStatement object, or FALSE on failure.


In order to get a particular field use something like that
$result = $pdo->query('SELECT COUNT(*) total FROM myTable LIMIT 1');
$row = $result->fetch(PDO::FETCH_ASSOC);
$count = $row['total'];

Ну я вроде пробовал но массив пишет тоже что-то не то. Я сторонился двойных двоеточий (вчера только-только подружился с "->" (объектный оператор) ... переменные $/$/$/ на каждой строке оказались не присвоениями а операторами).
...
Рейтинг: 0 / 0
Система голосования "+1" кнопка like
    #38611276
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например utils.php, содержит класс для работы с базой
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
class CEooVideoLikeHl {
  //$DB объект для работы с базой, здесь несущественно

  static public function getLikeCount($elemID) {	
  $intResult = 0; 
  if(intval($elemID) == 0)
    return $intResult;
  try {		
    $strSql = "SELECT count(*) col FROM eoo_video_like_hl WHERE UF_ELEMENT_ID=".$elemID." LIMIT 1;";
    $res = $DB->Query($strSql, false);
    if ($arRes = $res->Fetch()) {
      $intResult = $arRes["col"];	
    }
  } catch (Exception $e) { 
    log( "CEooVideoLikeHl::getLikeCount   Caught exception: ".$e->getMessage()."\n");
  }	
  return $intResult;		
}
	
static public function checkUserLike($userID, $elemID) {	
  $isVote = 0;
  if($userID && intval($elemID)>0) {
    $strSql = "SELECT count(*) col FROM eoo_video_like_hl WHERE UF_USER_ID=".$userID." and UF_ELEMENT_ID=".$elemID." LIMIT 1;";
    $res = $DB->Query($strSql, false);
    if($arRes = $res->Fetch())
      $isVote = intval($arRes["col"]);
  }	
  return $isVote;
}
	
static public function addLike($arFields) {		
  <..проверки входящих параметров, подотовка параметров для записи..>
  //$DB->StartTransaction();
  $ID = $DB->Insert("eoo_video_like_hl", $arInsertFields, $err_mess.__LINE__);
  //$DB->Commit();
  return $ID;
}	
	
static public function deleteLike($arFields) {
  <..проверки входящих параметров..>			
 if($DB->Query("DELETE FROM eoo_video_like_hl WHERE UF_ELEMENT_ID=".$videoID." and UF_USER_ID=".$userID))
  return true;			
 else 		
  return false;	
}
	
};



разметка на странице
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
//$u = <id пользователя> 
//$elem = <id elementa> 
require_once(utils.php);
if($u > 0 && $elem > 0) { 
  $is_vote = CEooVideoLikeHl::CheckUserLike($u, $elem);
  if($is_vote == 0) { ?> 
    <div class="prod-buttons like-video" data-id="<?=$elem?>" data-href="/like_video/?id=<?=$u?>&mode=1" title="Like video">
      <img class="star-like" src="/images/hand_pro.png" />
      <span>Like</span>
    </div>				
  <?} else { ?>
    <div class="prod-buttons like-video" data-id="<?=$elem?>" data-href="/like_video/?id=<?=$u?>&mode=0" title="Unlike video" >
      <img class="star-like" src="/images/hand_pro.png" />
      <span>Unlike</span>
    </div>								
  <?}
} else { ?>
  <div class="prod-buttons like-video no-login" data-id="" data-href="" title="Like video">
    <img class="star-like" src="/images/hand_pro.png" />
    <span>Like</span>
  </div>				
<?}?>



скрипт, подключенный к странице (+jquery)
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
$(".like-video").click(function(e){
  var self = $(e.currentTarget); 
  if(self.hasClass("disabled") || self.hasClass("no-login")) 
    return false;	
  $.post(self.attr("data-href"), function(data) {
    $(".grid-like-item>span").text(+data);
    if(+self.attr("data-vote") == 0){
      self.attr("title", "Unlike video");
      self.attr("data-href", "/like_video/?id="+self.attr("data-id")+"&mode=0");
      self.find("span").text("Unlike");
    } else {
      self.attr("title", "Like video");
      self.attr("data-href", "/like_video/?id="+self.attr("data-id")+"&mode=1");				
      self.find("span").text("Like");			
    }	
  });	
});



like_video.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
$e = intval($_REQUEST["id"]); 
$m = intval($_REQUEST["mode"]);
// $u = <id пользователя>
if($e>0 && $u>0) {
  $is_vote = CEooVideoLikeHl::CheckUserLike($u, $e) == 1;
  $id = 0;
  switch($m){
    case 0: 
      if($is_vote) {
        $arFields = array("ELEMENT_ID"=>$e, "USER_ID"=>$u);
        CEooVideoLikeHl::deleteLike($arFields);
      }	
      break;	
    case 1;
      if(!$is_vote) {
        $arFields = array("ELEMENT_ID"=>$e, "USER_ID"=>$u);
        $id = CEooVideoLikeHl::addLike($arFields);
      }	
      break;
    default: //do nothing	
      break;
    }	
}
echo CEooVideoLikeHl::getLikeCount($e);



и через реврайты демаскируем пути (мания :))
главное, что путь /like_video/ = <ваш_путь>/like_video.php

буду благодарна за критику
...
Рейтинг: 0 / 0
Система голосования "+1" кнопка like
    #38613333
tikatika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю это как на слинки реализовано ? Система социального голосования, если да, то тоже над этим думаю. Хочу вообще отдельный сервис сделать этой тематики.

Если говорить про них, то читал, что они использовали Node.js технологии для реализации.
...
Рейтинг: 0 / 0
Система голосования "+1" кнопка like
    #38614250
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tikatika,

про слинки впервые слышу :)
...
Рейтинг: 0 / 0
Система голосования "+1" кнопка like
    #38618378
tikatika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-k2-tikatika,

про слинки впервые слышу :)

Сейчас работаю над отдельным сервисом для социального голосования. К июню будет готов, если интересно, то могу скинуть инвайт потом.
...
Рейтинг: 0 / 0
Система голосования "+1" кнопка like
    #38618466
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tikatika,

окей
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Система голосования "+1" кнопка like
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]