[php/jpgraph] geen balkjes in staafdiagram sinds begin maand

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
ik gebruik dus jpgraph om grafieken te tekenen voor mijn statistieken.

nu heb ik niets veranderd aan de code, maar sinds 1juli tekent hij alleen het raster nog maar .. en geen balken er meer in.
eerst dacht ik dat er gewoon iets fout in mijn query zat waardoor hij geen waardes ophaalde in deze maand.

maarrrr.. de arrays die ik doorstuur naar de code vna jpgraph zijn gewoon prima!

dit is de code waarmee ik de waardes in een array gooi:
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
$sql = "SELECT COUNT(*) AS uniek, SUM(hits) AS hits, 
SUBSTRING(datum, 7, 2) AS dag FROM spiderstat_ip 
WHERE site = '$site' AND 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; 
$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;   
}
$aantal++; 
} 

//ervoor zorgen dat de hele maand wordt laten zien 
for ($i = 1;$i <= 31;$i++)
{
    if ($hits[$i] == '')
    {
        $hits[$i] = '0';
    }
    if ($uniek[$i] == '')
    {
        $uniek[$i] = '0';
    }
}

als ik met print_r() deze 2 arrays bekijk blijken die gewoon goed te zijn.. maar toch wil hij op deen of andere manier niet meer die balkjes tekenen..

iemand enig id hoe dit kan?..

nog even de code waarmee ik het plaatje maak:

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
35
36
37
38
39
40
41
$graph = new Graph(575,300,"auto");    
$graph->SetScale("textlin");
    
$graph->SetShadow();
$graph->img->SetMargin(40,30,20,40);

// Create the bar plots
$b1plot = new BarPlot($hits);
$b1plot->SetFillColor("red");
$b1plot->SetLegend("Views");
    
$b2plot = new BarPlot($uniek);
$b2plot->SetFillColor("green");
$b2plot->SetLegend("Visitors");
    
// Create the grouped bar plot
$gbplot = new GroupBarPlot(array($b1plot,$b2plot));
    
// We must have the frame enabled to get the gradient
// However, we don't want the frame line so we set it to
// white color which makes it invisible.
$graph->SetFrame(true,'white');

// Setup a background gradient image
$graph->SetBackgroundGradient('blue','navy:0.5',GRAD_HOR,BGRAD_PLOT);

    
// ...and add it to the graPH
$graph->Add($gbplot);

$graph->title->Set($title);
$graph->xaxis->title->Set($xtitle);
$graph->yaxis->title->Set($ytitle);
    
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

// Display the graph
$graph->Stroke();
}

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 17-09 22:12
Waar draait deze website? Op je eigen server thuis op je slaapkamer of heb de site ergens ondergebracht bij een hosting bedrijf?

Als het, het laatste is dan is het een grote kans dat PHP een update heeft gekrijgen en dat er enkele PHP instelling zijn veranderd.

Acties:
  • 0 Henk 'm!

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
ok .. ik zat niet goed te kijken.. het lijkt erop dat de arrays toch niet echt goed gemaakt worden..

nu zit ik dus te stoeien met die dubbele arrays..

dit is de code waarin ik de array dus maak:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$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 spiderstat_ip 
WHERE site = '$site' AND datum 
BETWEEN '$begin_deze_maand' AND '$eind_deze_maand' 
GROUP BY dag ORDER BY dag ASC"; 

$result = mysql_query($sql) or die(mysql_error()); 
                    
$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 
                         
        $aantal++; 
}


dan krijg je dus een array die er ongeveer als volgt uitziet:
Array ([01]=>143 [02] => 47 [03] => 201 [04] => 234 [05] => 168 [06] => 86)
omdat ik dus een grafiek wil maken voor alle dagen van de maand.. moeten de rest van de dagen er ook in met gewoon 0 als waarde
in dit geval dus gewoon vanaf 6 tot verder.. maar het moet dus ook zo zijn dat als een teller er halverwege de maand op gezet wordt de dagen ervoor in de array komen met waarde nul..
nu dacht ik dat zo op te lossen.:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for ($i = 1;$i <= 31;$i++)
{
    if ($i < 10)
                {
        $i = "0".$i;
    }
    else 
    {
        $i = $i;
    }
            
    if ($hits[$i] == '')
    {
        $hits[$i] = '0';
    }
                    
    if ($uniek[$i] == '')
    {
        $uniek[$i] = '0';
    }   
}


maar wat ik dan krijg is dit:
Array ( [02] => 47 [03] => 201 [04] => 234 [05] => 168 [06] => 86 [01] => 0 [07] => 0 [08]
=> 0 [09] => 0 [10] => 0 [11] => 0 [12] => 0 [13] => 0 [14] => 0 [15] => 0 [16] => 0 [17]
=> 0 [18] => 0 [19] => 0 [20] => 0 [21] => 0 [22] => 0 [23] => 0 [24] => 0 [25] => 0 [26]
=> 0 [27] => 0 [28] => 0 [29] => 0 [30] => 0 [31] => 0 )

die 01 komt achter de laatste waarde .. en dan wordt er gewoon weer verder geteld.
ik weet niet of dit de oorzaak is dat ie die balkjes niet tekent (ik betwijfel het) .. maar dit is in elk geval al niet juist.

Acties:
  • 0 Henk 'm!

  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
iemand een id? :)