2016-05-05 3 views
-1

Я создаю форум, на котором пользователи могут любить и отличать сообщения и комментарии.
Задача, с которой я сталкиваюсь, заключается в том, что я хотел бы, чтобы текст подобной кнопки изменился без перезагрузки страницы. Как я могу провести различие между кнопками на странице и изменить отдельные текстовые тексты от «Like» до «Liked» и наоборот?
Кнопки, на данный момент создается и показать, как это:
Сменить текст кнопки с «Like» to «Liked» при нажатии

<?php 
$result3=mysqli_query($link, "SELECT * FROM cs_comments WHERE post_id = $postID"); 
while($row3 = mysqli_fetch_assoc($result3)){ 
    $commentID=$row3['comment_id']; 
    $memberID=$row3['member_id']; 
    $likes=$row3['likes']; 
    $content= $row3['content']; 
    $anonymous=$row3['anonymous']; 


    if($anonymous=='1') 
     $name='Anonym'; 
    else{ 
     $result4= mysqli_query($link, "SELECT firstname, lastname FROM cs_members WHERE member_id = $memberID"); 
     $row4=mysqli_fetch_assoc($result4); 
     $name = '<a href="../profile/?profile=' . $memberID . '">' . $row4['firstname'] . " " . $row4['lastname'] . '</a>'; 
    } 
    $result5=mysqli_query($link,"SELECT * FROM cs_likes WHERE comment_id=$commentID AND member_id={$_SESSION['memberID']}"); 
    if(mysqli_num_rows($result5)!=0) 
     $liked="unlike"; 
    else 
     $liked="like"; 




    echo '<div class="post_container">'; 
    echo '  <div class="info_header">'; 
    echo '   <div class="info_name">' . $name . '</div>'; 
    echo '   <div class="info_group"></div>'; 
    echo '  </div>'; 
    echo '  <div class="post_content">'; 
    echo   $content; 

    echo '  </div>'; 
    echo '  <div class="post_footer">'; 
    echo '   <div class="like_button"><button onclick="likeComment('. $commentID . ')">' . $liked . '(' . $likes . ')</button></div>'; 
    echo '  </div>'; 
    echo '</div>'; 
} 

mysqli_close($link); 
?> 

Javascript для OnClick-события:

function likeComment(id) { 
$.ajax({ 
    url: '/resources/phpScript/like.php', 
    type: 'POST', 
    data: {comment_id:id}, 
    success: function(data) { 
     console.log(data); // Inspect this in your console 
    } 
}); 

Like.php

<?php 
session_start(); 
include "./db-connect.php"; 
$memberID= $_SESSION['memberID']; 

if(isset($_POST['post_id'])){ 
    $postID=mysqli_real_escape_string($link,$_POST['post_id']); 
    $sqlCheck="SELECT * from cs_likes WHERE post_id = $postID AND member_id = $memberID"; 
    $sqlInsert="INSERT INTO cs_likes (post_id, member_id) VALUES ('$postID','$memberID')"; 
    $sqlDelete="DELETE FROM cs_likes WHERE post_id= $postID AND member_id = $memberID"; 
} 
elseif(isset($_POST['comment_id'])){ 
    $commentID=mysqli_real_escape_string($link,$_POST['comment_id']); 
    $sqlCheck="SELECT * from cs_likes WHERE comment_id = $commentID AND member_id = $memberID"; 
    $sqlInsert="INSERT INTO cs_likes (comment_id, member_id) VALUES ('$commentID','$memberID')"; 
    $sqlDelete="DELETE FROM cs_likes WHERE comment_id= $commentID AND member_id = $memberID"; 
} 
else 
    echo "Something went wrong"; 
$checkResult=mysqli_query($link, $sqlCheck); 
if(mysqli_num_rows($checkResult)==0) 
    $result=mysqli_query($link,$sqlInsert); 
else 
    $result=mysqli_query($link,$sqlDelete); 
?> 

Любая помощь приветствуется!

+0

так где же js для этого? –

+0

@Fred -ii- Так жаль! Это была ошибка – SlyTech404

+0

у вас есть '<кнопка onclick =" likeComment', так что это js. Если у вас нет js для нее, то вы спрашиваете нас, как делать ajax-вызов? Если это так, вот что вам нужно здесь Если это не то, о чем вы спрашиваете, то что не работает? Довольно много неизвестных здесь. –

ответ

1

Так что я нашел решение! У меня мало опыта работы с javascript, поэтому это может быть слишком простым вопросом для кого-то, чтобы узнать, чем я был!
Это то, что я сделал:

Я просто послал элемент щелкнул путем добавления this к вызову функции по щелчку:

echo '   <div class="like_button"><button onclick="likePost('. $postID . ',this)">' . $liked . '</button></div>'; 

Затем я добавил этот крошечный бит к моей функции:

function likePost(id, elem) { 
if(elem.innerHTML== "like") 
    elem.innerHTML="unlike"; 
else 
    elem.innerHTML="like"; 

Я все еще хочу поблагодарить всех, кто сделал и попытался понять, что я прошу.

Смежные вопросы