statistieken script: undefined offset, variable, index
Ik heb al enige dagen een statistiekenscript in gebruik (van phpfreakz volges mij). Ik ben er wat mee aant klooien geweest, en na een tijdje kwam ik er achter dat de error_reporting niet aant stond. Toen ik die aanzetten kreeg ik een superlange lijst met meldingen. Noujah, ik heb er al een aantal uitgekregen, maar ik krijg er 3 maar niet uit :S:S. Ik post hieronder maar ff het hele script wat ik gebruik, omdat het op een paar plaatsen aangepast is. De regelnummers van de fouten zijn aangegeven.
Foutmeldingen:
Notice: Undefined index: 01 in mijnsite.nl on line 46
Notice: Undefined index: 01 in mijnsite.nl on line 47
Notice: Undefined offset: 2 in mijnsite.nl on line 46
Notice: Undefined offset: 2 in mijnsite.nl on line 47
Die laatste 2 komen natuurlijk iedere keer terug tot getal 31. (Dagen van de maand)
als laatste heb ik deze nog:
Notice: Undefined variable: totaantal in mijnsite.nl on line 156
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?
include ("../../opmaak/html_top.php");
error_reporting(E_ALL);
$db = include ("../../config.php");
$begin_deze_maand = date("Ym") . "000000";
$eind_deze_maand = (date("Ym") + 1) . "000000";
// Haal alle hits van deze maand op
$sql = "SELECT COUNT(*) AS uniek, SUM(hits) AS hits,
SUBSTRING(datum, 7, 2) AS dag FROM statistieken_ip
WHERE datum BETWEEN '$begin_deze_maand' AND '$eind_deze_maand'
GROUP BY dag ORDER BY dag ASC";
$result = mysql_query($sql) or die(mysql_error());
$max = 1;
$h_totaal = 0;
$u_totaal = 0;
$aantal = 0;
while ($row = mysql_fetch_object($result))
{
$hits[$row->dag] = $row->hits;
$uniek[$row->dag] = $row->uniek;
if ($row->hits > $max)
$max = $row->hits; // Bepaal hoogste waarde
$h_totaal += $row->hits;
$u_totaal += $row->uniek;
$aantal++;
}
// Doorloop nu alle dagen van de maand
if ($aantal != 0){
?>
include ("../../opmaak/html_top.php");
error_reporting(E_ALL);
$db = include ("../../config.php");
$begin_deze_maand = date("Ym") . "000000";
$eind_deze_maand = (date("Ym") + 1) . "000000";
// Haal alle hits van deze maand op
$sql = "SELECT COUNT(*) AS uniek, SUM(hits) AS hits,
SUBSTRING(datum, 7, 2) AS dag FROM statistieken_ip
WHERE datum BETWEEN '$begin_deze_maand' AND '$eind_deze_maand'
GROUP BY dag ORDER BY dag ASC";
$result = mysql_query($sql) or die(mysql_error());
$max = 1;
$h_totaal = 0;
$u_totaal = 0;
$aantal = 0;
while ($row = mysql_fetch_object($result))
{
$hits[$row->dag] = $row->hits;
$uniek[$row->dag] = $row->uniek;
if ($row->hits > $max)
$max = $row->hits; // Bepaal hoogste waarde
$h_totaal += $row->hits;
$u_totaal += $row->uniek;
$aantal++;
}
// Doorloop nu alle dagen van de maand
if ($aantal != 0){
?>
<table class='border' width= '625'>
<tr>
<td colspan='31' class='cel1' bgcolor='#ddc77b'>
<b>Aantal bezoekers van </b>
</td>
</tr>
<tr>
Code (php)
<td valign='bottom' align='center'>
<img src='/images/stats1.png' width='8' height='' title='Hits: '><img src='/images/stats2.png' width='8' height='' title='Unieke bezoekers: ' hspace='1'>
</td>
</tr>
<tr>
<td align='center'></td>
</tr>
</table>
<img src="/images/stats1.png" width='20' height='8' border='1px'> Hits<br>
<img src="/images/stats2.png" width='20' height='8' border='1px'> Unieke Bezoekers
<p>
<table cellpadding='0' cellspacing='0' border='0' width='625'>
<tr>
<td valign='top'>
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
// Extra's
$h_gem = number_format($h_totaal / $aantal, 1, ",", ".");
$u_gem = number_format($u_totaal / $aantal, 1, ",", ".");
$pageviews = number_format($h_totaal / $u_totaal, 1, ",", ".");
$h_totaal1 = number_format($h_totaal, 1, ",", ".");
$u_totaal1 = number_format($u_totaal, 1, ",", ".");
?>
// Extra's
$h_gem = number_format($h_totaal / $aantal, 1, ",", ".");
$u_gem = number_format($u_totaal / $aantal, 1, ",", ".");
$pageviews = number_format($h_totaal / $u_totaal, 1, ",", ".");
$h_totaal1 = number_format($h_totaal, 1, ",", ".");
$u_totaal1 = number_format($u_totaal, 1, ",", ".");
?>
<table class='border' width='300'>
<tr>
<td colspan='2' class='cel1' bgcolor='#ddc77b'><b>Gemiddeldes van </b></td>
</tr>
<tr>
<td class='cel1'>Gemiddelde aantal hits:</td>
<td class='cel1' align='right'><b></b></td>
</tr>
<tr>
<td class='cel1'>Gemiddeld aantal bezoekers:</td>
<td class='cel1' align='right'><b></b></td>
</tr>
<tr>
<td class='cel1'>Gemiddeld aantal pagina's per bezoeker:</td>
<td class='cel1' align='right'><b></b></td>
</tr>
</table>
</td>
<td width='25'></td>
<td valign='top' align='right' width='300'>
<table class='border' width='300'>
<tr>
<td colspan='2' class='cel1' bgcolor='#ddc77b'><b>Totaal van </b></td>
</tr>
<tr>
<td class='cel1'>Totaal aantal hits:</td>
<td class='cel1' align='right'><b></b></td>
</tr>
<tr>
<td class='cel1'>Totaal aantal bezoekers:</td>
<td class='cel1' align='right'><b></b></td>
</tr>
</table>
</td>
</tr>
</table>
<p>
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
function ShowStats($table, $naam, $desc, $limit = "")
{
global $db;
$limit = ($limit) ? "LIMIT 0, $limit" : "";
?>
function ShowStats($table, $naam, $desc, $limit = "")
{
global $db;
$limit = ($limit) ? "LIMIT 0, $limit" : "";
?>
<table class='border' width='625'>
<tr>
<td colspan='3' class='cel1' bgcolor='#ddc77b'><b></b></td>
</tr>
<tr>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
$sql = "SELECT aantal FROM $table ORDER BY aantal DESC $limit";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_object($result))
{
$totaantal = $totaantal + $row->aantal; //regel 156
}
$sql = "SELECT $naam as naam, aantal FROM $table ORDER BY aantal DESC $limit";
$result = mysql_query($sql) or die(mysql_error());
$first = TRUE;
while ($row = mysql_fetch_object($result))
{
if ($first)
{
$max = $row->aantal;
$first = FALSE;
}
$width = round($row->aantal / $totaantal * 300);
include("images.php");
?>
$sql = "SELECT aantal FROM $table ORDER BY aantal DESC $limit";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_object($result))
{
$totaantal = $totaantal + $row->aantal; //regel 156
}
$sql = "SELECT $naam as naam, aantal FROM $table ORDER BY aantal DESC $limit";
$result = mysql_query($sql) or die(mysql_error());
$first = TRUE;
while ($row = mysql_fetch_object($result))
{
if ($first)
{
$max = $row->aantal;
$first = FALSE;
}
$width = round($row->aantal / $totaantal * 300);
include("images.php");
?>
<td width='25' class='cel1'><img src='/images/.png'></td>
<td width='300' class='cel1'></td>
<td width='300' class='cel1' valign='middle'><img src='/images/stats1.png' height='10' width= title=></td>
</tr>
</table>
<p>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
}
ShowStats("statistieken_browser", "browser", "Gebruikte browsers", 10);
ShowStats("statistieken_besturingssysteem", "os", "Besturingssystemen");
ShowStats("statistieken_schermresolutie", "screensize", "Schermresoluties", 10);
ShowStats("statistieken_schermkleuren", "screencolors", "Schermkleuren", 10);
ShowStats("statistieken_pagina", "pagina", "Opgevraagde pagina's", 25);
ShowStats("statistieken_afkomst", "ref", "Afkomst (referrer)", 25);
$onbekend1 = mysql_query("SELECT * FROM statistieken_onbekend");
if (mysql_num_rows($onbekend1) != 0)
{
?>
}
ShowStats("statistieken_browser", "browser", "Gebruikte browsers", 10);
ShowStats("statistieken_besturingssysteem", "os", "Besturingssystemen");
ShowStats("statistieken_schermresolutie", "screensize", "Schermresoluties", 10);
ShowStats("statistieken_schermkleuren", "screencolors", "Schermkleuren", 10);
ShowStats("statistieken_pagina", "pagina", "Opgevraagde pagina's", 25);
ShowStats("statistieken_afkomst", "ref", "Afkomst (referrer)", 25);
$onbekend1 = mysql_query("SELECT * FROM statistieken_onbekend");
if (mysql_num_rows($onbekend1) != 0)
{
?>
<table class='border' width='625'>
<tr>
<td colspan='3' class='cel1' bgcolor='#ddc77b'><b>Onbekende user-agents</b></td>
</tr>
<tr>
<td width='25' class='cel1'><img src='/images/.png'></td>
<td width='200' class='cel1'></td>
<td width='400' class='cel1'></td>
</tr>
</table>
Er zijn nog geen gegevens bekend.<BR>
Ik weet het, het is eik een beetje slecht om het hier zomaar neer te knallen, maar ik heb er al een aantal weggewerkt en deze krijg ik maar niet opgelost. Kunnen jullie me helpen?
Kan geen kwaad, scheelt je stress :P
oowjah..en dan vervolges zeggen dat het slecht gescript is :P...neej.daar beginnen we niet aan, het moet ook zonder foutmeldingen kunnen. iemand een idee?
Je kunt naakijken of ze bestaan met isset($hits[$i]) en isset($uniek[$i]). Geven false terug als ze niet bestaan, en dan defineer je ze niet. En weg zijn je notices.
dat gedeelte van de foutmeldingen is idd weg, maar euhm...nu krijgen alle balkjes dezelfde hoogte, ook als ze een verschillende waarde hebben :S:S