Besucherzähler

Hallo Gruppe,

ich möchte einen für alle User sichtbaren Besucherzähler auf meine
Homepage integrieren.

Doch halt! So einfach ist das nicht. Der Zähler ist schon vorhanden,
er soll aber als eine Art "Tacho" angezeigt werden.

Also ungefähr so:

[1] [1] [2] [1] (Beispiel für den 1121. Besucher)

Jede einzelne Zahl soll durch ein IMG angezeigt werden.

Die Variable sieht so aus: $zaehler=3D1121;

Wie wandle ich also die Zahl 1121, welche in einer Datenbank bereits
gespeichert wird, so um, so dass ich für jede Stelle ein IMG laden
kann?

Beispiel:
<img src=3D"1.gif"><img src=3D"1.gif"><img src=3D"2.gif"><img src=3D"1.gif">=


Das ist jetzt mal so richtig knifflig, oder?

Vielleicht stehe ich aber auch nur auf dem Schlauch!

Danke für Hilfe!

Gruß Stephan
sahlender [ Fr, 04 Januar 2008 22:56 ] [ ID #1899931 ]

Re: Besucherzähler

--- Original Nachricht ---
Absender: sahlender [at] gmail.com
Datum: 04.01.2008 22:56
>
> Jede einzelne Zahl soll durch ein IMG angezeigt werden.
>
> Die Variable sieht so aus: $zaehler=1121;
>

Hallo,

mit den Funktionen:

strlen() http://de.php.net/manual/de/function.strlen.php
und
substr() http://de.php.net/manual/de/function.substr.php

kann man zunächst die Länge des Variablenstring errmitteln und dann so
oft wie lang ;), für jede Stelle (Ziffer) die entsprechende Bilddatei
anzeigen.

Wär mal mein Vorschlag, gibt aber glaub noch ne einfachere Lösung, hab
ich auch schonmal irgendwo gesehen, finds nur nicht im Moment.

