PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Erweiterter Besucherzähler (Counter) mit grafischer Ausgabe
Beitrag
<blockquote data-quote="elyion_g2" data-source="post: 2074551" data-attributes="member: 359721"><p><strong>AW: Erweiterter Besucherzähler (Counter) mit grafischer Ausgabe</strong></p><p></p><p>[PHP] <?php</p><p>date_default_timezone_set('Europe/Paris'); error_reporting(E_ALL);</p><p>class counter</p><p>{</p><p> var $ip;</p><p> var $time;</p><p> var $yesterday;</p><p> var $tomorrow;</p><p> var $mysqlhost;</p><p> var $mysqluser;</p><p> var $mysqlpass;</p><p> var $mysqldatabase;</p><p> var $mysqllink;</p><p> function counter()</p><p> {</p><p> //Die benötigten Daten bekommen</p><p> $this->ip = $_SERVER["REMOTE_ADDR"]; //IP des Benutzers bekommen</p><p> $this->time = time(); //aktuelle Zeit nehmen</p><p> $this->yesterday = time() - 60*60*24; //24 Stunden zurückrechnen</p><p> $this->tomorrow = mktime(23,59,59,date('m'),(date('d')-1)); //24 Stunden vorrechnen</p><p> $this->today = mktime(0,0,1,date('m'),date('d')); //24 Stunden vorrechnen</p><p> $this->mysqlhost = "webhost"; //Euer MySQL-Host</p><p> $this->mysqluser = "benutzer"; //Euer MySQL-Benutzername</p><p> $this->mysqlpass = "passwort"; //Euer MySQL-Passwort</p><p> $this->mysqldatabase = "datenbankname"; //Eure MySQL-Datenbank</p><p> $this->mysqlconnect(); //bauen wir eine MySQL Verbindung auf</p><p></p><p> //Prüfen ob der Benutzer gezählt wird</p><p> //Zuerst prüfen wir durch abfragen des Cookies</p><p> if(!isset($_COOKIE['counter']))</p><p> {</p><p> //Der Benutzer hat keinen Cookie - prüfen wir nochmals mittels IP</p><p> $qry = "SELECT * FROM `counter` WHERE `time` > '".$this->yesterday."' LIMIT 1";</p><p> //prüfen ob der Benutzer innerhalb der letzten 24 Stunden in der Datenbank steht</p><p> $qry = mysql_query($qry);</p><p> if(mysql_num_rows($qry) == 0)</p><p> {</p><p> //Der Benutzer ist auch nicht in der Datenbank, wir können Ihn zählen</p><p> $this->countuser();</p><p> }</p><p> }</p><p> }</p><p> function mysqlconnect()</p><p> {</p><p> //Aufbau der Verbindung zum MySQL Server</p><p> if(!$this->mysqllink = @mysql_connect($this->mysqlhost,$this->mysqluser,$this->mysqlpass))</p><p> {</p><p> //Anscheinend ist der Aufbau fehlgeschlagen</p><p> //Fehlermeldung werfen und Script abbrechen</p><p> echo "Verbindung zum MySQL Server nicht möglich!";</p><p> exit();</p><p> }</p><p> //Datenbank auswählen</p><p> if(!@mysql_select_db($this->mysqldatabase))</p><p> {</p><p> //Anscheinend ist die Verbindung zur Datenabnk fehlgeschlagen</p><p> //Fehlermeldung werfen und Script abbrechen</p><p> echo "Datenbank nicht verfügbar!";</p><p> exit();</p><p> }</p><p> }</p><p> function countuser()</p><p> {</p><p> //hier werden wir den Benutzer zählen</p><p> //Dazu müssen wir Ihn nur in der Datenbank eintragen</p><p> $qry = "INSERT INTO `counter` (ip,time) VALUES ('".$this->ip."',".$this->time.")";</p><p> mysql_query($qry);</p><p> //Schon erledigt - allerdings müssen wir noch den Cookie setzen</p><p> setcookie ("counter","1",$this->tomorrow);</p><p> //Informationen zu setcookie unter php.net/setcookie</p><p> }</p><p> function output($type = array('heute','gestern','woche','monat','gesamt'))</p><p> {</p><p> //Ermitteln wir zunächst alle möglichen Angaben.</p><p> //Heute - Heute, d.h. ab dem heutigen Datum um 00:00:00 Uhr</p><p> //Wir ermitteln den Timestamp:</p><p> $heute = mktime(0,0,0,date('m'),date('d'));</p><p> //Die Parameter von mktime sind deshalb</p><p> //0,0,0 -> 0 Stunden, 0 Minuten, 0 Sekunden (00:00:00 Uhr)</p><p> //date('m'),date('d') -> das sind die Werte des Heutigen Tages</p><p> //Monat,Tag | Mehr infos: php.net/mktime</p><p></p><p> //Für Gestern rechnen wir nun einfach 24 Stunden ab</p><p> //Da wir in Sekunden Rechnen entspricht 60*60*24 einem Tag</p><p> $gestern = $heute - 60*60*24;</p><p></p><p> //Nun für die Woche und den Monat</p><p> $woche = $heute - 60*60*24*7;</p><p> $monat = $heute - 60*60*24*31;</p><p></p><p> //Nun kommen die Werte dazu aus der Datenbank, wir werden sie in einem array speichern</p><p> //Heute:</p><p> $counter['heute'] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` >= ".$heute));</p><p> //Gestern:</p><p> $counter['gestern'] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` <= ".$heute." AND `time` >= ".$gestern));</p><p> //Woche:</p><p> $counter['woche'] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` >= ".$woche));</p><p> //Monat:</p><p> $counter['monat'] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` >= ".$monat));</p><p> //Gesamt:</p><p> $counter['gesamt'] = mysql_num_rows(mysql_query("SELECT * FROM `counter`"));</p><p></p><p> //Kommen wir nun zurück zu unserem Parameter $type der deiser Funktion übergeben wurde</p><p> //Er enthält ein Array mit den Werten die wir haben wollen. Dies ermöglicht uns später</p><p> //ohne aufwand, zum Beispiel nur den Wert für Heute abzufragen, ohne die Methode ändern zu müssen</p><p> //Schreiben wir in das Array $back nun die Werte die wir möchten</p><p> foreach($type as $v)</p><p> {</p><p> $back[$v] = $counter[$v];</p><p> }</p><p> //nun können wir diese Werte zurückgeben</p><p> return $back;</p><p> }</p><p> function graphic()</p><p> {</p><p> //Zuerst benötigen wir die werte der letzten 31 Tage</p><p> //Da wir nicht selber 31 SQL-Abfragen schreiben wollen</p><p> //werden wir sie in eine Schleife verfrachten</p><p> //Doch zuerst brauchen wir den heutigen tag</p><p> $time = mktime(0,0,0,date('m'),date('d'));</p><p> //nun werden wir die Timestamps der letzten 31 Tage in ein array schreiben</p><p> //Achtung dieses Array fängt mit 1 An nicht mit 0. der Key 1 ist heute, 2 ist gestern usw.</p><p> $timestamps = array('');</p><p> while(count($timestamps)<32)</p><p> {</p><p> $timestamps[] = $time; //Das Array ausfüllen</p><p> $time -= 60*60*24; //Immer 1 Tag zurückrechnen</p><p> }</p><p> //gut nun haben wir das array - fehlen die Werte der Tage</p><p> //auch das machen wir wieder in einem Array und einer Schleife</p><p> foreach($timestamps as $k=>$val)</p><p> {</p><p> if($k==0)</p><p> continue;</p><p> if($k==1)</p><p> $values[$k] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` >= ".$val));</p><p> else</p><p> {</p><p> $time2 = $val + 60*60*24;</p><p> $values[$k] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` < ".$time2." AND `time` >= ".$val));</p><p> }</p><p> }</p><p> //nun haben wir die Werte der Enstprechenden Tage und können daraus eine Tabelle entstehen lassen.</p><p> //als erstes benötigen wir die Anzahl der Zeilen - jede Zeile ist 1 Besucher</p><p> //dazu ermitteln wir den höchsten Wert</p><p> $height = max($values);</p><p> $scale = 1; //Maßstab ist 1 Besucher pro Zeile</p><p> $nheight = $height;</p><p> while($nheight > 10) //Mehr als 10 Zeilen sind unsinnig!</p><p> {</p><p> //Daher werden wir in diesem Falle den Maßstab ändern</p><p> //Wir werden den Maßstab auf 2 Besucher pro Zeile setzen!</p><p> $scale++;</p><p> $nheight = $height/$scale;</p><p> //Falls jetzt immernoch mehr als 50 ist, setzen wir Maßstab</p><p> //auf 3,4,5,6,7, usw. Besucher pro Zeile</p><p> }</p><p> $height = $nheight;</p><p> //kommen wir nun zum Erstellen der Tabelle</p><p> //Als erstes brauchen wir das 1*1px große Bild</p><p> $pxbild = "reddot.gif"; //Pfad des Bildes relativ zur Datei, in der der Counter angezeigt wird</p><p> //In HTML ist eine Tabelle so aufgebaut, dass wir zuerst die Zeilen und darin die Spalten</p><p> //angeben müsssen, fangen wir also mit der Maßeinheit an!</p><p> $table = '<table cellpadding="0" cellspacing="0">';</p><p> $table.= '<tr>';</p><p> $table.= '<td style="vertical-align:bottom;">';</p><p> $table.= '<b>Besucher</b>';</p><p> $table.= '</td>';</p><p> $table.= '<td colspan="31" style="vertical-align:bottom;text-align:center;">';</p><p> $table.= '<b>Besucherstatistik (grafisch)</b>';</p><p> $table.= '</td>';</p><p> $table.= '</tr>';</p><p> //Ab jetzt wird es schwieriger, denn wir müssen die Tabelle ab hier dynamisch generieren.</p><p> //Dies geschieht in folgenden schleifen</p><p> $gone = 0;</p><p> for($i = 0; $i <= $height; $i++) //schleife für Zeilen</p><p> {</p><p> $table.= '<tr>';</p><p> //oben sollte der höchste Wert stehen, also müssen wir nun die höhe mit dem</p><p> //Maßstab verrechnen:</p><p> if(round(($height-$i)*$scale,0)!=0)</p><p> {</p><p> $table.= '<td style="height:20px; vertical-align:top;border-bottom:1px solid black;text-align:right;border-right:1px solid black;padding-right:2px;">';</p><p> $table.= round(($height-$i)*$scale,0);</p><p> $table.= '</td>';</p><p> }</p><p> //nun müssen 31 weitere spalten folgen mit den Balken.</p><p> //Die Balken sollen jedoch durchgehend sein, und bekommen daher ein rowspan</p><p> //Sie dürfen nur einmal angezeigt werden, d.h. es muss eine bedingung her</p><p> if(!$gone)</p><p> {</p><p> $gone = 1;</p><p> for($j = 31; $j > 0; $j--)</p><p> {</p><p> //hier generieren wir nun die balken, da der 31. Tag links stehen soll</p><p> //müssen wir hier 'rückwärts' denken</p><p> //Wir wissen außerdem dass jede zeile 20 px hoch ist und können daher</p><p> //errechnen wie hoch der balken sein soll</p><p> //eine Zeile ist 20 px hoch</p><p> //Bei einem maßstab von 1 = anzahl besucher*20</p><p> //Bei einem maßstab von 2 = anzahl besucher*20/2</p><p> //usw.</p><p> $heightofgraph = $values[$j]/$scale*20+20;</p><p> $heightofgraph = round($heightofgraph,0);</p><p> $widthofgraph = 10; //Wie breit soll ein Balken sein? 10 px dürfte ok sein</p><p> $colotofgraph = "#54789a";</p><p> $table.= '<td rowspan="'.($height+2).'" style="border-bottom:1px solid black;vertical-align:bottom;height:'.($height*20).';width:20px;padding-left:2px;">';</p><p> $table.= '<div style="width:'.$widthofgraph.';height:'.$heightofgraph.';background-color:'.$colotofgraph.';font-size:0px;">a</div>';</p><p> $table.= '</td>';</p><p> }</p><p> }</p><p> $table.= '</tr>';</p><p> }</p><p> //Nun haben wir unsere Tabelle fast fertig</p><p> //Als letztes fügen wir noch die Beschriftung der Tage hinzu</p><p> $table.= '<tr>';</p><p> $table.= '<td style="height:20px; vertical-align:top;border-bottom:1px solid black;border-right:1px solid black;text-align:right;padding-right:2px;">';</p><p> $table.= '0';</p><p> $table.= '</td>';</p><p> $table.= '</tr>';</p><p> $table.= '<tr>';</p><p> $table.= '<td>';</p><p> $table.= '&nbsp;';</p><p> $table.= '</td>';</p><p> $table.= '<td colspan="29" style="text-align:center;">';</p><p> $table.= 'vor';</p><p> $table.= '</td>';</p><p> $table.= '</tr>';</p><p> $table.= '<tr>';</p><p> $table.= '<td style="vertical-align:bottom;">';</p><p> $table.= '&nbsp;';</p><p> $table.= '</td>';</p><p> for($k = 30; $k > 0; $k--)</p><p> {</p><p> $table.= '<td style="vertical-align:bottom;border-right:1px dotted black;padding:2px;text-align:center;">';</p><p> $table.= $k;</p><p> $table.= '</td>';</p><p> }</p><p></p><p> $table.= '<td style="vertical-align:bottom;padding:2px;">';</p><p> $table.= 'Heute';</p><p> $table.= '</td>';</p><p> $table.= '</tr>';</p><p> $table.= '<tr>';</p><p> $table.= '<td>';</p><p> $table.= '&nbsp;';</p><p> $table.= '</td>';</p><p> $table.= '<td colspan="29" style="text-align:center;">';</p><p> $table.= 'Tagen';</p><p> $table.= '</td>';</p><p> $table.= '</tr>';</p><p> $table.= '</table>';</p><p> //Unsere Tabelle ist fertig und wir können sie zurückgeben</p><p> return $table;</p><p> }</p><p>}</p><p>?>[/PHP]</p><p></p><p>das ist der gesamte code, dann noch der code für die darstellung des graphen :</p><p></p><p>[PHP]<?php</p><p>$counter = new Counter(); </p><p>$countdata = $counter->output(); //Alle Daten bekommen</p><p>echo "Heute: ".$countdata["heute"]; //Heute</p><p>echo "Gestern: ".$countdata["gestern"]; //Gestern</p><p>echo "Woche: ".$countdata["woche"]; //Woche</p><p>echo "Monat: ".$countdata["monat"]; //Monat</p><p>echo "Gesamt: ".$countdata["gesamt"]; //Gesamt </p><p>?> </p><p><?php</p><p>echo $counter->graphic(); //Grafik anzeigen</p><p>?> [/PHP]</p><p></p><p>und dann noch das skript welches die besucher zählt:</p><p></p><p>[PHP]<?php</p><p>include("counter.php"); //In dieser Datei befindet sich die Klasse Counter</p><p>$counter = new Counter();</p><p>?> [/PHP]</p><p></p><p>der erste code liegt in counter.php</p><p>der zweite code in ausgabe.php</p><p>das dritte liegt in index.php</p><p></p><p>...</p></blockquote><p></p>
[QUOTE="elyion_g2, post: 2074551, member: 359721"] [b]AW: Erweiterter Besucherzähler (Counter) mit grafischer Ausgabe[/b] [PHP] <?php date_default_timezone_set('Europe/Paris'); error_reporting(E_ALL); class counter { var $ip; var $time; var $yesterday; var $tomorrow; var $mysqlhost; var $mysqluser; var $mysqlpass; var $mysqldatabase; var $mysqllink; function counter() { //Die benötigten Daten bekommen $this->ip = $_SERVER["REMOTE_ADDR"]; //IP des Benutzers bekommen $this->time = time(); //aktuelle Zeit nehmen $this->yesterday = time() - 60*60*24; //24 Stunden zurückrechnen $this->tomorrow = mktime(23,59,59,date('m'),(date('d')-1)); //24 Stunden vorrechnen $this->today = mktime(0,0,1,date('m'),date('d')); //24 Stunden vorrechnen $this->mysqlhost = "webhost"; //Euer MySQL-Host $this->mysqluser = "benutzer"; //Euer MySQL-Benutzername $this->mysqlpass = "passwort"; //Euer MySQL-Passwort $this->mysqldatabase = "datenbankname"; //Eure MySQL-Datenbank $this->mysqlconnect(); //bauen wir eine MySQL Verbindung auf //Prüfen ob der Benutzer gezählt wird //Zuerst prüfen wir durch abfragen des Cookies if(!isset($_COOKIE['counter'])) { //Der Benutzer hat keinen Cookie - prüfen wir nochmals mittels IP $qry = "SELECT * FROM `counter` WHERE `time` > '".$this->yesterday."' LIMIT 1"; //prüfen ob der Benutzer innerhalb der letzten 24 Stunden in der Datenbank steht $qry = mysql_query($qry); if(mysql_num_rows($qry) == 0) { //Der Benutzer ist auch nicht in der Datenbank, wir können Ihn zählen $this->countuser(); } } } function mysqlconnect() { //Aufbau der Verbindung zum MySQL Server if(!$this->mysqllink = @mysql_connect($this->mysqlhost,$this->mysqluser,$this->mysqlpass)) { //Anscheinend ist der Aufbau fehlgeschlagen //Fehlermeldung werfen und Script abbrechen echo "Verbindung zum MySQL Server nicht möglich!"; exit(); } //Datenbank auswählen if(!@mysql_select_db($this->mysqldatabase)) { //Anscheinend ist die Verbindung zur Datenabnk fehlgeschlagen //Fehlermeldung werfen und Script abbrechen echo "Datenbank nicht verfügbar!"; exit(); } } function countuser() { //hier werden wir den Benutzer zählen //Dazu müssen wir Ihn nur in der Datenbank eintragen $qry = "INSERT INTO `counter` (ip,time) VALUES ('".$this->ip."',".$this->time.")"; mysql_query($qry); //Schon erledigt - allerdings müssen wir noch den Cookie setzen setcookie ("counter","1",$this->tomorrow); //Informationen zu setcookie unter php.net/setcookie } function output($type = array('heute','gestern','woche','monat','gesamt')) { //Ermitteln wir zunächst alle möglichen Angaben. //Heute - Heute, d.h. ab dem heutigen Datum um 00:00:00 Uhr //Wir ermitteln den Timestamp: $heute = mktime(0,0,0,date('m'),date('d')); //Die Parameter von mktime sind deshalb //0,0,0 -> 0 Stunden, 0 Minuten, 0 Sekunden (00:00:00 Uhr) //date('m'),date('d') -> das sind die Werte des Heutigen Tages //Monat,Tag | Mehr infos: php.net/mktime //Für Gestern rechnen wir nun einfach 24 Stunden ab //Da wir in Sekunden Rechnen entspricht 60*60*24 einem Tag $gestern = $heute - 60*60*24; //Nun für die Woche und den Monat $woche = $heute - 60*60*24*7; $monat = $heute - 60*60*24*31; //Nun kommen die Werte dazu aus der Datenbank, wir werden sie in einem array speichern //Heute: $counter['heute'] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` >= ".$heute)); //Gestern: $counter['gestern'] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` <= ".$heute." AND `time` >= ".$gestern)); //Woche: $counter['woche'] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` >= ".$woche)); //Monat: $counter['monat'] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` >= ".$monat)); //Gesamt: $counter['gesamt'] = mysql_num_rows(mysql_query("SELECT * FROM `counter`")); //Kommen wir nun zurück zu unserem Parameter $type der deiser Funktion übergeben wurde //Er enthält ein Array mit den Werten die wir haben wollen. Dies ermöglicht uns später //ohne aufwand, zum Beispiel nur den Wert für Heute abzufragen, ohne die Methode ändern zu müssen //Schreiben wir in das Array $back nun die Werte die wir möchten foreach($type as $v) { $back[$v] = $counter[$v]; } //nun können wir diese Werte zurückgeben return $back; } function graphic() { //Zuerst benötigen wir die werte der letzten 31 Tage //Da wir nicht selber 31 SQL-Abfragen schreiben wollen //werden wir sie in eine Schleife verfrachten //Doch zuerst brauchen wir den heutigen tag $time = mktime(0,0,0,date('m'),date('d')); //nun werden wir die Timestamps der letzten 31 Tage in ein array schreiben //Achtung dieses Array fängt mit 1 An nicht mit 0. der Key 1 ist heute, 2 ist gestern usw. $timestamps = array(''); while(count($timestamps)<32) { $timestamps[] = $time; //Das Array ausfüllen $time -= 60*60*24; //Immer 1 Tag zurückrechnen } //gut nun haben wir das array - fehlen die Werte der Tage //auch das machen wir wieder in einem Array und einer Schleife foreach($timestamps as $k=>$val) { if($k==0) continue; if($k==1) $values[$k] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` >= ".$val)); else { $time2 = $val + 60*60*24; $values[$k] = mysql_num_rows(mysql_query("SELECT * FROM `counter` WHERE `time` < ".$time2." AND `time` >= ".$val)); } } //nun haben wir die Werte der Enstprechenden Tage und können daraus eine Tabelle entstehen lassen. //als erstes benötigen wir die Anzahl der Zeilen - jede Zeile ist 1 Besucher //dazu ermitteln wir den höchsten Wert $height = max($values); $scale = 1; //Maßstab ist 1 Besucher pro Zeile $nheight = $height; while($nheight > 10) //Mehr als 10 Zeilen sind unsinnig! { //Daher werden wir in diesem Falle den Maßstab ändern //Wir werden den Maßstab auf 2 Besucher pro Zeile setzen! $scale++; $nheight = $height/$scale; //Falls jetzt immernoch mehr als 50 ist, setzen wir Maßstab //auf 3,4,5,6,7, usw. Besucher pro Zeile } $height = $nheight; //kommen wir nun zum Erstellen der Tabelle //Als erstes brauchen wir das 1*1px große Bild $pxbild = "reddot.gif"; //Pfad des Bildes relativ zur Datei, in der der Counter angezeigt wird //In HTML ist eine Tabelle so aufgebaut, dass wir zuerst die Zeilen und darin die Spalten //angeben müsssen, fangen wir also mit der Maßeinheit an! $table = '<table cellpadding="0" cellspacing="0">'; $table.= '<tr>'; $table.= '<td style="vertical-align:bottom;">'; $table.= '<b>Besucher</b>'; $table.= '</td>'; $table.= '<td colspan="31" style="vertical-align:bottom;text-align:center;">'; $table.= '<b>Besucherstatistik (grafisch)</b>'; $table.= '</td>'; $table.= '</tr>'; //Ab jetzt wird es schwieriger, denn wir müssen die Tabelle ab hier dynamisch generieren. //Dies geschieht in folgenden schleifen $gone = 0; for($i = 0; $i <= $height; $i++) //schleife für Zeilen { $table.= '<tr>'; //oben sollte der höchste Wert stehen, also müssen wir nun die höhe mit dem //Maßstab verrechnen: if(round(($height-$i)*$scale,0)!=0) { $table.= '<td style="height:20px; vertical-align:top;border-bottom:1px solid black;text-align:right;border-right:1px solid black;padding-right:2px;">'; $table.= round(($height-$i)*$scale,0); $table.= '</td>'; } //nun müssen 31 weitere spalten folgen mit den Balken. //Die Balken sollen jedoch durchgehend sein, und bekommen daher ein rowspan //Sie dürfen nur einmal angezeigt werden, d.h. es muss eine bedingung her if(!$gone) { $gone = 1; for($j = 31; $j > 0; $j--) { //hier generieren wir nun die balken, da der 31. Tag links stehen soll //müssen wir hier 'rückwärts' denken //Wir wissen außerdem dass jede zeile 20 px hoch ist und können daher //errechnen wie hoch der balken sein soll //eine Zeile ist 20 px hoch //Bei einem maßstab von 1 = anzahl besucher*20 //Bei einem maßstab von 2 = anzahl besucher*20/2 //usw. $heightofgraph = $values[$j]/$scale*20+20; $heightofgraph = round($heightofgraph,0); $widthofgraph = 10; //Wie breit soll ein Balken sein? 10 px dürfte ok sein $colotofgraph = "#54789a"; $table.= '<td rowspan="'.($height+2).'" style="border-bottom:1px solid black;vertical-align:bottom;height:'.($height*20).';width:20px;padding-left:2px;">'; $table.= '<div style="width:'.$widthofgraph.';height:'.$heightofgraph.';background-color:'.$colotofgraph.';font-size:0px;">a</div>'; $table.= '</td>'; } } $table.= '</tr>'; } //Nun haben wir unsere Tabelle fast fertig //Als letztes fügen wir noch die Beschriftung der Tage hinzu $table.= '<tr>'; $table.= '<td style="height:20px; vertical-align:top;border-bottom:1px solid black;border-right:1px solid black;text-align:right;padding-right:2px;">'; $table.= '0'; $table.= '</td>'; $table.= '</tr>'; $table.= '<tr>'; $table.= '<td>'; $table.= ' '; $table.= '</td>'; $table.= '<td colspan="29" style="text-align:center;">'; $table.= 'vor'; $table.= '</td>'; $table.= '</tr>'; $table.= '<tr>'; $table.= '<td style="vertical-align:bottom;">'; $table.= ' '; $table.= '</td>'; for($k = 30; $k > 0; $k--) { $table.= '<td style="vertical-align:bottom;border-right:1px dotted black;padding:2px;text-align:center;">'; $table.= $k; $table.= '</td>'; } $table.= '<td style="vertical-align:bottom;padding:2px;">'; $table.= 'Heute'; $table.= '</td>'; $table.= '</tr>'; $table.= '<tr>'; $table.= '<td>'; $table.= ' '; $table.= '</td>'; $table.= '<td colspan="29" style="text-align:center;">'; $table.= 'Tagen'; $table.= '</td>'; $table.= '</tr>'; $table.= '</table>'; //Unsere Tabelle ist fertig und wir können sie zurückgeben return $table; } } ?>[/PHP] das ist der gesamte code, dann noch der code für die darstellung des graphen : [PHP]<?php $counter = new Counter(); $countdata = $counter->output(); //Alle Daten bekommen echo "Heute: ".$countdata["heute"]; //Heute echo "Gestern: ".$countdata["gestern"]; //Gestern echo "Woche: ".$countdata["woche"]; //Woche echo "Monat: ".$countdata["monat"]; //Monat echo "Gesamt: ".$countdata["gesamt"]; //Gesamt ?> <?php echo $counter->graphic(); //Grafik anzeigen ?> [/PHP] und dann noch das skript welches die besucher zählt: [PHP]<?php include("counter.php"); //In dieser Datei befindet sich die Klasse Counter $counter = new Counter(); ?> [/PHP] der erste code liegt in counter.php der zweite code in ausgabe.php das dritte liegt in index.php ... [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ▲ = 7, ▼ = 3, ◇ = 2 und die Summe von ▲ und ▼ durch ◇ geteilt wird, was ist das Ergebnis?
Antworten
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Erweiterter Besucherzähler (Counter) mit grafischer Ausgabe
Oben