Via API auf Besucheranzahl letzter Woche zugreifen


#1

Hallo Piwik-Gemeinde,

ich habe ein Problem mit der Piwik-API.
Und zwar möchte ich mir einen Besucher Counter für meine Website erstellen auf dem dann die Besucher die Anzahl der letzten Besucher für
Heute, Gestern, Diese Woche, Letzte Woche und insgesamt
einsehen kann.
Ich hänge bei den Besucherzahlen von letzter Woche.
Mein PHP-Script sieht so aus:

<?php $token_auth = 'XXXXXXXXXXXXXXXXXXXX'; //Fuer diese Woche $url = "http://www.xxxxx.de/piwik/"; $url .= "?module=API&method=VisitsSummary.getVisits"; $url .= "&idSite=1&period=week&date=today"; $url .= "&format=PHP"; $url .= "&token_auth=$token_auth"; $fetched = file_get_contents($url); $content = unserialize($fetched); // case error if(!$content) { print("Error, content fetched = ".$fetched); } print("Diese Woche: $content
"); //Fuer letzte Woche $url = "http://www.xxxxx.de/piwik/"; $url .= "?module=API&method=VisitsSummary.getVisits"; $url .= "&idSite=1&period=week&date=previous1"; $url .= "&format=PHP"; $url .= "&token_auth=$token_auth"; $fetched = file_get_contents($url); $content = unserialize($fetched); // case error if(!$content) { print("Error, content fetched = ".$fetched); } print("Letzte Woche: $content
"); ?>

Jetzt ist das Problem, dass das Ergebnis jetzt ploetzlich in einem Array angezeigt wrd und ich nicht weiß wie ich das auslesen kann:
a:1:{s:24:“2011-05-30 to 2011-06-05”;d:3575;}

Ich hoffe Ihr koennt mir helfen.

Mfg,
Battlestr1k3


(Thomas Seifert) #2

öhm, naja, das ist einfach ein serialisiertes Array und da solltest Du unserialize drauf machen.


#3

Ok schonmal vielen Dank.
Koenntest du mir das unserialisieren an einem beispiel kurz erklaeren?


(Thomas Seifert) #4

Brauch ich nicht, da Du das in Deinem obigen Beispiel schon hast …


$content = unserialize($fetched);


#5

Siehe naechster post…


#6

Also bei mir steht dann bei letzte woche "Array"
Was mache ich falsch?


(Thomas Seifert) #7

Nun ja, Du hast ja immer noch ein Array und willst vermutlich den zweiten Eintrag daraus.
Also solltest Du sowas wie
$content[1] oder je nachdem wie die Variable bei Dir jetzt heisst verwenden.


#8

$content[0]/[1] gibt mir einfach nichts aus.
Ohne die Indexangabe kommt eben wieder “Array”.
Was mache ich falsch?
Ich müsste doch auf die Sektion “d” von

a:1:{s:24:“2011-05-30 to 2011-06-05”;d:3575;}

zugreifen, oder?


(Thomas Seifert) #9

Nein, d heisst digit.
Was ist Dein genauer Code jetzt? Bitte komplett posten, sonst ist das einfach nur ein Ratespielchen.
print_r($variablenname) sollte Dir einfach mal das komplette Array ausgeben.


#10

Genau, das habe ich jetzt gemacht,
ich kann jetzt mit
print($content[“2011-05-30 to 2011-06-05”]);

auf die Variable zugreifen, das Problem ist, dass sich das Datum ja aendert und es auf diese Weise in einer Woche dann nicht mehr funktioniert.
Mein Code:

$url = “xxxx.de”;
$url .= “?module=API&method=VisitsSummary.getVisits”;
$url .= “&idSite=1&period=week&date=previous1”;
$url .= “&format=PHP”;
$url .= “&token_auth=$token_auth”;
$fetched = file_get_contents($url);
$content = unserialize($fetched);
// case error

print($content[“2011-05-30 to 2011-06-05”]); //<-- Geht
if(!$content)
{
print("Error, content fetched = ".$fetched);
}

print("Letzte Woche: $content[1]");

?>


(Thomas Seifert) #11

Ach, so rum ist das aufgebaut …
dann mach doch entweder:


print array_shift($content);

oder


print current($content);

müsste beides theoretisch einfach den Wert des ersten Elements im Array liefern.


#12

Danke, das hat funktioniert!
Gibt es eine Moeglichkeit, alle Abfragen mit einer URL durchzufuehren?


(Thomas Seifert) #13

Nein - soweit ich weiß.


#14

Weil, bis die Seite angezeigt wird vergehen ca. 5 Sekunden.


(Thomas Seifert) #15

Lässt Du die Archivierung per Cron Job laufen oder browserbasiert?


#16

Ich muss es browserbasiert machen, da mir die Möglichkeit mit Cronjob nicht zur Verfügung steht (kein Shell-Zugang).