Функция Like
Здравствуйте. Хочу на сайте внедрить функцию ( мне нравиться ) используя js.
Что бы при нажатие на ссылку (мне нравиться ) менялась сама ссылка (мне нравиться ) на, допустим ( мне понравилось ) , увеличивалось значение count(like) которое прежде было взято из БД на +1 и шла запись в БД . При повторном нажатие шла бы обратная операция. |
Цитата:
|
:)
|
Здравствуйте. пытаюсь сделать функцию 'мне нравится" Вот что получается
<?php $like=$rowlents_p['like']; echo $like; ?> <script> var a=<?php echo $like; ?>; function order() { ord = a+1; noord = "<img src=images/like.png>"; document.getElementById("text").innerHTML = ord; document.getElementById("like2").innerHTML = noord; document.getElementById("like").style.display = 'none'; document.getElementById("like2").style.display = "block" ; } function noorder() { ord = a; noord = "<img src=images/like2.png>"; document.getElementById("text").innerHTML = ord; document.getElementById("like").innerHTML = noord; document.getElementById("like").style.display = "block" ; document.getElementById("like2").style.display = 'none'; } </script> <table><tr> <td><div id="like2" onclick="noorder();"></div><div id="like" onclick="order();"><img src=images/like2.png></div></td> <td><div id="text" ><?php echo $like; ?></text></div></td> </tr></table> $rowlents_p['like'] Это количество всех лайков взятых из базы. В принципе скрипт работает но... Допустим у меня есть массив новостей . Вывожу их $lents_p = mysql_query("SELECT * FROM `posts` ORDER BY id DESC ") or die(mysql_error()); while($rowlents_p = mysql_fetch_array($lents_p)) include(like.php); { echo $rowlents_p[news]; } Так скрипт не работает. как я понимаю это потому что функции в js повторяются. Вопрос. Как мне сделать так что бы кнопка была в каждой новости которою выведет массив Заранее спасибо. |
$html = ""; while($rowlents_p = mysql_fetch_array($lents_p)) { $html .= $rowlents_p[news] . $like; } echo $html; |
это не чего не даёт .. $like это?
|
js не срабатывает. он выходит с каждым массивом, но работает только с первым массивом
$html = ""; $lents_p = mysql_query("SELECT * FROM `posts` ORDER BY id DESC ") or die(mysql_error()); while($rowlents_p = mysql_fetch_array($lents_p)) { $html .= $rowlents_p['like'] . $like ."<br>" ; include ('7.php'); } echo $html; |
зачем в цикле делать include ('7.php'); ?
$like = '<div class="like"><img src="http://javascript.ru/forum/images/smilies/smile.gif"></div>'; <body> <div class="like"> <img src="http://javascript.ru/forum/images/smilies/smile.gif"> </div> <div class="like"> <img src="http://javascript.ru/forum/images/smilies/smile.gif"> </div> <div class="like"> <img src="http://javascript.ru/forum/images/smilies/smile.gif"> </div> <script> var likes = document.querySelectorAll("div.like"); var len = likes.length; var cllike = function () { var limg = this.querySelector("img"); limg.src = limg.src == "http://javascript.ru/forum/images/smilies/smile.gif" ? "http://javascript.ru/forum/images/smilies/dance3.gif" : "http://javascript.ru/forum/images/smilies/smile.gif"; } while (len--) likes[len].onclick = cllike; </script> </body> |
спасибо за ответ .. но кажется это не подходит так как этот скрипт просто методом селект меняет картинку но не может считывать информацию с массива пхп . ( берёт только первый массив ) ... Либо я туплю ..
<?php $lents_p = mysql_query("SELECT * FROM `posts` ORDER BY id DESC ") or die(mysql_error()); while($rowlents_p = mysql_fetch_array($lents_p)) { $like=$rowlents_p['like']; echo "<div class=like> <img src=images/like2.png> </div> " ; } ?> <script> var likes = document.querySelectorAll("div.like"); var len = likes.length; var a=<?php echo $like; ?>; var cllike = function () { var limg = this.querySelector("img"); limg.src = limg.src == "http://javascript.ru/forum/images/smilies/smile.gif" ? "http://javascript.ru/forum/images/smilies/dance3.gif" : "http://javascript.ru/forum/images/smilies/smile.gif"; alert(a); } while (len--) likes[len].onclick = cllike; </script> </body> при выводе alert(a); выходит самый первый массив . |
есть у кого нибудь идеи ?
|
вопрос остался открытым. Жду помощи.. Всем спасибо
|
Up
|
Samsam,
опишите логику вашего велосипеда. Еще раз не все понятно что вы делаете. Получаете какие то данные из базы и что где отправляете и т. д. чем более точнее опишите проблему и покажите свои наработки решения тем ваши шансы увеличиваются для решения задачи |
есть цикл
Массив 1 <div class=like>Нравиться</div> Массив 2 <div class=like>Нравиться</div> Массив 3 <div class=like>Нравиться</div> Массив 4 <div class=like>Нравиться</div> и т.д Задача в том что бы при нажатии на (Нравиться) выполнялось следущие: 1. надпись (нравится) менялась на (мне понравилось) 2. выполнялось запись в БД, к примеру ( mysql_query("UPDATE posts SET like='$like', WHERE id='$id'"); ) 3. при повторном нажатие на (нравится) выполнялось бы обратное. то есть менялась надпись (мне понравилось) на (нравится) и опять выполнялось запись в БД.. главная моя загвоздка в том что я не могу использовать js в циклах пхп . Спасибо за внимание |
$html = ""; $i = 0; while($rowlents_p = mysql_fetch_array($lents_p)) { $html .= $rowlents_p[news]; $html .= '<div class="like" data-poz="' . $i++ . '">'; $html .= '<img src="http://javascript.ru/forum/images/smilies/smile.gif">'; $html .= '</div>'; } echo $html; php сформирует страницу которую будешь обрабатывать так <div class="like" data-poz="0"> <img src="http://javascript.ru/forum/images/smilies/smile.gif"> </div> <div class="like" data-poz="1"> <img src="http://javascript.ru/forum/images/smilies/smile.gif"> </div> <div class="like" data-poz="2"> <img src="http://javascript.ru/forum/images/smilies/smile.gif"> </div> <script> var likes = document.querySelectorAll("div.like"); var len = likes.length; var addlike = function (poz) { alert("Add like - " + poz); }; var dellike = function (poz) { alert("Delete like - " + poz); }; var cllike = function () { var limg = this.querySelector("img"); var img1 = "http://javascript.ru/forum/images/smilies/smile.gif"; var img2 = "http://javascript.ru/forum/images/smilies/dance3.gif"; var poz = this.getAttribute("data-poz"); if (limg.src == img1) { limg.src = img2; addlike(poz); } else { limg.src = img1; dellike(poz); } }; while (len--) likes[len].onclick = cllike; </script> |
спасибо..
почему при выводе допустим var a = "<?php print $rowlents_p[userid]; ?>" ; alert(a); он не выводит информацию |
если код внутри страницы где исполняется php то будет работать
если данная конструкция в вынесенном файле то конечно же нет достаточно отрыть исходный код страницы и вы увидите чему равна a <?php echo "<script>alert(" . $rowlents_p[userid] . ");</script>"; ?> |
<?
$g = "gus"; $i = 0; while ($i < 5) { $i++; $d = $i; echo " <div id= ".$d." onclick='start()'>Like</div> <div id='gusa'>0</div> " ; print " <script> var ord = 'No Like' ; var ords = 'Like' ; var t = ".$d."; function start() { var like = document.getElementById(t).innerHTML; var viw = document.getElementById('gusa').innerHTML; if ( like == 'Like' ) { document.getElementById(t).innerHTML = t ; document.getElementById('gusa').innerHTML = viw+1; alert('tebe ponravilos'); } else { document.getElementById(t).innerHTML = ords; document.getElementById('gusa').innerHTML = viw-1; alert('tebe bolshe ne nravitsa'); } } </script> "; } ?> Ну почему же скрипт не работает в каждом цикле массива. реагирует только последний цикл массива.. Не как не могк найти решение.. |
Up
|
Может подсказка будет от кого нибудь..
|
Не заниматься хренью и найти готовое решение, либо, что еще лучше, толкового программиста.
|
Нужен ответ на мой предыдущий вопрос..
Erolast, спасибо за совет.. |
Почему тут нет смайла фейспальма?
Во-первых - что еще за цикл массива? Используй нормальную терминологию. Во-вторых - конкретно в этом цикле лучше использовать for, а не while. Не, можно и while, но привыкай использовать инструменты по назначению. В-третьих - никогда не суди, что что-то не работает по непроизошедшему следствию. Посмотри в код страницы. Все у тебя печатается. Неправильно работает собственно JS, и не работает потому, что каждый новый скрипт переопределяет функцию start. Естественно, работает только последний вариант этой функции. Цитата:
|
вроде всё получилось но скрипт зависает и не всегда работает
<?php session_start(); include ('global/connect.php'); $lents_p = mysql_query("SELECT * FROM `posts` ORDER BY id DESC ") or die(mysql_error()); while($rowlents_p = mysql_fetch_array($lents_p)) { $i=$rowlents_p['like']; $id = $rowlents_p['userid']; echo " News ".$id." <div class='like' data-poz=".$i."><a>like</a></div> <div id=".$i."> ".$i." </div><br> " ; } ?> <script> var likes = document.querySelectorAll("div.like"); var len = likes.length; var cllike = function () { var limg = this.querySelector("a"); var da = "like"; var net = "nolike"; var poz = this.getAttribute("data-poz"); if (limg.a == net) { limg.a = da ; document.getElementById(poz).innerHTML = parseInt(poz) ; } else { limg.a = net ; document.getElementById(poz).innerHTML = 1 + parseInt(poz); } }; while (len--) likes[len].onclick = cllike; </script> |
Цитата:
|
Часовой пояс GMT +3, время: 02:51. |