2011-05-11 33 views
0

我想寫一個腳本,將記錄有多少喜歡(Facebook)的頁面在Mysql中使用Facebook的API,AJAX和MySQL。但目前它不工作。所有的變量都被定義,它連接到Mysql,並且jQuery被嵌入,我沒有得到和SQL或PHP錯誤。任何人都可以看到我要去哪裏錯了嗎?麻煩與日誌量記錄Facebook的喜歡與MySQL + PHP

的源代碼: 的index.php:

<?php 
$sql=mysql_query("select * from likes ORDER BY id DESC LIMIT 9"); 
while($row=mysql_fetch_array($sql)) 
{ 
?> 
<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 

<script > 
FB.init({ 

    status: true, 
    cookie: true, 
    xfbml: true 
}); 

FB.Event.subscribe('edge.create', function(response) { 
    alert(response); 

    if (response == "http://fbquote.me/like.php?id=<?php print $row['id']; ?>") { 
$.ajax({ 
type: "POST", 
url: "popular/ajax_pop.php", 
data: "id=<?php print $row['id']; ?>" 
cache: false, 
}); 

    } 
}); 

</script> 
        <br /> <table style="width: 90%; height: 4px;" class="style11115" align="center"> 
    <tr> 
     <td style="width: 68px; height: 23px;" class="style11111 " valign="top"><div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><fb:like href="http://fbquote.me/like.php?id=<?php print $row['id']; ?>" send="false" layout="button_count" show_faces="true" font=""></fb:like></td> 
     <td style="height: 23px" class="style11113" valign="top"><a href="http://www.fbquotes.me/like.php?id=<?php print $row['id']; ?>" class="style11112"><?php print $row['like']; ?></a></td> 
    </tr> 
    </table> 
<?php } ?> 

alax_pop.php:

<?php 
include_once("../scripts/config.php"); 
$like = mysql_real_escape_string($GET_['id']); 

$current_pop = mysql_query("SELECT pop FROM likes WHERE id=$like") or die ("Query failed: " . mysql_error()); 


$pop = $current_pop + 1; 

$update = mysql_query("UPDATE like SET pop = ".$pop." WHERE id = ".$like."") or die ("Query failed: " . mysql_error()); 
; 

?> 
+0

難道你沒有在你最後一個查詢錯誤:「更新像SET彈出=」。$彈出。「WHERE ID =」。$喜歡。「」 難道你不想更新「喜歡」,而不是「喜歡」? – zzarbi 2011-05-11 17:14:13

+0

'mysql_real_escape_string'不是非常有用,如果你不在查詢周圍的單引號引起的變量... – 2011-05-11 21:25:25

回答

3

好,上面的代碼中有很多問題:

  1. 你的邏輯完全是錯誤你在哪裏包括循環內的所有東西!

    1. 要包括同一div「ID」的時間多(根據您的MySQL查詢9次)
    2. 包括次FB JS庫中的多個(同樣的事情對於JS初始化代碼段)
    3. 你缺少的APP ID參數
    4. 您正在建設9個表(我不知道這是否意呢!)
    5. 您再次包括FB碼錶中的幾次!
  2. 檢查@zzarbi回答你的ajax後端頁面!

現在解決您的代碼問題了嗎?

  1. 在學習基本的PHP,HTML和Javascript方面做得更多。
  2. 將您的Facebook和表格代碼移到循環之外。

像這樣的事情讓你開始:

<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script > 
FB.init({ 
    status: true, 
    cookie: true, 
    xfbml: true 
}); 

FB.Event.subscribe('edge.create', function(response) { 
    $.ajax({ 
     type: "POST", 
     url: "popular/ajax_pop.php", 
     data: "url=" + response 
     cache: false 
    }); 
}); 

</script> 
<?php 
$result=mysql_query("select * from likes ORDER BY id DESC LIMIT 9"); 
if($result) { 
?> 
<table style="width: 90%; height: 4px;" class="style11115" align="center"> 
<?php while($row=mysql_fetch_array($result)) { ?> 
    <tr> 
     <td style="width: 68px; height: 23px;" class="style11111 " valign="top"> 
      <fb:like href="http://fbquote.me/like.php?id=<?php print $row['id']; ?>" send="false" layout="button_count" show_faces="true" font=""></fb:like> 
     </td> 
     <td style="height: 23px" class="style11113" valign="top"> 
      <a href="http://www.fbquotes.me/like.php?id=<?php print $row['id']; ?>" class="style11112"><?php print $row['like']; ?></a> 
     </td> 
    </tr> 
<?php } ?> 
</table> 
<?php } ?> 

在你的AJAX網址,閱讀網址並從中提取的ID。

+0

嗯,謝謝,我只做了幾個星期的JavaScript和幾個月的PHP和FB api一天。我勇敢地分配學習。感謝您修復我的腳本。 :) – user663049 2011-05-11 18:51:16

+0

@ user663049:不客氣。只是一個建議,把它簡單,首先跳轉到Facebook和其他API只是不不堪重負前用PHP + jQuery的開始! :-) – ifaour 2011-05-11 18:53:10

3

你有兩個錯誤:

首先你使用POST方法與發送數據AJAX,但在您的PHP代碼中,您正在使用GET來讀取它,再加上您正在使用的事實

$GET_['id'] 

代替

$_GET['id'] 

所以替換 「$ _ GET [ '身份證']」 以 「$ _ POST [ '身份證']」。

其次要更新的表 「喜歡」,而不是 「喜歡」

編輯:

在alax_pop.php替換:

$like = mysql_real_escape_string($GET_['id']); 

通過

$like = mysql_real_escape_string($_POST['id']); 
+0

檢索Facebook喜歡計數你可以使用FQL(http://developers.facebook.com/docs/引用/ fql /)與下面的查詢:「SELECT url,like_count FROM link_stat WHERE URL IN('$ url')」 – zzarbi 2011-05-11 17:51:58