Проблема со скриптом для регистрации количества лайков в Facebook с помощью mysql + php - PullRequest
0 голосов
/ 11 мая 2011

Я пытаюсь написать скрипт, который будет регистрировать, сколько лайков (Facebook) на странице в Mysql, используя API Facebook, ajax и mysql. Но на данный момент это не работает. Все переменные определены, он подключен к Mysql, и jQuery встроен, и я не получаю и ошибки SQL или 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());
;

?>

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Ну, в приведенном выше коде много проблем:

  1. Ваша логика полностью неверна , когда вы включаете ВСЕ в цикл!

    1. Вы включаете один и тот же div "id" несколько раз (9 раз по вашему запросу Mysql)
    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 } ?>

В вашем URL-адресе ajax прочитайте URL-адрес и извлеките из него идентификатор.

3 голосов
/ 11 мая 2011

У вас есть две ошибки:

Сначала вы используете метод POST для отправки данных с помощью AJAX, но в своем коде PHP вы используете GET для его чтения, плюс тот факт, что вы используете

$GET_['id'] 

вместо

$_GET['id']

Замените "$ GET _ ['id']" на "$ _POST ['id']".

Во-вторых, вы обновляете таблицу «нравится» вместо «лайки»

Edit:

Заменить в alax_pop.php:

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

от

$like = mysql_real_escape_string($_POST['id']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...