Функция 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, время: 04:25. |