私はjquery、ajax、phpを使ってLikeやUnlikeの機能に取り組んでいます。私の問題は理解するのが少し難しい。まずそれを理解しようとします。 Jquery Postが正しく機能していませんか?
私は2つのPHPページ、
viewProfile.php
と
LikeMail.php
を持っています。
viewProfile.php
のajax関数によって
LikeMail.php
が呼び出されています。
<div id="Like"></div>
:ここ
がviewProfile.phpページの説明のセクションでここ
-----------------
| Like/Unlike |
-----------------
は、実際にこのAjaxの機能
function like()
{
var req = new XMLHttpRequest();
req.onreadystatechange = function()
{
if(req.readyState==4 && req.status==200)
{
document.getElementById('Like').innerHTML=req.responseText;
}
}
req.open('POST','LikeMail.php','true');
req.send();
}
setInterval(function(){like()},1000);
HTMLでLikeMail.php
から来ているボタンがあります
このdivに出力が表示されています。 上記のボタンは、LikeMail.php
の条件に依存するLike
またはUnlike
となります。これについては、後述のLikeMail.php
の説明セクションで説明します。
いずれか(ボタン)Like
またはUnlike
がクリックされたとき。それからLikeMail.php
に投稿要求を送るそれぞれのjqueryクリック機能を呼び出します。LikeMail.php
ページにLike
またはUnlike
ボタンが実際に存在するので、Indirect
ページをタイトルに記載しました。しかし、ajaxコールのために、これらのボタンはviewProfile.php
ページに表示されています。だから私はそれはそれはjQueryのポストまたはLike
ボタンの説明の
$(document).ready(function(){
$('#Like').unbind().click(function(){
$.post("LikeMail.php",
{Like: this.id},
function(data){
$('#response').html(data);
}
);
});
});
終了ですUnlike
ボタン
$(document).ready(function(){
$('#Unlike').unbind().click(function(){
$.post("LikeMail.php",
{Unlike: this.id},
function(data){
$('#response').html(data);
}
);
});
});
のためのjQueryのポストである
実際のページへviewProfile.php
を通じてLikeMail.php
をPOSTリクエストを送信しますviewProfile.php
ページ
ここでは210 は、このコードに依存
Like
またはUnlike
ボタンをviewProfile.php
ページに示されているLikeMail.phpページの説明のセクションです: $check_for_likes = mysqli_query($conn, "SELECT * FROM liked WHERE user1='$user1' AND user2='$user2'");
$numrows_likes = mysqli_num_rows($check_for_likes);
if (false == $numrows_likes) {
echo mysqli_error($conn);
}
if ($numrows_likes >= 1) {
echo '<input type="submit" name="Unlike" value="Unlike" id="Unlike" class="btn btn-lg btn-info edit">';
}
elseif ($numrows_likes == 0) {
echo '<input type="submit" name="Like" value="Like" id="Like" class="btn btn-lg btn-info edit">';
}
ボタンは、これらの2つの以上の条件に依存します。
今Like
ボタンがクリックされたときに、viewProfile.php
からPOSTリクエストがここに来
if(isset($_POST['Like'])) //When Like button in viewProfile.php is clicked then this peace of code inside if condition should run and insert some record in database
{
$total_likes = $total_likes+1;
$like = mysqli_query($conn, "UPDATE user SET user_Likes = '$total_likes' WHERE user_id = '$user2'");
$user_likes = mysqli_query($conn, "INSERT INTO liked (user1,user2) VALUES ('$user1','$user2')");
$query3 = "INSERT INTO notification (user1, user2, alert, notificationType) VALUE ('$user1','$user2','unchecked','like')";
if (mysqli_query($conn, $query3)) {
echo "Like";
} else {
echo mysqli_error($conn);
}
}
同様Unlike
ボタンがクリックされたとき。このコードの平和は実行されるべきです。
if(isset($_POST['Unlike'])) //This is the condition for Unlike button. It should delete record from databse
{
$total_likes = $total_likes-2;
$like = mysqli_query($conn, "UPDATE user SET user_Likes='$total_likes' WHERE user_id='$user2'");
$remove_user = mysqli_query($conn, "DELETE FROM liked WHERE user1='$user1' AND user2='$user2'");
$query3 = "DELETE FROM notification WHERE user1='$user1' AND user2='$user2' AND notificationType='like'";
$check = mysqli_query($conn, $query3);
if ($check) {
echo "Unlike";
} else {
echo mysqli_error($conn);
}
}
問題:私が直面した
主な問題は、私はLike
またはUnlike
をクリックすると、両方がLike
ボタンコードの条件を実行していることです。両方ともデータベースにデータを挿入します。Unlike
条件はデータベースからデータを削除する必要がありますが、Like
ボタンの条件としてデータも挿入します。親切にも、この問題に取り組む方法を教えてください。前もって感謝します!
更新:Like
ボタンのすべてのコードをすべて削除するとします。 Unlike
ボタンの条件が正しく動作します。
概要を簡単に夏らしい@kollein主な問題 – kollein
がProblem'はあなたがあなたの変数をトレースする必要が –
を見出し 'の後に記述されて集中することができますそれらが壊れているか、または状態が誤っているかを確認してください。 PHP側では 'print_r()'と 'error_log()'を、JavaScriptでは 'alert()'や 'console.log()'を使用して乱用してください。 – technico