schönen Abend noch
--
Stefan Max Kube (DD6VSK)
Homepage: http://www.max-fun.de/
Weblog: http://blog.max-fun.de/
Stefan Max Kube [ Fr, 04 Januar 2008 23:15 ] [ ID #1899932 ]

Re: Besucherzähler

sahlender [at] gmail.com schrieb:

> ich möchte einen für alle User sichtbaren Besucherzähler auf meine
> Homepage integrieren.

Wahnsinn, da freuen sich bestimmt alle User brennend.

> Doch halt! So einfach ist das nicht. Der Zähler ist schon vorhanden,
> er soll aber als eine Art "Tacho" angezeigt werden.

> Die Variable sieht so aus: $zaehler=1121;

> Wie wandle ich also die Zahl 1121, welche in einer Datenbank bereits
> gespeichert wird, so um, so dass ich für jede Stelle ein IMG laden
> kann?

> Beispiel:
> <img src="1.gif"><img src="1.gif"><img src="2.gif"><img src="1.gif">

> Das ist jetzt mal so richtig knifflig, oder?

Nein, das ist im Prinzip trivial.

function build_number($n) {
return "<img src='$n.gif' alt='$n'>";
}

echo implode(array_map('build_number', str_split($zaehler)));

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ Fr, 04 Januar 2008 23:27 ] [ ID #1899933 ]

Re: Besucherzähler

sahlender [at] gmail.com schrieb:
> Hallo Gruppe,

Hallo Frager,

> ich möchte einen für alle User sichtbaren Besucherzähler auf meine
> Homepage integrieren.
>
> Doch halt! So einfach ist das nicht. Der Zähler ist schon vorhanden,
> er soll aber als eine Art "Tacho" angezeigt werden.
>
> Also ungefähr so:
>
> [1] [1] [2] [1] (Beispiel für den 1121. Besucher)
>
> Jede einzelne Zahl soll durch ein IMG angezeigt werden.
>
> Die Variable sieht so aus: $zaehler=1121;
>
> Wie wandle ich also die Zahl 1121, welche in einer Datenbank bereits
> gespeichert wird, so um, so dass ich für jede Stelle ein IMG laden
> kann?

Ich gebe einfach an der entspechenden Stelle auf der Ausgabeseite den
Output der folgenden Funktion aus:

function counter_pic($counter)
{
$a_counts[] = '0';
$a_counts[] = '1';
$a_counts[] = '2';
$a_counts[] = '3';
$a_counts[] = '4';
$a_counts[] = '5';
$a_counts[] = '6';
$a_counts[] = '7';
$a_counts[] = '8';
$a_counts[] = '9';

$a_pic[] = '<img src="pics/0.gif" alt="0"> ';
$a_pic[] = '<img src="pics/1.gif" alt="1"> ';
$a_pic[] = '<img src="pics/2.gif" alt="2"> ';
$a_pic[] = '<img src="pics/3.gif" alt="3"> ';
$a_pic[] = '<img src="pics/4.gif" alt="4"> ';
$a_pic[] = '<img src="pics/5.gif" alt="5"> ';
$a_pic[] = '<img src="pics/6.gif" alt="6"> ';
$a_pic[] = '<img src="pics/7.gif" alt="7"> ';
$a_pic[] = '<img src="pics/8.gif" alt="8"> ';
$a_pic[] = '<img src="pics/9.gif" alt="9"> ';

return str_replace($a_counts, $a_pic, strval($counter));
}

Ist nicht schön, aber selten. $counter ist in diesem Fall die Zahl, die
den Zählerstand enthält.
Zu beachten ist hierbei
<http://www.php.net/manual/en/language.types.string.php#language.types.string.casting>

Explizit casten übrigens über die Funktion strval($counter) oder
(string)$counter, ist halt doch etwas sicherer als PHP wild casten
lassen wie es will.

> Beispiel:
> <img src="1.gif"><img src="1.gif"><img src="2.gif"><img src="1.gif">

Ja, genau sowas kommt dann raus

> Das ist jetzt mal so richtig knifflig, oder?

Nö.


MfG
Sebastian Wessel

--
Rad fahren ist auch nur eine Kettenreaktion.
Sebastian Wessel [ Fr, 04 Januar 2008 23:39 ] [ ID #1899934 ]

Re: Besucherzähler

Sebastian Wessel schrieb:

Diese Informationen existieren bereits

> $a_counts[] = '0';
> $a_counts[]...

in diesem Array.

> $a_pic[] = '<img src="pics/0.gif" alt="0"> ';
> $a_pic[]...

Was verstrichst Du Dir davon diese doppelt vorzuhalten?

MfG, Ulf
Ulf Kadner [ Sa, 05 Januar 2008 00:18 ] [ ID #1899935 ]

Re: Besucherzähler

Ulf Kadner schrieb:
> Sebastian Wessel schrieb:
>
> Diese Informationen existieren bereits
>
>> $a_counts[] = '0';
>> $a_counts[]...
>
> in diesem Array.
>
>> $a_pic[] = '<img src="pics/0.gif" alt="0"> ';
>> $a_pic[]...
>
> Was verstrichst Du Dir davon diese doppelt vorzuhalten?

Du, das habe ich mich dann gestern Abend auch noch gefragt, als ich die
Möglichkeit von Thomas Hamacher gesehen habe.

Ich habs zumindest jetzt geändert - bis mir die nächste noch bessere
Lösung über den Weg läuft.

Ich werde aber mal noch die Performance austesten (mehr zur eigenen
Wissensdurststillung), auch wenn das Ergebnis wohl wie üblicherweise bei
so kleinen "Unebenheiten" im kaum messbaren Bereich liegen wird.


MfG
Sebastian Wessel

--
Da kann man mal sehen was passiert, wenn ich kurz nicht Offline bin ...
Sebastian Wessel [ Sa, 05 Januar 2008 07:38 ] [ ID #1900432 ]

Re: Besucherzähler

Thomas Hamacher schrieb:

>function build_number($n) {
> return "<img src='$n.gif' alt='$n'>";
>}
>
>echo implode(array_map('build_number', str_split($zaehler)));

Warum denn so umständlich? ;-)

foreach(str_split($zaehler) as $n)
echo "<img src='$n.gif' alt='$n'>";

--
Wolfgang Fellger
Wolfgang Fellger [ Sa, 05 Januar 2008 13:48 ] [ ID #1900436 ]

Re: Besucherzähler

Wolfgang Fellger schrieb:
> Thomas Hamacher schrieb:

>> function build_number($n) {
>> return "<img src='$n.gif' alt='$n'>";
>> }

>> echo implode(array_map('build_number', str_split($zaehler)));

> Warum denn so umständlich? ;-)

> foreach(str_split($zaehler) as $n)
> echo "<img src='$n.gif' alt='$n'>";

ACK :)

Ich hab mich irgendwie auf den Einzeiler festgefahren. Ich hatte an

echo implode(array_map(create_function('$n', 'return "<img
src=\'$n.gif\' alt=\'$n\'>"), str_split($zaehler)));

gedacht, was aber leider zu lang wurde, weshalb ich die Lamda-Funktion
ersetzt hab. Ich hab aber wirklich noch nen Einzeiler, der noch
einfacher ist:

echo preg_replace('/\d/', '<img src="$0.gif" alt="$0">', $zaehler);

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ Sa, 05 Januar 2008 17:17 ] [ ID #1900437 ]

Re: Besucherzähler

Hallo Gruppe,

vielen Dank für die Antworten. Aber ich komme nicht weiter, weil die
Funktion str_split erst ab PHP5 geht. Ich habe aber nur PHP4.

Kann mir da hoch jemand helfen?

Gruß Stephan
sahlender [ Sa, 05 Januar 2008 20:21 ] [ ID #1900439 ]

Re: Besucherzähler

sahlender [at] gmail.com schrieb:

> vielen Dank für die Antworten. Aber ich komme nicht weiter, weil die
> Funktion str_split erst ab PHP5 geht. Ich habe aber nur PHP4.

Tja, selber schuld. Darf ich fragen warum du nicht updatest?

> Kann mir da hoch jemand helfen?

if(!function_exists('str_split')) {
function str_split($str, $len = 1) {
$tokens = array();

for($i = 0, $n = strlen($str); $i < $n; $i += $len) {
$tokens[] = substr($str, $i, $len);
}

return $tokens;
}
}

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ Sa, 05 Januar 2008 20:44 ] [ ID #1900440 ]

Re: Besucherzähler

sahlender [at] gmail.com schrieb:

> vielen Dank für die Antworten. Aber ich komme nicht weiter, weil die
> Funktion str_split erst ab PHP5 geht. Ich habe aber nur PHP4.

Selber schuld. Warum updatest du nicht?

> Kann mir da hoch jemand helfen?

Ich hab doch einen Einzeiler gepostet, der ohne str_split auskommt.
Liest du die Beiträge auf die du antwortest auch?

> echo preg_replace('/\d/', '<img src="$0.gif" alt="$0">', $zaehler);

Ansonsten kannst du dir die fehlende Funktion auch einfach selber bauen,
falls du meine erste Lösung oder die von Wolfgang verwenden willst.

if(!function_exists('str_split')) {
function str_split($str, $len = 1) {
$tokens = array();

for($i = 0, $n = strlen($str); $i < $n; $i += $len) {
$tokens[] = substr($str, $i, $len);
}

return $tokens;
}
}

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ Sa, 05 Januar 2008 20:47 ] [ ID #1900441 ]

Re: Besucherzähler

Vielen Dank an alle, welche geholfen haben mein Problem zu lösen.
Jetzt klappt alles!

Trotz PHP4, so einfach updaten kann ich nicht, das kann ja nur der
Provider. Und wenn der nicht will...

Gruß Stephan,
sahlender [ Sa, 05 Januar 2008 22:08 ] [ ID #1900447 ]

Re: Besucherzähler

Am 5. Januar 2008 schrieb sahlender [at] gmail.com:

> Jetzt klappt alles!
>
> Trotz PHP4, so einfach updaten kann ich nicht, das kann ja nur der
> Provider. Und wenn der nicht will...

.... dann wechselt man zur Konkurrenz.

Wer 3,5 Jahre nach Veröffentlichung von PHP 5 immer noch nur PHP 4
anbietet, kann nicht wirklich an Kunden interessiert sein.

Gruß
Mark

--
Marcel Reif: "Wenn Sie dieses Spiel atemberaubend finden, haben sie es
an den Bronchien."
Mark Wiesemann [ Sa, 05 Januar 2008 22:19 ] [ ID #1900448 ]

Re: Besucherzähler

sahlender [at] gmail.com schrieb:

>Und wenn der nicht will...

kann man den Provider "updaten".

--
Wolfgang Fellger
Wolfgang Fellger [ Sa, 05 Januar 2008 22:24 ] [ ID #1900449 ]

Re: Besucherzähler

On 5 Jan., 22:24, "Wolfgang Fellger" <wfn... [at] web.de> wrote:
> sahlen... [at] gmail.com schrieb:
>
> >Und wenn der nicht will...
>
> kann man den Provider "updaten".

Tja, man muss immer den Einzelfall betrachten. Den Provider kann man
nicht einfach "updaten" bzw. wechseln, wenn der Provider gleichzeitig
der Kunde eines mittelständischen Unternehmens ist, welches wiederum
mein Gehalt zahlt... So kompliziert ist die Welt...

Gruß Stephan
sahlender [ Sa, 05 Januar 2008 22:34 ] [ ID #1900450 ]

Re: Besucherzähler

Am 05.01.2008 22:34 schrieb sahlender [at] gmail.com folgendes:
>> kann man den Provider "updaten".
>
> Tja, man muss immer den Einzelfall betrachten. Den Provider kann man
> nicht einfach "updaten" bzw. wechseln, wenn der Provider gleichzeitig
> der Kunde eines mittelständischen Unternehmens ist, welches wiederum
> mein Gehalt zahlt... So kompliziert ist die Welt...

und es gibt noch mehr Gruende, warum man nicht "sofort" den Provider
wechseln kann:
1.) der Kunde will nicht
2.) der Kunde versteht nicht, warum
3.) der Kunde will keinen, wenn auch nur kurzzeitigen Ausfall vom
laufendem Shop, Email...

meint Herbert
--
Herbert Dobsak, aus Kaisermuehlen in Wien
ein Geheimnis, das Sie schon immer wissen wollten:
Herbert Dobsak [ Sa, 05 Januar 2008 22:47 ] [ ID #1900451 ]

Re: Besucherzähler

..oO(sahlender [at] gmail.com)

>Tja, man muss immer den Einzelfall betrachten. Den Provider kann man
>nicht einfach "updaten" bzw. wechseln, wenn der Provider gleichzeitig
>der Kunde eines mittelständischen Unternehmens ist, welches wiederum
>mein Gehalt zahlt... So kompliziert ist die Welt...

Man kann den Betreffenden aber zumindest auf die Füße treten und ihnen
eindringlich klar machen, daß sie Software einsetzen, welche das Ende
ihrer Lebenszeit überschritten hat und für die jeglicher Support so gut
wie eingestellt ist, von kritischen Updates innerhalb des nächsten
halben Jahres mal abgesehen. Darüberhinaus sollte man von einem fähigen
Hoster auch erwarten können, PHP 4 und 5 parallel betreiben zu können.
Möglichkeiten dafür gibt es mehrere und Zeit war auch mehr als genug.

YMMV.

Micha
Michael Fesser [ So, 06 Januar 2008 09:10 ] [ ID #1901141 ]
PHP » de.comp.lang.php.misc » Besucherzähler

Vorheriges Thema: Template für Pulldown-Menüs
Nächstes Thema: programmings