我有一个跟随按钮,当我按下它时存储到跟随表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 ...
答案 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;
}
试试这个......可能这可以帮到你。