Как сохранить увеличенные голоса в моей базе данных через AJAX? - PullRequest
0 голосов
/ 27 мая 2011

Я нахожусь на последнем этапе моего самого первого проекта AJAX. У меня есть социальная сеть, в которой есть комментарии. Я просто добавляю значок большого пальца, который при нажатии отправляет идентификатор комментария через JQUERY на фоновую php-страницу, которая ПОДДЕРЖИВАЕТСЯ для сохранения идентификатора комментария, а также записи его нажатия (приращение). После того, как это произойдет, мне нужно отправить эту запись обратно на страницу, на которой включен значок большого пальца, и сообщить этой странице, что был достигнут большой палец, и увеличить счетчик в указанной области.

В таблице thumb_increment у меня есть:

id, который автоматически увеличивается и comment_id это идентификатор комментария, за который проголосовали.

Мне интересно, должен ли я добавить еще один столбец для хранения количества голосов или просто отслеживать в столбце comment_id. Я немного запутался в логике.

Пока я могу щелкнуть большим пальцем и заставить его отправить идентификатор с другой моей страницы и захватить идентификатор с помощью $_POST. Вот этот код:

<?php

// 1. CHECK AND SEE IF THE "$comment_id" IS VALID. I AM GOING TO RETREIVE THE VALUE OF THE $_POST BEING SENT FROM THE PHP PAGE THAT IS SENDING THE REQUEST

/* QUERY TO CHECK $_POST DATA WITH: */

/* this is grabbing id that jquery sent over via post */
if(isset($_POST['comment_id'])) {

/* making a variable out of the grabbed id */   
$retreived_comment_id = ($_POST['comment_id']); 

/* this query is bring to frutation the exact id of the comment */
$query = "SELECT * FROM `CysticAirwaves` WHERE `id` = '".$retreived_comment_id."' && `status` = 'active'"; 
$request = mysql_query($query,$connection);
if($result = mysql_fetch_array($request)) {

/* insert the comment into the increment table */

$query = "INSERT INTO `thumb_increment` (
                                `comment_id`
                            ) VALUES (
                            '" . $retreived_comment_id . "'
                                )";
mysql_query($query,$connection);

/* increment the vote in the db */

    }

}


?>

Итак, подведем итог тому, что мне осталось сделать:

Мне нужно увеличить и сохранить комментарий в моей БД, поместить его в переменную, которая отправляется обратно на страницу с значком большого пальца, и добавить эту переменную к приращению к счетчику

Заранее спасибо.

1 Ответ

0 голосов
/ 27 мая 2011

Редактировать

Что касается только части базы данных, согласно вашему комментарию ...

Я бы просто нормализовал базу данных для upvote, содержащую:

comment_id, user_who_voted_id, timestamp

В будущем, если вы хотите иметь концепцию понижающего голоса, такого как stackoverflow, вам может понадобиться добавить еще один столбец.В первом более простом случае, чтобы получить счет, вы просто делаете что-то вроде:

SELECT count(*) FROM thumb_increment WHERE comment_id = ?

Старый ответ

Не используйте $ .get длячто-то вроде этого, когда вы изменяете состояние.Я бы наверное использовал пост.Переписать свой пример ...

http://api.jquery.com/jQuery.post/

http://api.jquery.com/serialize/

http://api.jquery.com/parent/

// Assuming html that looks something like the following
<form id='comment_details_123123'>
    <input type='hidden' value='123123' name='comment_id' />
    <div class='thumb'><img src='thumb.jpg' /></div>
    <div class='thumb_counter'>3</div>
</form>

$('.thumb').click(function(){
    var comment_form = $(this).parent('form');
    $.post('comment.php', comment_form.serialize(), function(response) {
        comment_form.find('.thumb_counter').html(response.new_count);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...