Как я могу получить значение переменной мне нужно - PullRequest
0 голосов
/ 20 декабря 2011

как я могу получить значение переменной, которое мне нужно, я выбрал комментарии и подобные значения через MySQL и создал кнопку «Мне нравится», но когда я нажимаю «Нравится», он добавляет подобное к последнему значению выбранной / опубликованной переменной, так что нравится последний сгенерированный комментарий. Как мне сделать так, чтобы мне понравился тот, который я хотел, а не последний выбранный?

Пример:

У меня есть комментарии с идентификаторами (1,2,3), когда они сгенерированы, они упорядочивают их в этом порядке (1,2,3), когда мне нравится комментарий с id = 2, мне нравится комментарий 3, потому что он был сгенерирован последним, поэтому переменная id имеет значение 3, когда мне понравился комментарий 2.

Не имеет никакого смысла, надеюсь, вы, ребята, поняли, пожалуйста, помогите ???

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Допустим, у нас есть три комментария к одному и тому же сообщению:

Первая таблица: комментарии

id | post_id | comment
1  | 1       | "something"
2  | 1       | "something else"
3  | 1       | "something else entirely"

Вторая таблица: comment_likes

id | comment_id
1  | 2
2  | 2
3  | 3

В этом примере комментарий 2 будет иметь 2 лайка, а комментарий 3 - один.

Это может быть код для отображения наших комментариев. Хитрость заключается в том, чтобы добавить пользовательский атрибут в ссылку like, чтобы мы могли определить идентификатор комментария в javascript.

<div class="comments">
<?php
$res = mysql_query('SELECT * FROM `comments` WHERE `post_id` = '.$post_id.';');
while ($row = mysql_fetch_array($res)) {
    $cid = $row['id'];
    echo '<div class="comment">';
    echo $row['comment'].'<br />';
    echo '<span class="like" comment-id="'.$cid.'">Like</span>';
    $lres = mysql_query('SELECT COUNT(*) FROM `comment_likes` WHERE `comment_id` = '.$cid.';');
    $likes = mysql_result($lres,0);

    echo '<span class="likes">';
    if ($likes > 0) {
        echo '<span class="num_likes">'.$likes.'</span>';
        $p = ($likes > 1) ? 'people like' : 'person likes';
        echo $likes.' '.$p.' this';

    }
    echo '</span>';
    echo '</div>';
}
?>
</div>

Теперь JavaScript (с использованием jQuery):

$(document).ready(function() {
    $('.like').click(function() {
        var id = $(this).attr('comment-id');
        $.ajax({
            url: 'add_like.php',
            method: 'POST',
            data: {'id':id},
            success: function(res) {
                if (res === '1') {
                   var likes = $('.like[comment-id='+id+']').find('.num_likes').text();
                   likes++;
                   var p = likes > 1 ? 'people like' : 'person likes';
                   var html = '<span class="num_likes">'+likes+'</span> '+p+' this';
                   $('.like[comment-id='+id+']').find('likes').html(html);
                }
                else alert('Error Liking Comment');
            },
            error: function() { alert('Error liking comment'); }
        });
    });  
});

И PHP (для AJAX) - add_like.php

<?php

if (!isset($_POST['id'])) exit;
$id = $_POST['id'];
// connect / select db
$res = mysql_query('INSERT INTO `comment_likes` WHERE `comment_id` = '.$id.';');
if ($res) {
    die(1); // success
}
die(0);

?>

Очевидно, что вы хотели бы расширить это для симпатии / неприязни - потому что в данный момент пользователю может нравиться несколько раз, но вы понимаете.

0 голосов
/ 22 декабря 2011

note.php

//-------- WHILE LOOP FOR GETTING NOTE COMMENTS -------

$commentsList = array();

$query = mysql_query("SELECT * FROM note_comments WHERE note_id='$note_id'");
while (($row = mysql_fetch_assoc($query)) != false) {
    $commentsList[] = array(
        'comId' => $row['id'],
        'comment' => $row['comment'],
        'com_likes' => $row['likes'],
        'com_likers' => $row['likers']
    );
}

note.php (body):

        <div id="noteComments">
        <h2>Comments</h2>
        <?php 
        $commentL = $commentsList;
        if (count($commentL) == 0) {
            echo 'Sorry, there are no comments.';
        } else {
            echo '<ul style="list-style:none;">';
            foreach($commentL as $comment) {
                echo '<li><p>', $comment['comment'], '</p><p><a style="background-color:#3b3c3b; color:#fff;
                text-decoration:none; padding: 1 5 1 5; border-radius:5px; border: 1px solid black; " href="#" onclick="like_add(', $comment['comId'] ,');">Like</a><span id="comment_', $comment['comId'] ,'_likes">', $comment['com_likes'] , '</span> like this</p></li>';
            }
            echo '</ul>';
        }
        ?>
        </div><!-- end noteComments -->

like.js

function like_add(comId) {
$.post('ajax/like_add.php', {comId:comId}, function(data) {
    if (data == 'success') {
        like_get(comId);
    } else {
        alert(data);
    }
}); 
}

function like_get(comId) {
$.post('ajax/like_get.php', {comId:comId}, function(data) {
    $('#comment_'+comId+'_likes').text(data);
});
}

like_add.php

<?php
include_once("../scripts/checkuserlog.php");
include '../functions/like.php';
if (isset($_POST['comId']) && comment_exists($_POST['comId'])) {
$comId = $_POST['comId'];
add_like($comId);
}
?>

like_get.php

<?php
include '../scripts/checkuserlog.php';
include '../functions/like.php';
if (isset($_POST['comId']) && comment_exists($_POST['comId'])) {
echo like_count($_POST['comId']);
}
?>

like.php

<?php
function comment_exists($comId) {
$comId = (int)$comId;
return (mysql_result(mysql_query("SELECT COUNT('id') FROM note_comments WHERE id=$comId"), 0) == 0) ? false : true;
}

function like_count($comId) {
$comId = (int)$comId;
return (int)mysql_result(mysql_query("SELECT likes FROM note_comments WHERE id=$comId"), 0, 'likes');
}
function add_like($comId) {
$comId = (int)$comId;
$visitor = $_SESSION['id'];
$com_likers = "";
$query = mysql_query("SELECT likes, likers FROM note_comments WHERE id='$comId'");
while (($row = mysql_fetch_array($query)) != false) {

        $com_likes = $row['likes'];
        $com_likers = $row['likers'];
} 
$thisComlikers = explode(",", $com_likers);
if (!in_array($visitor, $thisComlikers)) {
    if ($com_likers != "") { $com_likers = "$com_likers,$visitor"; } else { $com_likers = "$visitor"; }

mysql_query("UPDATE note_comments SET likes = likes + 1 WHERE id=$comId")or die (mysql_error());
mysql_query("UPDATE note_comments SET likers =$com_likers WHERE id=$comId")or die (mysql_error());
echo 'success';
} else {
    echo 'You have already liked this!';
}
}

?>
...