Facebook gefällt mir Zahl

dsNDesign

Erfahrenes Mitglied
Hei,
ich suche nach einer Möglichkeit, bei einem "Gefällt mir" Button von Facebook die Zahl einzeln auszugeben. Also ohne Button.

Hier habe ich es nur gefunden, wie man die Zahl der Fans einer Seite ausgeben kann:
http://www.visual-mind.net/wordpress/anzahl-der-facebookfans-als-text-ausgeben-ohne-plugin/

Den Gefällt mir Button kann ich ja so z.B. einbinden:
PHP:
<script src="http://connect.facebook.net/en_US/all.js#appId=223339097716160&amp;xfbml=1"></script><fb:like href="LINK" send="false" width="450" show_faces="false" action="like" font=""></fb:like>

Und zu einem solchen Button möchte ich jetzt nur die Zahl, wie vielen dieser Link gefällt. Ist dies möglich?

Gruß
 
Hallo dsNDesign,

ich denke, dass das hier das falsche Unterforum ist da deine Frage mal gar nichts mit PHP zu tun hat (oder!?).

Gruß
 
Danke, das funktioniert soweit schonmal prima.
Nur gibt es jetzt noch ein Problem.

Ich habe das ganze in einer Schleife.
Sieht folgendermaßen aus:

PHP:
$sql = "SELECT id, titel FROM news ORDER BY id DESC";
$ergebnis = $mysqli->query($sql);
while($zeile = mysqli_fetch_array($ergebnis)) {
     $id = $zeile["id"];
     echo "<div id='like'>";
     include("like.php");
     echo "</div><br /><br />";
}

die like.php:
Code:
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
 var query = FB.Data.query('SELECT like_count FROM link_stat WHERE url="http://www.***.de/bericht.php?id=<?php echo $id; ?>"');
 query.wait(function(rows) {
   document.getElementById('like').innerHTML = rows[0].like_count;
 });

</script>

Das Problem ist nun, dass die Zahl immer nur beim ersten Eintrag aus der Reihe angezeigt wird. Woran könnte das liegen?
 
1. Eine ID ist pro Dokument eindeutig. Deshalb wird nur das erste div mit der ID "like" ausgefüllt.
2. Du solltest wirklich "http://connect.facebook.net/en_US/all.js" nur ein einziges mal einbinden.
3. Tu Facebook den gefallen, und mache nur eine einzige Anfrage

SQL:
SELECT url, like_count FROM link_stat WHERE url IN ("URL 1", "URL 2", "URL 3")
 
Ok, habe es mal so angepasst.
Nur wie mache ich dann die Ausgabe?
Also quasi diesen Teil:
SQL:
query.wait(function(rows) {
   document.getElementById('like').innerHTML = rows[0].like_count;
 });
 
Zuletzt bearbeitet von einem Moderator:
Wenn man garantieren kann, dass Facebook zu jeder URL Daten liefert und diese in der Reihenfolge der IN Klausel, dann so:

Javascript:
//Steck alle div in ein gemeinsames div mit der id "likes"
var out = document.getElementById('likes').getElementsByTagName('div');

query.wait(function(rows) {
    for(var i = 0; i < rows.length && i < out.length; i++) {
        out[i].innerHTML = rows[i].like_count;
    }
 });

Falls das nicht geht, kannst du z.B. noch ein JavaScript Objekt ausgeben lassen in der Form

Javascript:
var dict = {
    "URL 1": "like-145",
    "URL 2": "like-1337",
    "URL 3": "like-4751"
};

Und in deiner PHP Schleife gibst du jedem DIV die entsprechende id (z.B. "like-145")

Javascript:
query.wait(function(rows) {
    for(var i = 0; i < rows.length && i < out.length; i++) {
        document.getElementById( dict[ rows[i].url ] ).innerHTML = rows[i].like_count;
    }
 });
 
Zurück