Справедливое предупреждение: я не эксперт, но мне удалось зайти так далеко. Мой код не красивый и грубый. Это довольно сложная система, поэтому не стесняйтесь задавать вопросы.
Так что у меня есть досадная проблема, когда мой код работает в Chrome, но больше нигде. Кажется, что ни один из моих javascript не работает ни в Firefox, ни в IE. ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, ЧТО КАЖДЫЙ РАЗ ВЫ ВИДИТЕ PHP ВНУТРИ РАЗДЕЛА, ЭТО ПРОСТО ПРЕДСТАВЛЯЕТ # ПОЧТЫ ВНУТРИ БАЗЫ ДАННЫХ.
Мой код отображает сообщения, в которых каждое сообщение соединено с кнопкой «Нравится» и «Не нравится», созданной с интервалами. Существует флажок, который показывает / скрывает все понравившиеся сообщения, и другой, который делает то же самое для непривязанных сообщений при выборе. Когда пользователю нравится или не нравится сообщение, нажав на кнопку, значения отправляются в мою БД через ajax (в check.php), чтобы их можно было вызывать при будущих посещениях.
Опять же, все это прекрасно работает в Chrome, но не в IE и Firefox.
Кроме того, если я сначала не вставлю значения в свою таблицу userPosts в моей базе данных вручную, новые записи и значения не будут сохранены в моей БД. Например, если в моей БД уже есть значения для сообщений 1-3, все будущие решения пользователя о том, нравиться или не нравиться этим сообщениям, отправляются и сохраняются без проблем, но если я добавлю новое сообщение (post4), а пользователь любит или не любит его , значения не отправляются ... кажется, что INSERT не работает в check.php, тогда как UPDATE функционирует просто отлично.
Вот jQuery, который находится внутри цикла, вы должны найти его с комментариями к вашему удовлетворению:
<script type="text/javascript">
$(document).ready(function() {
// Declare variables
var checked = <?php echo $row['value']; ?>; //get value of Liked or Disliked from database
var postID = <?php echo $row['postID']; ?>; //get post ID from database
var userID = <?php echo $current_user->ID; ?>; //get the wordpress user's ID
var showLikes = $("input[name*='show_likes']"); //represents checkbox for Hide Liked
var showDislikes = $("input[name*='show_dislikes']"); //represents checkbox for Hide Disliked
// Set the remembered Liked and Disliked buttons
if (checked == 1) {
$('#post_<?php echo $row['postID']; ?>').addClass('like');
$('#like_<?php echo $row['postID']; ?>').removeClass('likeimgoff').addClass('likeimgon');
} else if (checked == 0) {
$('#post_<?php echo $row['postID']; ?>').addClass('dislike');
$('#dislike_<?php echo $row['postID']; ?>').removeClass('dislikeimgoff').addClass('dislikeimgon');
}
//When Liked button is clicked do this
$('#like_<?php echo $row['postID']; ?>').click(function() {
// Declare variables
var value = '1';
// Send values to database
$.ajax({
url: 'check.php',
type: 'POST',
data: 'userID=' + userID + '&postID=' + postID + '&value=' + value,
success: function(result) {
$('#Message_<?php echo $row['postID']; ?>').html('').html(result).prependTo('#post_<?php echo $row['postID']; ?>');
}
});
// If post is Disliked, change to Liked
$('#post_<?php echo $row['postID']; ?>').removeClass('dislike').addClass('like');
$('#dislike_<?php echo $row['postID']; ?>').removeClass('dislikeimgon').addClass('dislikeimgoff');
$('#like_<?php echo $row['postID']; ?>').removeClass('likeimgoff').addClass('likeimgon');
// If Hide Liked checkbox is on, toggle the post
if (showLikes.attr('checked')) {
$('#post_<?php echo $row['postID']; ?>').toggle();
}
return false;
});
//When Disliked button is clicked do this
$('#dislike_<?php echo $row['postID']; ?>').click(function() {
// Declare variables
var value = '0';
// Send values to database
$.ajax({
url: 'check.php',
type: 'POST',
data: 'userID=' + userID + '&postID=' + postID + '&value=' + value,
success: function(result) {
$('#Message_<?php echo $row['postID']; ?>').html('').html(result).prependTo('#post_<?php echo $row['postID']; ?>');
}
});
// If post is Liked, change to Disliked
$('#post_<?php echo $row['postID']; ?>').removeClass('like').addClass('dislike');
$('#like_<?php echo $row['postID']; ?>').removeClass('likeimgon').addClass('likeimgoff');
$('#dislike_<?php echo $row['postID']; ?>').removeClass('dislikeimgoff').addClass('dislikeimgon');
// If Hide Disliked checkbox is on, toggle the post
if (showDislikes.attr('checked')) {
$('#post_<?php echo $row['postID']; ?>').toggle();
}
return false;
});
//When Hide Liked checkbox clicked, toggle all Liked posts.
$("input[name*='show_likes']").click(function() {
if ($('#post_<?php echo $row['postID']; ?>').is('.like')) {
$('#post_<?php echo $row['postID']; ?>').toggle();
}
});
//When Hide Disliked checkbox clicked, toggle all Disliked posts.
$("input[name*='show_dislikes']").click(function() {
if ($('#post_<?php echo $row['postID']; ?>').is('.dislike')) {
$('#post_<?php echo $row['postID']; ?>').toggle();
}
});
});
</script>
Вот код для каждого сообщения, также находящегося в цикле, за которым следует #Message, которое появляется, когда ajax возвращает вывод check.php и, наконец, закрывает цикл:
<div id="post_<?php echo $row['postID']; ?>" class="post">
<div id="post_<?php echo $row['postID']; ?>_inside" class="inside">
<div id="like">
<a id="like_<?php echo $row['postID']; ?>" class="likeimgoff" href="#"><span></span></a>
</div>
<div id="dislike">
<a id="dislike_<?php echo $row['postID']; ?>" class="dislikeimgoff" href="#"><span></span></a>
</div>
<b><?php echo $row['Title']; ?></b><br>
<?php echo $row['Description']; ?><br>
</div>
</div>
<div id="Message_<?php echo $row['postID']; ?>" class="reminder"></div>
<?php
}
?>
</div>
Вот check.php:
<?php
mysql_connect("name.database.com", "username", "password") or die(mysql_error());
mysql_select_db("databasename") or die(mysql_error());
if (isset($_POST['userID'])){
$userID = mysql_real_escape_string($_POST['userID']);
}else{
echo "No userID";
}
if (isset($_POST['postID'])){
$postID = mysql_real_escape_string($_POST['postID']);
}else{
echo "No postID";
}
if (isset($_POST['value'])){
$value = mysql_real_escape_string($_POST['value']);
}else{
echo "No value";
}
$query = mysql_query("SELECT * FROM userPosts WHERE userID='$userID' AND postID='$postID';") or die(mysql_error());
if (mysql_num_rows($query) > 0) {
mysql_query("UPDATE userPosts SET value='$value' WHERE userID='$userID' AND postID='$postID';") or die(mysql_error());
} else {
mysql_query("INSERT INTO userPosts (userID, postID, value) VALUES ('$userID', '$postID', '$value') ") or die(mysql_error());
}
echo "UserID: " .$userID. " PostID: " .$postID. " Value: " .$value;
?>
Так что у вас это есть. Я знаю, что кода много, поэтому, пожалуйста, не стесняйтесь и не стесняйтесь задавать вопросы!