Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужна помощь (голосование без перезагрузки)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Andruxa
Отправлено: 30 Ноября, 2016 - 19:13:30
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Нужна помощь, в реализации лайк/дизлайк без перезагрузки.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. <script>
  3. $(document).ready(function() {
  4.         $('span#like').click(function(){
  5.                 setVote('like', $(this));
  6.         });    
  7.         $('span#dislike').click(function(){
  8.                 setVote('dislike', $(this));
  9.         });    
  10. });
  11. function setVote(type, element){
  12.         // получение данных из полей
  13.         var id_news = element.parent().find('#id_news').val(); 
  14.         $.ajax({               
  15.                 type: "POST",
  16.                 url: "../../ajax_votes.php",
  17.                 data: {
  18.                         'id_news': id_news,
  19.                         'type': type
  20.                 },
  21.                 dataType: "json",                    
  22.            $('#bb').html(data.newvalue); // водим результат в нужное место          
  23.                         // в случае, когда пришло success. Отработало без ошибок
  24.                         if(data.result == 'success'){
  25.                        
  26.                         }else{
  27.                                 // вывод сообщения об ошибке
  28.                                 alert(data.msg);
  29.                         }
  30.                 }
  31.         });
  32. }
  33. </script>
  34.  


Обработчик PHP
PHP:
скопировать код в буфер обмена
  1.  
  2. include ("inc/functions.php");
  3. $error = false;
  4. $newsId = (int) $_POST['id_news'];
  5. $type = $_POST['type'];
  6.  $stm  = db_connect()->prepare("SELECT * FROM `pozdravleniya` WHERE id=:id LIMIT 1");      
  7.  $stm->execute(array('id'=>$newsId));      
  8.  $data = $stm->fetch();
  9.         if($type == 'like') {
  10.            $like=$data['counts']+1;
  11.            $stm  = db_connect()->prepare("UPDATE pozdravleniya  SET counts=:like WHERE id=:id");
  12.         $stm->execute(array('like'=>$like, 'id'=>$newsId));
  13.         }
  14. if($error){
  15.         // если есть ошибки то отправляем ошибку и ее текст
  16.         echo json_encode(array('result' => 'error', 'msg' => $error));
  17. }else{
  18.         // если нет ошибок сообщаем об успехе
  19.         echo json_encode(array('result' => 'success', 'newvalue' => $like));
  20. }
  21.  


И вывод результата:
PHP:
скопировать код в буфер обмена
  1.  
  2. echo"<table border=0 width=100% class='p_table'><tr>";
  3.   $x=0;              
  4.     while ( $info = $stm->fetch() ){                                
  5.       $x++;        
  6. echo "<td width='40%' valign=top bgcolor=#ffffff><div class='p_text'>".$info['text_p']."".$adm_edit." <br><div class='likes'><div id=bb>".$info['counts']."</div></div><span id='like'><img src='$dom/img/like.png' class='like' title='Нравится :)'/></span><img src='$dom/img/unlike.png' class='dislike' title='Не нравится :('/>
  7.      <br/> <input type='hidden' id='id_news' value=".$info['id'].">
  8.      </div></td></td>";
  9.       if ($x==2){
  10.         echo "</tr>";
  11.         $x=0;
  12.       }                      
  13.  }                                    
  14. echo"</table>";


Все работает и заносит в базу новые значения без перезагрузки, НО, почему то новые значения обновляются только в одном блоке (блок выделен чифрой 1), а не там где нажал. Например, нажимаю на лайк где цифра 2 (значение 33) оно обновляется но в блоке под цифрой 1
Мне кажется что я не правильно делаю вывод уже новых значение.
Прошу Вашей помощи!
Прикреплено изображение (Нажмите для увеличения)
вопрос.png
 
 Top
kuller
Отправлено: 30 Ноября, 2016 - 20:06:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




Andruxa пишет:
$stm  = db_connect()->prepare("UPDATE pozdravleniya  SET counts=:like WHERE id=:id");


это что за переменная такая :id Подмигивание в строке 6 тоже самое (newsId)
Если обновляет только первую запись, тогда следует проверить что передает вообще id_news и что принимается в обработчике

(Отредактировано автором: 30 Ноября, 2016 - 20:08:39)

 
 Top
Andruxa
Отправлено: 30 Ноября, 2016 - 20:27:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Это так в PDO передается переменная

Id - мне нужно для того что бы записать значение сколько раз я кликнул (like) для определенного поздравления. Запись производится в базу все ровно, туда куда кликнул и относится к нужному тексту.
Ниже запрос и ответ при кликаз на блок 1 и блок 2
Прикреплено изображение (Нажмите для увеличения)
вопрос1.png

(Отредактировано автором: 30 Ноября, 2016 - 20:30:27)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB