按下跟随按钮时,数据不会存储在数据库中

时间:2014-05-01 12:16:38

标签: php jquery html

我有一个跟随按钮,当我按下它时存储到跟随表followerid和followid并转为取消关注
当我按下取消关注时,从关注表中删除它们 我为此使用了JQuery 但是当我按下按钮时它变成了取消关注但是没有在数据库中存储任何数据你能帮我找到错误吗

JQuery

function change( el )
{
var input= $('#followingid').val();
var input2=$('#followerid').val();

    if ( el.value == "Follow" )
    {
        $.get("follow_button.php",{following_id:'input',follower_id:'input2'});
        el.value = "Unfollow";
    }
    else
    {
        $.get("unfollow_button.php",{following_id:'input',follower_id:'input2'});
        el.value = "Follow";
    }

}

这是关注按钮

  <form action="" method="post" name="f1">

<input type="button" value="<?php 
$sql="SELECT * FROM follow WHERE followerid=$id and followingid=$projectid";
$q=mysql_query($sql) or die (mysql_error());
    if($num=mysql_num_rows($q))
    echo 'Unfollow';
    else
    echo 'Follow';

    ?>" onclick="return change(this);" />
  </form>

这是follow_button.php页面

<?php
  $followerid=$_GET['follower_id'];
  $followingid=$_GET['following_id'];

  $sql2="INSERT INTO follow (followerid,followingid) VALUES($followerid,$followingid)"; 
  $q2=mysql_query($sql2) or die(mysql_error());
?>

unfollow_button.php页面

<?php
  $follower_id=$_GET['followerid'];
  $following_id=$_GET['followingid'];

    $sql2="DELETE FROM follow WHERE followingid=$following_id and followerid=$follower_id";
    $q2=mysql_query($sql2); 
?>

我多次查看我的代码,但我找不到错误,希望你能找到问题所在 thanx ...

3 个答案:

答案 0 :(得分:2)

您的jQuery代码中存在一些问题。您需要在'input'调用中删除'input2$.get'中的引号,否则它只会传递值'input'和'input2',而不是值变量

function change(el) {
var input = $('#followingid').val();
var input2 = $('#followerid').val();

    if (el.value == "Follow") {
        $.get("follow_button.php", {following_id: input, follower_id: input2}); // Removed quotes
        el.value = "Unfollow";
    } else {
        $.get("unfollow_button.php", {following_id: input, follower_id: input2}); // Removed quotes
        el.value = "Follow";
    }

}

其次,在您的unfollow_button.php中,您错误拼写了GET参数名称:

<?php
  $follower_id=$_GET['follower_id']; // Added an underscore
  $following_id=$_GET['following_id']; // Added an underscore

    $sql2="DELETE FROM follow WHERE followingid=$following_id and followerid=$follower_id";
    $q2=mysql_query($sql2); 
?>

同时检查JavaScript控制台是否有错误。您也可以尝试使用通常有效的GET参数手动转到follow_button.php页面,看看该页面是否显示错误。

此外,您使用的是过时的数据库API。考虑使用PDO及其prepare()函数,这将保护您免受SQL注入。

例如,如果要将follower_id替换为15; DROP TABLE follow,则最终的SQL查询将如下所示:DELETE FROM follow WHERE followingid=42 AND followerid=15; DROP TABLE follow,这将删除您的follow表。

答案 1 :(得分:1)

首先检查你的mysql connection,如果插入了数据,你可以返回一个错误/成功状态,表明你要改变FOLLOW或UNFOLLOW,

if ( el.value == "Follow" ) {
    $.get("follow_button.php",{following_id:'input',follower_id:'input2'}, function(data){
        // change text if you get success in response
        if(data=='success') {
           el.value = "Unfollow";
        }
    });        
} else {
    $.get("unfollow_button.php",{following_id:'input',follower_id:'input2'}, function(data){
        // change text if you get success in response
        if(data=='success') {
           el.value = "Follow";
        }
    });
}

PHP 中试试这个,

$sql2="INSERT INTO follow (followerid,followingid) VALUES($followerid,$followingid)"; 
if(mysql_query($sql2)) echo 'success';
else echo 'error';
return;

delete/Unfollow执行相同操作。

您可以使用insert and delete code

type=follow/unfollow合并到一个页面中

答案 2 :(得分:0)

function change( el )
{
var input= $('#followingid').val();
var input2=$('#followerid').val();
if ( el.value == "Follow" )
{
    $.get("follow_button.php",{following_id:'input',follower_id:'input2'});
    el.value = "Unfollow";
    return false;
}
else
{
    $.get("unfollow_button.php",{following_id:'input',follower_id:'input2'});
    el.value = "Follow";
    return false;
}
return false;
}

试试这个......可能这可以帮到你。