|
|
User gesamt
|
:
|
2439136
|
User online
|
:
|
8
|
|
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
|
|
|
|
MyWebsolution.de Foren » Tutorials » Besucherstatistik - bekomme es einfach nicht hin =(
Seite:
|
1
|
Posts pro Seite: 5
10
20
|
Autor
|
Thread
|
26.09.2008 22:00 Uhr
|
Besucherstatistik - bekomme es einfach nicht hin =(
|
DerGermane
|
Forenuser
|
|
registriert
|
26.09.2008
|
wohnt in
|
Deutschland
|
Beiträge
|
10
|
|
Hallo,
ich habe echt Probleme die Besucherstatistik zum laufen zu bringen. Bei mir fängt es schon beim anfang an. Wie stelle ich eine Verbindung mit meiner MySQL Datenbank her? Und wie erstelle ich in dieser die beiden Tabellen die benötigt werden? Geschieht das alles in einer .php datei? 
MfG
DerGermane
http://www.proton-tuning.de.tf
|
|
|
26.09.2008 23:17 Uhr
|
|
maulepan
|
User
|
|
registriert
|
03.09.2008
|
wohnt in
|
Dessau-Rosslau
|
Beiträge
|
9
|
|
http://www.php-einfach.de/tuts_php_counter.php
<?php
while($hausaufgaben > $freizeit)
{
$hausaufgaben--;
$freizeit++;
}
?>
|
|
|
26.09.2008 23:44 Uhr
|
MySQL Verbindung herstellen
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Schreib in eine Datei:
PHP:
<?php
error_reporting(E_ALL);
// MySQL-Verbindung herstellen
$MYSQL_HOST = 'localhost';
$MYSQL_USER = 'root';
$MYSQL_PASS = 'myPassWord';
$MYSQL_DATA = 'myDataBase';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
// Tabellen erstelleb
$sql = 'CREATE TABLE `Online` ('
. ' `IP` VARCHAR(15) NULL, '
. ' `Datum` DATETIME NULL'
. ' )';
mysql_query($sql);
echo "Online erstellt..<br>";
$sql = 'CREATE TABLE `Counter` ('
. ' `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, '
. ' `Datum` DATE NOT NULL, '
. ' `Anzahl` INT NULL DEFAULT \'0\' '
. ' )';
mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
echo "Counter erstellt..<br>";
?>
Ruf die Datei dann auf, dann sollten sich die Tabellen "installieren". Vorher natürlich noch die Werte bei der MySQL-Verbindung anpassen
|
|
|
27.09.2008 09:49 Uhr
|
|
DerGermane
|
Forenuser
|
|
registriert
|
26.09.2008
|
wohnt in
|
Deutschland
|
Beiträge
|
10
|
|
Ok danke erstmal. Aber so richtig weiter komm ich jetzt nicht. Seh nicht ganz durch was für Datein ich erstell muss. Ich zeig euch mal was ich habe.
Also ich habe zuerst in einer config.php Datei die Tabellen erstellt. Es funkionierte auch. Es kam die Texte Tabelle erstellt und Tabelle Online. dann hab ich die config.php wieder gelöscht. In einer .phtml hab ich dann die 2 anderen Datein mit include eingebunden. Aber das ergebniss könnt ihr euch unten ja selber anschaun ...
Meine config.php Datei die die Tabellen erstellt.
Code:
<?php
error_reporting(E_ALL);
// MySQL-Verbindung herstellen
$MYSQL_HOST = 'localhost';
$MYSQL_USER = '???';
$MYSQL_PASS = '???';
$MYSQL_DATA = '???';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
// Tabellen erstelleb
$sql = 'CREATE TABLE `Online` ('
. ' `IP` VARCHAR(15) NULL, '
. ' `Datum` DATETIME NULL'
. ' )';
mysql_query($sql);
echo "Online erstellt..<br>";
$sql = 'CREATE TABLE `Counter` ('
. ' `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, '
. ' `Datum` DATE NOT NULL, '
. ' `Anzahl` INT NULL DEFAULT \'0\' '
. ' )';
mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
echo "Counter erstellt..<br>";
?>
Die Datei die die Werte ausgeben soll:
Code:
<?php
error_reporting(E_ALL);
// MySQL-Verbindung herstellen
$MYSQL_HOST = '???';
$MYSQL_USER = '???';
$MYSQL_PASS = '???';
$MYSQL_DATA = '???';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
?>
<?php
// Prüfen, ob bereits ein Counter für den
// heutigen Tag erstellt wurde
$sql = "SELECT
ID
FROM
Counter
WHERE
Datum = CURDATE()
";
$result = mysql_query($sql);
// ist der Tag nocht nicht vorhanden,
// wird ein neuer Tagescounter erstellt
if(!mysql_num_rows($result)){
$sql = "INSERT INTO
Counter
SET
Datum = CURDATE()
";
mysql_query($sql);
}
// Alte (mehr als 1 Tag) IPs in 'Online' löschen
// damit die Datenbank nicht überfüllt wird
$sql = "DELETE FROM
Online
WHERE
DATE_SUB(NOW(), INTERVAL 1 DAY) > Datum
";
mysql_query($sql);
// Überprüfe, ob die IP bereits gespeichert ist
$sql = "SELECT
IP
FROM
Online
Where
IP = '".$_SERVER['REMOTE_ADDR']."'";
$result = mysql_query($sql);
// Falls nicht, wird sie gespeichert...
if (!mysql_num_rows($result)){
$sql = "INSERT INTO
Online
(IP,
Datum
)
VALUES ('".$_SERVER['REMOTE_ADDR']."',
NOW()
)
";
mysql_query($sql);
// ... und die Anzahl wird um 1 erhöht
$sql = "UPDATE
Counter
SET
Anzahl = Anzahl+1
WHERE
Datum = CURDATE()
";
mysql_query($sql);
}
// Ansonsten wird ihr Datum aktualisiert
else {
$sql = "UPDATE
Online
SET
Datum = NOW()
WHERE
IP = '".$_SERVER['REMOTE_ADDR']."'
";
mysql_query($sql);
}
?>
<?php
echo "<h1>Statistik</h1>\n";
echo " <table cellpadding=\"2\" style=\"margin-bottom:10px;\">\n".
" <tr><td>Jetzt</td><td style=\"text-align:right;\">".$user_now."</td></tr>\n".
" <tr><td>Heute</td><td style=\"text-align:right;\">".$user_heute."</td></tr>\n".
" <tr><td>Gestern</td><td style=\"text-align:right;\">".$user_gestern."</td></tr>\n".
" <tr><td>Gesamt</td><td style=\"text-align:right;\">".$user_gesamt."</td></tr>\n".
" </table>\n";
?>
Die Datei die die Werte einlesen soll.
Code:
<?php
error_reporting(E_ALL);
// MySQL-Verbindung herstellen
$MYSQL_HOST = 'localhost';
$MYSQL_USER = '???';
$MYSQL_PASS = '???';
$MYSQL_DATA = '???';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
?>
<?php
// Alle IPs, die nicht älter als 2 Minuten sind,
// werden gezählt
$sql = "SELECT
COUNT(*)
FROM
Online
WHERE
DATE_SUB(NOW(), INTERVAL 2 MINUTE) < Datum
";
$result = mysql_query($sql);
$user_now = mysql_result($result, 0);
?>
<?php
// User die 'heute' auf der Seite waren
$sql = "SELECT
Anzahl
FROM
Counter
WHERE
Datum = CURDATE()
";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$user_heute = $row['Anzahl'];
?>
<?php
// User die 'gestern' auf der Seite waren
$sql = "SELECT
Anzahl
FROM
Counter
WHERE
Datum = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$user_gestern = $row['Anzahl'];
?>
<?php
// User die insgesamt die Seite besucht haben.
// Dazu wird die Gruppenfunktion SUM()
// verwendet, die alle Werte der Spalte 'Anzahl' summiert
$sql = "SELECT
SUM(Anzahl)
FROM
Counter
";
$result = mysql_query($sql);
$user_gesamt = mysql_result($result, 0);
?>
Was das ergebniss ist seht ihr hier: http://gbc.inetservice24.de/proton/statistik.phtml
Dieser Beitrag wurde am 27.09.2008 um 09:50:58 Uhr von DerGermane zum 1. Mal editiert.
http://www.proton-tuning.de.tf
|
|
|
27.09.2008 12:20 Uhr
|
RE:
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Datei z.B. readStatistik.php
> Muss auf jeder Seite deiner Homepage inkludiert werden!
PHP:
<?php
error_reporting(E_ALL);
// MySQL-Verbindung herstellen
$MYSQL_HOST = '???';
$MYSQL_USER = '???';
$MYSQL_PASS = '???';
$MYSQL_DATA = '???';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
/*
* DATENBANKTABELLE AKTUALISIEREN bzw. WERTE SPEICHERN
*/
// Prüfen, ob bereits ein Counter für den
// heutigen Tag erstellt wurde
$sql = "SELECT
ID
FROM
Counter
WHERE
Datum = CURDATE()
";
$result = mysql_query($sql);
// ist der Tag nocht nicht vorhanden,
// wird ein neuer Tagescounter erstellt
if(!mysql_num_rows($result)){
$sql = "INSERT INTO
Counter
SET
Datum = CURDATE()
";
mysql_query($sql);
}
// Alte (mehr als 1 Tag) IPs in 'Online' löschen
// damit die Datenbank nicht überfüllt wird
$sql = "DELETE FROM
Online
WHERE
DATE_SUB(NOW(), INTERVAL 1 DAY) > Datum
";
mysql_query($sql);
// Überprüfe, ob die IP bereits gespeichert ist
$sql = "SELECT
IP
FROM
Online
Where
IP = '".$_SERVER['REMOTE_ADDR']."'";
$result = mysql_query($sql);
// Falls nicht, wird sie gespeichert...
if (!mysql_num_rows($result)){
$sql = "INSERT INTO
Online
(IP,
Datum
)
VALUES ('".$_SERVER['REMOTE_ADDR']."',
NOW()
)
";
mysql_query($sql);
// ... und die Anzahl wird um 1 erhöht
$sql = "UPDATE
Counter
SET
Anzahl = Anzahl+1
WHERE
Datum = CURDATE()
";
mysql_query($sql);
}
// Ansonsten wird ihr Datum aktualisiert
else {
$sql = "UPDATE
Online
SET
Datum = NOW()
WHERE
IP = '".$_SERVER['REMOTE_ADDR']."'
";
mysql_query($sql);
}
/*
* DATEN AUS DEN TABELLEN AUSLESEN
*/
// Alle IPs, die nicht älter als 2 Minuten sind,
// werden gezählt
$sql = "SELECT
COUNT(*)
FROM
Online
WHERE
DATE_SUB(NOW(), INTERVAL 2 MINUTE) < Datum
";
$result = mysql_query($sql);
$user_now = mysql_result($result, 0);
// User die 'heute' auf der Seite waren
$sql = "SELECT
Anzahl
FROM
Counter
WHERE
Datum = CURDATE()
";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$user_heute = $row['Anzahl'];
// User die 'gestern' auf der Seite waren
$sql = "SELECT
Anzahl
FROM
Counter
WHERE
Datum = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$user_gestern = $row['Anzahl'];
// User die insgesamt die Seite besucht haben.
// Dazu wird die Gruppenfunktion SUM()
// verwendet, die alle Werte der Spalte 'Anzahl' summiert
$sql = "SELECT
SUM(Anzahl)
FROM
Counter
";
$result = mysql_query($sql);
$user_gesamt = mysql_result($result, 0);
?>
Datei zb. showStatistik.php
PHP:
<?php
/*
* DATEN AUSGEBEN
*/
echo "<h1>Statistik</h1>\n";
echo " <table cellpadding=\"2\" style=\"margin-bottom:10px;\">\n".
" <tr><td>Jetzt</td><td style=\"text-align:right;\">".$user_now."</td></tr>\n".
" <tr><td>Heute</td><td style=\"text-align:right;\">".$user_heute."</td></tr>\n".
" <tr><td>Gestern</td><td style=\"text-align:right;\">".$user_gestern."</td></tr>\n".
" <tr><td>Gesamt</td><td style=\"text-align:right;\">".$user_gesamt."</td></tr>\n".
" </table>\n";
?>
|
|
|
27.09.2008 18:05 Uhr
|
|
DerGermane
|
Forenuser
|
|
registriert
|
26.09.2008
|
wohnt in
|
Deutschland
|
Beiträge
|
10
|
|
Naja ich habe die Datei überall eingefügt und auf einer extra Seite würde ich gerne die Daten ausgegeben bekommen nur tut er das nicht. Ersagt mir:
Zitat:Notice: Undefined variable: user_now in /home/www/web17/html/gbc/proton/statistik/ausgabe.php on line 18
Notice: Undefined variable: user_heute in /home/www/web17/html/gbc/proton/statistik/ausgabe.php on line 19
Notice: Undefined variable: user_gestern in /home/www/web17/html/gbc/proton/statistik/ausgabe.php on line 20
Notice: Undefined variable: user_gesamt in /home/www/web17/html/gbc/proton/statistik/ausgabe.php on line 21
Er weis also nichts mit den Variablen:
.$user_now
.$user_heute
.$user_gerstern
.$user_gesamt
anzufangen ...
woran kann das liegen? Keine Verbindung zur Datenbank? Keine erstellten Tabellen?
MfG
DerGermane
http://www.proton-tuning.de.tf
|
|
|
27.09.2008 18:38 Uhr
|
|
DerGermane
|
Forenuser
|
|
registriert
|
26.09.2008
|
wohnt in
|
Deutschland
|
Beiträge
|
10
|
|
Ok hab wohl mein Fehler gefunden. Aber gibt es eine möglichkeit in der ausgagebe die Tabelle mit einer CSS Datei zu verbinden? Also so:
<?php
echo " <table cellpadding=\"2\" style=\"margin-bottom:10px;\ id=\"menu\"">\n".
" <tr><td>Jetzt</td><td style=\"text-align:right;\">".$user_now.&q uot;</td></tr>\n".
" <tr><td>Heute</td><td style=\"text-align:right;\">".$user_heute. "</td></tr>\n".
" <tr><td>Gestern</td><td style=\"text-align:right;\">".$user_gester n."</td></tr>\n".
" <tr><td>Gesamt</td><td style=\"text-align:right;\">".$user_gesamt ."</td></tr>\n".
" </table>\n";
?>
Leider geht das nicht so einfach =(
http://www.proton-tuning.de.tf
|
|
|
28.09.2008 03:02 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
PHP:
<?php
echo
" <table id=\"menu\" cellpadding=\"2\" style=\"margin-bottom:10px;\">\n".
" <tr><td>Jetzt</td><td style=\"text-align:right;\">".$user_now."</td></tr>\n".
" <tr><td>Heute</td><td style=\"text-align:right;\">".$user_heute."</td></tr>\n".
" <tr><td>Gestern</td><td style=\"text-align:right;\">".$user_gestern."</td></tr>\n".
" <tr><td>Gesamt</td><td style=\"text-align:right;\">".$user_gesamt."</td></tr>\n".
" </table>\n";
?>
Warum soll das nicht gehen 0o?
Dieser Beitrag wurde am 28.09.2008 um 03:02:51 Uhr von Flitze zum 2. Mal editiert.
|
|
|
28.09.2008 09:27 Uhr
|
|
DerGermane
|
Forenuser
|
|
registriert
|
26.09.2008
|
wohnt in
|
Deutschland
|
Beiträge
|
10
|
|
Naja habe jetzt die Werte die ich brauchte über "sryle" der Tabelle übertragen weil mit dem Code den ich hatte ging das irgendwie nicht. Vllt. weil er die CSS nicht gefunden hat aber egal es geht ja auch so.
Stehe jetzt aber vor einem neuen Problem. Und möchte ich nun die detallierte Ausgabe der Statistik haben nur geht das irgendwie nicht.
soweit kam ich bis jetzt: http://gbc.inetservice24.de/proton/statistik.phtml
der Code sieht so aus:
PHP:
<?php
error_reporting(E_ALL);
// MySQL-Verbindung herstellen
$MYSQL_HOST = 'localhost';
$MYSQL_USER = '';
$MYSQL_PASS = '';
$MYSQL_DATA = '';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
$Monatsnamen = array(1 => 'Januar',
2 => 'Februar',
3 => 'März',
4 => 'April',
5 => 'Mai',
6 => 'Juni',
7 => 'Juli',
8 => 'August',
9 => 'September',
10 => 'Oktober',
11 => 'November',
12 => 'Dezember'
);
// heutiges Datum auswählen
$datum = getdate();
$jahr = $datum['year'];
$monat = $datum['mon'];
$tag = $datum['mday'];
// Fehlerarray erzeugen
$errors = array();
// Prüfen, ob Jahr, Monat und Tag ausgewählt wurden
if(!isset($_POST['Jahr']) OR $_POST['Jahr'] == '0')
$errors[] = "Sie haben kein Jahr ausgewählt.";
elseif(!isset($_POST['Monat']) OR $_POST['Monat'] == '0')
$errors[] = "Sie haben keinen Monat ausgewählt.";
elseif(!isset($_POST['Tag']) OR $_POST['Tag'] == '0')
$errors[] = "Sie haben keinen Tag ausgewählt.";
else{
// Prüfen, ob ds Datum gültig ist
if(!checkdate($_POST['Monat'], $_POST['Tag'], $_POST['Jahr']))
$errors[] = "Das Datum (".$_POST['Tag']." ".$Monatsnamen[$_POST['Monat']].". ".$_POST['Jahr'].") ist ungültig.";
else{
// Prüfen, ob zu dem ausgewählten Datum ein Counter existiert
$sql = "SELECT
COUNT(*)
FROM
Counter
WHERE
YEAR(Datum) = '".mysql_real_escape_string($_POST['Jahr'])."' AND
MONTH(Datum) = '".mysql_real_escape_string($_POST['Monat'])."' AND
DAYOFMONTH(Datum) = '".mysql_real_escape_string($_POST['Tag'])."'
";
$result = doQuery($sql);
if(!mysql_result($result, 0))
$errors[] = "Zu dem gewählten Datum (".$_POST['Tag'].". ".$Monatsnamen[$_POST['Monat']]." ".$_POST['Jahr'].") existieren keine Daten.";
}
}
// Fehler ausgeben
if(count($errors)){
echo "<p style=\"font-weight:bold;\">\n";
foreach($errors as $error)
echo $error."\n<br>\n";
echo "Standardmäßig wird das heutige Datum (".$tag.". ".$Monatsnamen[$monat]." ".$jahr.") ausgewählt.\n";
echo "</p>\n";
}
// Ansonsten Daten aus dem Formular überneh?????? †O???men
else{
$jahr = (int)mysql_real_escape_string($_POST['Jahr']);
$monat = (int)mysql_real_escape_string($_POST['Monat']);
$tag = (int)mysql_real_escape_string($_POST['Tag']);
}
echo "<form name=\"User\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
" method=\"post\" ".
" accept-charset=\"ISO-8859-1\">\n";
echo "<div style=\"padding:0px 0px 0px 20px;\">\n";
echo "<select name=\"Tag\">\n";
echo "<option value=\"0\">Tag</option>\n";
for($i=1;$i<=31;$i++){
if($i==$tag)
echo "<option value=\"".$i."\" selected>".$i.".</option>\n";
else
echo "<option value=\"".$i."\">".$i.".</option>\n";
}
echo "</select>\n";
echo "<select name=\"Monat\">\n";
echo "<option value=\"0\">Monat</option>\n";
for($i=1;$i<=12;$i++){
if($i==$monat)
echo "<option value=\"".$i."\" selected>".$Monatsnamen[$i]."</option>\n";
else
echo "<option value=\"".$i."\">".$Monatsnamen[$i]."</option>\n";
}
echo "</select>\n";
echo "<select name=\"Jahr\">\n";
echo "<option value=\"0\">Jahr</option>\n";
for($i=2008;$i>=2006;$i--){
if($i==$jahr)
echo "<option value=\"".$i."\" selected>".$i."</option>\n";
else
echo "<option value=\"".$i."\">".$i."</option>\n";
}
echo "</select>\n";
echo "<br>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Daten anzeigen\">\n";
echo "</div></form>\n";
$sql = "SELECT
Anzahl
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."' AND
MONTH(Datum) = '".$monat."' AND
DAYOFMONTH(Datum) = '".$tag."'
";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$anzahl_tag = $row['Anzahl'];
$sql = "SELECT
SUM(Anzahl)
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."' AND
MONTH(Datum) = '".$monat."'
";
$result = mysql_query($sql);
$anzahl_monat = mysql_result($result, 0);
$sql = "SELECT
SUM(Anzahl)
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."'
";
$result = mysql_query($sql);
$anzahl_jahr = mysql_result($result, 0);
?>
`
Wie ihr seht kann der User einen Tag auswählen und der erste Teil läufz auch fehlerlos nur sobald er dann einen Tag gewählt hat kommt das:
Fatal error: Call to undefined function doQuery() in /home/www/web17/html/gbc/proton/include/statistik_lang.php on line 56
http://www.proton-tuning.de.tf
|
|
|
28.09.2008 14:07 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
ersetze
doQuery durch mysql_query
doQuery is ne eigene Funktion von mir, ist da fälschlicherweise reingerutscht
|
|
|
28.09.2008 21:21 Uhr
|
|
DerGermane
|
Forenuser
|
|
registriert
|
26.09.2008
|
wohnt in
|
Deutschland
|
Beiträge
|
10
|
|
Ok das funzt nun auch schon ... aber ein letztes problem bleibt...
Die Ausgabe der Daten in einem Diagramm. Wäre nett wenn ihr euch mal das mal anschaut:
http://gbc.inetservice24.de/proton/statistik.phtml
Irgendwas stimmt da nicht.
Gebe euch mal den Code meiner .php Datei
PHP:
<?php
$diagramme = array();
$diagramme['Tag'] = array();
$diagramme['Tag']['Name'] = "";
$diagramme['Tag']['Hoehe'] = 300;
$diagramme['Tag']['Breite'] = 580;
$diagramme['Tag']['Balken'] = 190;
$diagramme['Tag']['Stellen'] = array();
$diagramme['Tag']['Werte'] = array();
// Name z.B. Januar 2008
$diagramme['Tag']['Name'] = $Monatsnamen[$monat]." ".$jahr;
// $stellen bezeichnet die X-Werte des Diagramms
// als Standard wird 31 festgelegt
$stellen = 31;
// Wurde als Monat April (4), Juni (6),
// September (9) oder November (11)gewählt,
// wird die Anzahl der Stellen auf 30 begrenzt
if(in_array($monat, array(4,6,9,11)))
$stellen = 30;
// Wurde der Februar (2) gewählt, wird geprüft,
// ob es sich beim gewählten Jahr um ein Schaltjahr handelt
elseif($monat == 2){
if($jahr%4==0)
$stellen = 29;
else
$stellen = 28;
}
// Für jeden Tag wird der entsprechende Counter ausgelesen
for($i=1; $i<=$stellen; $i++){
$sql = "SELECT
Anzahl
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."' AND
MONTH(Datum) = '".$monat."' AND
DAYOFMONTH(Datum) = '".$i."'
";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
// Sollte kein Counter für einen Tag gefunden werden,
// ist $row['Anzahl'] NULL und wird durch den Cast-Operator
// (int) zu 0, so dass nur INT's vorliegen.
$diagramme['Tag']['Werte'][] = (int)$row['Anzahl'];
$diagramme['Tag']['Stellen'][] = $i;
}
// Jedes Diagramm (Tag/Monat/Jahr) erzeugen
foreach($diagramme as $diagramm => $daten){
// Maximalwert aus den Daten ermitteln, der Maximalwert
// bekommt später die zuvor angegebene maximale Balkenhöhe in px
$maximalwert = max($daten['Werte'])!=0?max($daten['Werte']):1;
// Verhältnis aller Daten zum Maximalwert berechnen
// Jeder Wert erhält dann als Höhe einen Bruchteil der
// maximalen Balkenhöhe
$verhaeltnis = array();
foreach($daten['Werte'] as $key => $wert)
$verhaeltnis[$key] = $wert/$maximalwert;
// Tabelle erzeugen
echo "<table cellpadding=\"1\" style=\"width:".$daten['Breite']."px; height:".$daten['Hoehe']."px; text-align:center; background-color:#aaa; border:solid 1px black; font-size:10px; margin:10px auto\">\n";
// Diagrammname ausgeben
echo " <tr>\n".
" <td colspan=\"".count($daten['Werte'])."\" style=\"height:20px;\">\n".
$daten['Name']."\n".
" </td>\n".
" </tr>\n";
echo " <tr>\n";
// Werte - also Balken - ausgeben
foreach($verhaeltnis as $key => $wert){
// Breite einer Zelle berechnen,
// Ein Balken ist halb so breit wie eine Zelle,
// deshalb das '/2'
echo " <td style=\"vertical-align:bottom; height:200px; width:".floor($daten['Breite']/count($daten['Werte']))."px;\">";
" <div style=\"margin:auto; background-color:red; height:".floor($balken*$wert)."px; width:".floor(($daten['Breite']/2)/count($daten['Werte']))."px\" title=\"".$daten['Werte'][$key]."\">";
" ";
" </div>";
" </td>\n";
}
echo " </tr>\n";
echo " <tr>\n";
// Stellen - also Balkenzuordnung - ausgeben
foreach($daten['Stelle'] as $stelle){
echo " <td style=\"vertical-align:middle; border:solid 1px black; border-width:1px 1px 0px 1px; height:80px;\">";
echo $stelle;
echo " </td>\n";
}
echo " </tr>\n";
echo "</table>\n";
}
$diagramme = array();
$diagramme['Monat'] = array();
$diagramme['Monat']['Name'] = "";
$diagramme['Monat']['Hoehe'] = 300;
$diagramme['Monat']['Breite'] = 580;
$diagramme['Monat']['Balken'] = 190;
$diagramme['Monat']['Stellen'] = array();
$diagramme['Monat']['Werte'] = array();
$diagramme['Monat']['Name'] = $jahr;
for($i=1; $i<=12; $i++){
$sql = "SELECT
SUM(Anzahl)
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."' AND
MONTH(Datum) = '".$i."'
";
$result = mysql_query($sql);
$diagramme['Monat']['Werte'][] = (int)mysql_result($result, 0);
$diagramme['Monat']['Stellen'][] = "<img src=\"bilder/monatsnamen/".$i.".jpg\" alt=\"".$Monatsnamen[$i]."\">\n";
}
?>
MfG
DerGermane
Dieser Beitrag wurde am 28.09.2008 um 21:21:49 Uhr von DerGermane zum 1. Mal editiert.
http://www.proton-tuning.de.tf
|
|
|
30.09.2008 19:19 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
hey,
ersetz mal
$balken
durch
$daten['Breite']
und schreibe das hier
PHP:
<?php
$diagramme['Monat'] = array();
$diagramme['Monat']['Name'] = "";
$diagramme['Monat']['Hoehe'] = 300;
$diagramme['Monat']['Breite'] = 580;
$diagramme['Monat']['Balken'] = 190;
$diagramme['Monat']['Stellen'] = array();
$diagramme['Monat']['Werte'] = array();
$diagramme['Monat']['Name'] = $jahr;
for($i=1; $i<=12; $i++){
$sql = "SELECT
SUM(Anzahl)
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."' AND
MONTH(Datum) = '".$i."'
";
$result = mysql_query($sql);
$diagramme['Monat']['Werte'][] = (int)mysql_result($result, 0);
$diagramme['Monat']['Stellen'][] = "<img src=\"bilder/monatsnamen/".$i.".jpg\" alt=\"".$Monatsnamen[$i]."\">\n";
}
?>
über das hier
PHP:
<?php
//... >> dahin schreiben
// Jedes Diagramm (Tag/Monat/Jahr) erzeugen
foreach($diagramme as $diagramm => $daten){
//...
?>
|
|
|
30.09.2008 22:19 Uhr
|
|
DerGermane
|
Forenuser
|
|
registriert
|
26.09.2008
|
wohnt in
|
Deutschland
|
Beiträge
|
10
|
|
Juhu jetzt gibt er zu mindestens keine Fehlermeldung mehr aus ... nur er liest anscheinend die Werte meines Counters nicht ein ... gib euch am besten nochmal mein kompleten Code vllt. seht ihr ja was da nicht stimmt. Ich habe nichts finden können. Schon mal vorab danke für die Geduld 
PHP:
<?php
error_reporting(E_ALL);
// MySQL-Verbindung herstellen
$MYSQL_HOST = 'localhost';
$MYSQL_USER = '???';
$MYSQL_PASS = '???';
$MYSQL_DATA = '???';
$connid = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
$Monatsnamen = array(1 => 'Januar',
2 => 'Februar',
3 => 'März',
4 => 'April',
5 => 'Mai',
6 => 'Juni',
7 => 'Juli',
8 => 'August',
9 => 'September',
10 => 'Oktober',
11 => 'November',
12 => 'Dezember'
);
// heutiges Datum auswählen
$datum = getdate();
$jahr = $datum['year'];
$monat = $datum['mon'];
$tag = $datum['mday'];
// Fehlerarray erzeugen
$errors = array();
// Prüfen, ob Jahr, Monat und Tag ausgewählt wurden
if(!isset($_POST['Jahr']) OR $_POST['Jahr'] == '0')
$errors[] = "Sie haben kein Jahr ausgewählt.";
elseif(!isset($_POST['Monat']) OR $_POST['Monat'] == '0')
$errors[] = "Sie haben keinen Monat ausgewählt.";
elseif(!isset($_POST['Tag']) OR $_POST['Tag'] == '0')
$errors[] = "Sie haben keinen Tag ausgewählt.";
else{
// Prüfen, ob ds Datum gültig ist
if(!checkdate($_POST['Monat'], $_POST['Tag'], $_POST['Jahr']))
$errors[] = "Das Datum (".$_POST['Tag']." ".$Monatsnamen[$_POST['Monat']].". ".$_POST['Jahr'].") ist
ungültig.";
else{
// Prüfen, ob zu dem ausgewählten Datum ein Counter existiert
$sql = "SELECT
COUNT(*)
FROM
Counter
WHERE
YEAR(Datum) = '".mysql_real_escape_string($_POST['Jahr'])."' AND
MONTH(Datum) = '".mysql_real_escape_string($_POST['Monat'])."' AND
DAYOFMONTH(Datum) = '".mysql_real_escape_string($_POST['Tag'])."'
";
$result = mysql_query($sql);
if(!mysql_result($result, 0))
$errors[] = "Zu dem gewählten Datum (".$_POST['Tag'].". ".$Monatsnamen[$_POST['Monat']]."
".$_POST['Jahr'].") existieren keine Daten.";
}
}
// Fehler ausgeben
if(count($errors)){
echo "<p>\n";
foreach($errors as $error)
echo $error."\n<br>\n";
echo "Standardmäßig wird das heutige Datum (".$tag.". ".$Monatsnamen[$monat]." ".$jahr.") ausgewählt.\n";
echo "</p>\n";
}
// Ansonsten Daten aus dem Formular überneh?????? †O???men
else{
$jahr = (int)mysql_real_escape_string($_POST['Jahr']);
$monat = (int)mysql_real_escape_string($_POST['Monat']);
$tag = (int)mysql_real_escape_string($_POST['Tag']);
}
echo "<form name=\"User\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
" method=\"post\" ".
" accept-charset=\"ISO-8859-1\">\n";
echo "<div style=\"padding:0px 0px 0px 20px;\">\n";
echo "<select name=\"Tag\">\n";
echo "<option value=\"0\">Tag</option>\n";
for($i=1;$i<=31;$i++){
if($i==$tag)
echo "<option value=\"".$i."\" selected>".$i.".</option>\n";
else
echo "<option value=\"".$i."\">".$i.".</option>\n";
}
echo "</select>\n";
echo "<select name=\"Monat\">\n";
echo "<option value=\"0\">Monat</option>\n";
for($i=1;$i<=12;$i++){
if($i==$monat)
echo "<option value=\"".$i."\" selected>".$Monatsnamen[$i]."</option>\n";
else
echo "<option value=\"".$i."\">".$Monatsnamen[$i]."</option>\n";
}
echo "</select>\n";
echo "<select name=\"Jahr\">\n";
echo "<option value=\"0\">Jahr</option>\n";
for($i=2008;$i>=2008;$i--){
if($i==$jahr)
echo "<option value=\"".$i."\" selected>".$i."</option>\n";
else
echo "<option value=\"".$i."\">".$i."</option>\n";
}
echo "</select>\n";
echo "<br>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Daten anzeigen\">\n";
echo "</div></form>\n";
$sql = "SELECT
Anzahl
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."' AND
MONTH(Datum) = '".$monat."' AND
DAYOFMONTH(Datum) = '".$tag."'
";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$anzahl_tag = $row['Anzahl'];
$sql = "SELECT
SUM(Anzahl)
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."' AND
MONTH(Datum) = '".$monat."'
";
$result = mysql_query($sql);
$anzahl_monat = mysql_result($result, 0);
$sql = "SELECT
SUM(Anzahl)
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."'
";
$result = mysql_query($sql);
$anzahl_jahr = mysql_result($result, 0);
echo " <table id=\"tabelle\" cellpadding=\"0\" cellspacing=\"0\">
<tr class=\"odd\"><td colspan=\"4\"><p>Besucherstatistik vom ".$tag.". ".$Monatsnamen[$monat]."
".$jahr.":</p></td></tr>
<tr><td width=\"200\"><p>Tag (".$tag."):</p></td><td width=\"70\"></td><td><p>".$row['Anzahl']."</p></td><td
width=\"450\"></td></tr>
<tr><td width=\"200\"><p>Monat (".$Monatsnamen[$monat]."):</p></td><td
width=\"70\"></td><td><p>".$anzahl_monat."</p></td><td width=\"450\"></td></tr>
<tr><td width=\"200\"><p>Jahr (".$jahr."):</p></td><td width=\"70\"></td><td><p>".$anzahl_jahr."</p></td><td
width=\"450\"></td></tr>
</table>";
$diagramme = array();
$diagramme['Tag'] = array();
$diagramme['Tag']['Name'] = "";
$diagramme['Tag']['Hoehe'] = 300;
$diagramme['Tag']['Breite'] = 580;
$diagramme['Tag']['Balken'] = 190;
$diagramme['Tag']['Stellen'] = array();
$diagramme['Tag']['Werte'] = array();
// Name z.B. Januar 2008
$diagramme['Tag']['Name'] = $Monatsnamen[$monat]." ".$jahr;
// $stellen bezeichnet die X-Werte des Diagramms
// als Standard wird 31 festgelegt
$stellen = 31;
// Wurde als Monat April (4), Juni (6),
// September (9) oder November (11)gewählt,
// wird die Anzahl der Stellen auf 30 begrenzt
if(in_array($monat, array(4,6,9,11)))
$stellen = 30;
// Wurde der Februar (2) gewählt, wird geprüft,
// ob es sich beim gewählten Jahr um ein Schaltjahr handelt
elseif($monat == 2){
if($jahr%4==0)
$stellen = 29;
else
$stellen = 28;
}
// Für jeden Tag wird der entsprechende Counter ausgelesen
for($i=1; $i<=$stellen; $i++){
$sql = "SELECT
Anzahl
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."' AND
MONTH(Datum) = '".$monat."' AND
DAYOFMONTH(Datum) = '".$i."'
";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
// Sollte kein Counter für einen Tag gefunden werden,
// ist $row['Anzahl'] NULL und wird durch den Cast-Operator
// (int) zu 0, so dass nur INT's vorliegen.
$diagramme['Tag']['Werte'][] = (int)$row['Anzahl'];
$diagramme['Tag']['Stellen'][] = $i;
}
$diagramme['Monat'] = array();
$diagramme['Monat']['Name'] = "";
$diagramme['Monat']['Hoehe'] = 300;
$diagramme['Monat']['Breite'] = 580;
$diagramme['Monat']['Balken'] = 190;
$diagramme['Monat']['Stellen'] = array();
$diagramme['Monat']['Werte'] = array();
$diagramme['Monat']['Name'] = $jahr;
for($i=1; $i<=12; $i++){
$sql = "SELECT
SUM(Anzahl)
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."' AND
MONTH(Datum) = '".$i."'
";
$result = mysql_query($sql);
$diagramme['Monat']['Werte'][] = (int)mysql_result($result, 0);
$diagramme['Monat']['Stellen'][] = "<img src=\"bilder/monatsnamen/".$i.".jpg\" alt=\"".$Monatsnamen[$i]."\">\n";
}
// Jedes Diagramm (Tag/Monat/Jahr) erzeugen
foreach($diagramme as $diagramm => $daten){
// Maximalwert aus den Daten ermitteln, der Maximalwert
// bekommt später die zuvor angegebene maximale Balkenhöhe in px
$maximalwert = max($daten['Werte'])!=0?max($daten['Werte']):1;
// Verhältnis aller Daten zum Maximalwert berechnen
// Jeder Wert erhält dann als Höhe einen Bruchteil der
// maximalen Balkenhöhe
$verhaeltnis = array();
foreach($daten['Werte'] as $key => $wert)
$verhaeltnis[$key] = $wert/$maximalwert;
// Tabelle erzeugen
echo "<table cellpadding=\"1\" style=\"width:".$daten['Breite']."px; height:".$daten['Hoehe']."px; text-align:center;
background-color:#aaa; border:solid 1px black; font-size:10px; margin:10px auto\">\n";
// Diagrammname ausgeben
echo " <tr>\n".
" <td colspan=\"".count($daten['Werte'])."\" style=\"height:20px;\">\n".
$daten['Name']."\n".
" </td>\n".
" </tr>\n";
echo " <tr>\n";
// Werte - also Balken - ausgeben
foreach($verhaeltnis as $key => $wert){
// Breite einer Zelle berechnen,
// Ein Balken ist halb so breit wie eine Zelle,
// deshalb das '/2'
echo " <td style=\"vertical-align:bottom; height:200px;
width:".floor($daten['Breite']/count($daten['Werte']))."px;\">";
" <div style=\"margin:auto; background-color:red; height:".floor($daten['Breite']*$wert)."px;
width:".floor(($daten['Breite']/2)/count($daten['Werte']))."px\" title=\"".$daten['Werte'][$key]."\">";
" ";
" </div>";
" </td>\n";
}
echo " </tr>\n";
echo " <tr>\n";
// Stellen - also Balkenzuordnung - ausgeben
foreach($daten['Stellen'] as $stelle){
echo " <td style=\"vertical-align:middle; border:solid 1px black; border-width:1px 1px 0px 1px;
height:80px;\">";
echo $stelle;
echo " </td>\n";
}
echo " </tr>\n";
echo "</table>\n";
}
$diagramme = array();
$diagramme['Monat'] = array();
$diagramme['Monat']['Name'] = "";
$diagramme['Monat']['Hoehe'] = 300;
$diagramme['Monat']['Breite'] = 580;
$diagramme['Monat']['Balken'] = 190;
$diagramme['Monat']['Stellen'] = array();
$diagramme['Monat']['Werte'] = array();
$diagramme['Monat']['Name'] = $jahr;
for($i=1; $i<=12; $i++){
$sql = "SELECT
SUM(Anzahl)
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."' AND
MONTH(Datum) = '".$i."'
";
$result = mysql_query($sql);
$diagramme['Monat']['Werte'][] = (int)mysql_result($result, 0);
$diagramme['Monat']['Stellen'][] = "<img src=\"bilder/monatsnamen/".$i.".jpg\" alt=\"".$Monatsnamen[$i]."\">\n";
}
?>
http://www.proton-tuning.de.tf
|
|
|
01.10.2008 15:09 Uhr
|
|
Flitze
|
Administrator
|
|
registriert
|
17.10.2006
|
wohnt in
|
Eschwege
|
Beiträge
|
332
|
|
Na, geht doch voran ^^
Also erstmal kannd er letzte Teil raus, dieses
PHP:
<?php
$diagramme = array();
$diagramme['Monat'] = array();
$diagramme['Monat']['Name'] = "";
$diagramme['Monat']['Hoehe'] = 300;
$diagramme['Monat']['Breite'] = 580;
$diagramme['Monat']['Balken'] = 190;
$diagramme['Monat']['Stellen'] = array();
$diagramme['Monat']['Werte'] = array();
$diagramme['Monat']['Name'] = $jahr;
for($i=1; $i<=12; $i++){
$sql = "SELECT
SUM(Anzahl)
FROM
Counter
WHERE
YEAR(Datum) = '".$jahr."' AND
MONTH(Datum) = '".$i."'
";
$result = mysql_query($sql);
$diagramme['Monat']['Werte'][] = (int)mysql_result($result, 0);
$diagramme['Monat']['Stellen'][] = "<img src=\"bilder/monatsnamen/".$i.".jpg\" alt=\"".$Monatsnamen[$i]."\">\n";
?>
was da ganz am Ende bei dir steht.. Daran liegt es nicht aber es ist einfach überflüssig 
Ich kann leider keine Tests auf deinem Server durchführen, deswegen sage ich dir einfach, was ich an deiner Stelle tun würde.
Kontrollausgaben von
$_POST['Jahr']
$_POST['Monat']
$_POST['Tag']
und von
$jahr
$monat
$tag
machen, z.b. mit:
PHP:
<?php
echo 'In $_POST['Jahr'] steht:';
echo "<pre>\n".
var_dump($_POST['Jahr']);
echo "</pre>\n";
echo 'In $_POST['Monat'] steht:';
echo "<pre>\n".
var_dump($_POST['Monat']);
echo "</pre>\n";
echo 'In $_POST['Tag'] steht:';
echo "<pre>\n".
var_dump($_POST['Tag']);
echo "</pre>\n";
echo 'In $jahr steht:';
echo "<pre>\n".
var_dump($jahr);
echo "</pre>\n";
echo 'In $monat steht:';
echo "<pre>\n".
var_dump($monat);
echo "</pre>\n";
echo 'In $tag steht:';
echo "<pre>\n".
var_dump($tag);
echo "</pre>\n";
?>
Das ganze am besten vor diese Stelle schreiben:
PHP:
<?php
// --> dahein schreiben
echo "<form name=\"User\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
//...
?>
Beim ersten Aufruf gibts wahrscheinlich ne Fehlermeldung, weil die $_POST Variablen noch nicht gesetzt sind, aber der verschwindet, wenn man auf Daten anzeigen klickt.
Wenn die Daten korrekt übernommen werden muss es am SQL-Query (Daten aus der DB auslesen) liegen, also muss das Ergebnis von diesem getestet werden. Evtl. auch mal kontrollieren, ob in der DB was drin steht und wie es drin steht 
Gruß
|
|
|
25.01.2009 14:39 Uhr
|
|
TEST
|
Forenposter
|
|
registriert
|
16.04.2008
|
wohnt in
|
Deutschland
|
Beiträge
|
81
|
|
Hi,
kann mir hier jemand mal alle Dateien reinschreiben auch eine .sql Datei?
Ich werde nämlich aus deinen Tutorial nicht schlau.(keine Namen für Dateien)
Ich würde des dann auf meiner HP verwenden.
|
|
|
01.02.2009 17:49 Uhr
|
|
TEST
|
Forenposter
|
|
registriert
|
16.04.2008
|
wohnt in
|
Deutschland
|
Beiträge
|
81
|
|
Kann mir bitte einer helfen? Antwortet mal wär?
Wie heißen nun alle Dateien und was steht in ihnen (Code?). Bitte auch die .sql Datei!
|
|
|
Seite:
|
1
|
|
|
Powered by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
Designed by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
|
|
|
|
|