Vytvárame WWW stránky II / 16.časť

Kategória:
  • V záverečnej časti si konečne dokončíme našu štatistiku prístupov a doplníme si ju o skript na generovanie grafov návštevnosti. Grafy budeme generovať pomocou knižnice JpGraph ( http://www.aditus.nu/jpgraph/ ), ktorú nájdete na našom CD. Na našom CD taktiež nájdete kompletné zdrojové kódy k tejto téme.
    Najprv si však dokončíme súbor vypis.php :

    // vypis.php – dokončenie
    <table width="100%" border="0">
    <tr>
    <td height="20" bgcolor="#285577"><b>Prehliadač</b></td><td bgcolor="#285577" align="center"<b>Počet</b></td>
    </tr>
    <?
    $vysledok2=mysql_query("SELECT nazov,pocet FROM prehliadace WHERE mesiac='$mesiac' ORDER BY pocet DESC",$conn);
    while($zaznam2=MySQL_Fetch_Array($vysledok2)) {
    $nazov=$zaznam2['nazov'];
    $pocet=$zaznam2['pocet'];
    $spolu2=$spolu2+$pocet;
    echo "<tr><td width='90%' bgcolor='B1D3EC'>$nazov</td><td bgcolor='B1D3EC' align='center'>$pocet</td></tr>";
    } ?>
    <tr>
    <td bgcolor="#285577"><b>Spolu :</b></td>
    <td bgcolor="#285577" align='center'><? echo $spolu2 ?></td>
    </tr>
    </table><br>
    <table width="100%" border="0">
    <tr>
    <td height="20" bgcolor="#285577"><b>Operačný systém</b></td><td bgcolor="#285577" align="center"><b>Počet</b></td>
    </tr>
    <?
    $vysledok3=mysql_query("SELECT nazov,pocet FROM os WHERE mesiac='$mesiac' ORDER BY pocet DESC",$conn);
    while($zaznam3=MySQL_Fetch_Array($vysledok3)) {
    $nazov=$zaznam3['nazov'];
    $pocet=$zaznam3['pocet'];

    $spolu3=$spolu3+$pocet;
    echo "<tr><td width='90%' bgcolor='B1D3EC'>$nazov</td><td bgcolor='B1D3EC' align='center'>$pocet</td></tr>";
    } ?>
    <tr>
    <td bgcolor="#285577"><b>Spolu :</b></td>
    <td bgcolor="#285577" align='center'><? echo $spolu3 ?></td>
    </tr>
    </table><br>
    <table width="100%" border="0">
    <tr>
    <td height="20" bgcolor="#285577"><b>IP adresy</b></td><td bgcolor="#285577" align="center"><b>Počet</b></td>
    </tr>
    <?
    $vysledok4=mysql_query("SELECT nazov,pocet FROM ip WHERE mesiac='$mesiac' ORDER BY pocet DESC",$conn);
    while($zaznam4=MySQL_Fetch_Array($vysledok4)) {
    $nazov=$zaznam4['nazov'];
    $pocet=$zaznam4['pocet'];
    $spolu4=$spolu4+$pocet;
    echo "<tr><td width='90%' bgcolor='B1D3EC'>$nazov</td><td bgcolor='B1D3EC' align='center'>$pocet</td></tr>";
    } ?>
    <tr>
    <td bgcolor="#285577"><b>Spolu :</b></td>
    <td bgcolor="#285577" align='center'><? echo $spolu4 ?></td>
    </tr>
    </table><br>
    <br>
    Zobraziť návštevnosť za :
    <?
    $vysledok5=MySQL_Query("SELECT DISTINCT mesiac FROM stranky ORDER BY mesiac",$conn);
    while($zaznam5=MySQL_Fetch_Array($vysledok5)) {
    $mesiac=$zaznam5['mesiac'];
    echo "| <a href='vypis.php?m=$mesiac'>$mesiac</a> | ";
    }
    MySQL_Close($conn);
    ?>

    Tento výpis je len dokončením z minulej časti, vysvetlenie k jednotlivým príkazom preto nájdete v PC Revue 2/2003.

    Grafické vyhodnotenie štatistík

    Ako som spomínal v úvode, napíšeme si aj skript na generovanie grafov návštevnosti pomocou knižnice JpGraph. Súbory tejto knižnice je potrebné umiestniť do adresára so súbormi našej štatistiky.

    O generovanie grafov sa bude starať súbor graf.php, ktorému v URL zadáme, aký graf ma vygenerovať. Budeme na to používať dve premenné, a to premennú $m reprezentujúcu mesiac a rok v tvare MM.YYYY (napr. 03.2004) a premennú $id, ktorá môže mať jednu z nasledujúcich hodnôt :

    • stranky – štatistika prístupu k jednotlivým dokumentom
    • prehliadace – štatistika použitých prehliadačov
    • os – štatistika použitých operačných systémov
    • ip – štatistika prístupu z jednotlivých IP adries

    Ak chceme zobraziť napríklad graf použitých prehliadačov za december 2003, zavoláme súbor graf.php s parametrami $m=12.2003 a $id=prehliadace, teda graf.php?m=12.2003&id=prehliadace.

    Súbor graf.php vyzerá takto:

    <?
    function prevod($retazec)
    {
    return StrTr($retazec,"ŠšŽžĽľŤťŚŹśź","©ą®ľĄµ«»¦Ľ");
    }
    $time=Time(); // získanie aktuálneho dátumu a času
    if (!isSet($_REQUEST['m'])) { // ak neexistuje premenná $m
    $mesiac=Date("m.Y", $time); // mesiac v tvare 02.2004
    } else {
    $mesiac=$_REQUEST['m']; //ak existuje premenná $m
    }
    $id=$_REQUEST['id'];
    if ($id=="stranky") { $query="cesta as nazov,pocet"; } else { $query="nazov,pocet"; }
    include("spojenie.php"); // vloženie súboru s parametrami spojenia
    $conn=MySQL_Connect ($host,$user,$passwd); // nadviazanie spojenia
    mysql_select_db ($db,$conn); // výber databázy
    $result=MySQL_Query("SELECT $query FROM $id WHERE mesiac='$mesiac' ORDER BY pocet DESC"); // výber požadovaných údajov z databázy
    while($vysledok=MySQL_Fetch_Array($result)) {
    $data[]=$vysledok[pocet]; // priradenie premenným
    $meno[]=$vysledok[nazov]." (%d)";
    }
    include ("./jpgraph/src/jpgraph.php"); // vloženie súborov knižnice
    include ("./jpgraph/src/jpgraph_pie.php"); // JpGraph
    include ("./jpgraph/src/jpgraph_pie3d.php");
    $graf = new PieGraph(500,300); // nový graf s rozmermi 500x300 pixelov
    $graf->SetShadow(); // vytvorenie tieňa
    switch ($id) {
    case "stranky":
    $co="Zobrazené stránky";
    break;
    case "prehliadace":
    $co="Použité prehliadače";
    break;
    case "os":
    $co="Použité operačné systémy";
    break;
    case "ip":
    $co="Jednotlivé IP adresy";
    break;
    } // výber názvu grafu podľa premennej $id
    $graf->title->Set(prevod($co)." za ".$mesiac); // priradenie názvu

    $p = new PiePlot3D($data); // vytvorenie 3D grafu
    $p->SetLegends($meno); // vytvorenie legendy
    $p->SetLabelType(1); // typ legendy
    $p->value->SetFormat("%d kr"); //formát legendy
    $p->ExplodeSlice(0); // vysunutie prvej časti
    $p->SetCenter(0.4,0.5); // zvolenie stredu

    $graf->Add($p); // vygenerovanie grafu
    $graf->Stroke(); // zobrazenie grafu
    ?>

    Kód je myslím jasný, popis príkazov použitých k vytvoreniu grafu nájdete v dokumentácií ku knižnici JpGraph. Funkcia prevod slúži na prevod slovenských znakov s diakritikou na znaky, ktorým JpGraph ,,rozumie“ a zobrazí ich správne. Do premennej $query si uložíme pripravený MySQL dopyt podľa toho, aký graf ideme generovať. Tento krok je potrebný, pretože v tabuľkách prehliadace, os a ip majú požadované stĺpce názvy nazov a pocet, zatiaľ čo v tabuľke stranky sa volajú cesta a pocet. Preto v prípade, že ideme generovať graf prístupu k jednotlivým dokumentom, musíme z tabuľky stranky vybrať stĺpce cesta a pocet, ktoré vyberieme ,,ako“ nazov a pocet.

    Záver
    Seriál Vytvárame WWW stránky síce končí, v aprílovom čísle však nájdete prvú časť nového seriálu Pracujeme so štýlmi, ktorá sa bude zaoberať využitím kaskádových štýlov (CSS) pri vytváraní internetových dokumentov.