V poslednom, treťom článku o tvorbe vyhľadávača v PHP, si ukážeme vytváranie jednoduchej štatistiky pre vyhľadávané údaje. Štatistika vyhľadávania nám poskytne údaje o vyhľadávaných slovách a celkovo o používaní vyhľadávača.

Na začiatku si vytvoríme tabulku s nasledovnými položkami:

  • Slovo – sem sa zapíše každý hľadaný text
  • Hladane – koľko krát bol text hľadaný
  • Najdene – koľko záznamov bolo pri jeho poslednom hľadaní nájdených
  • Naposledy – kedy bolo toto slovo hľadané naposledy

Vytvorenie tabulky bude vyzerať takto:

CREATE TABLE informacie(
   Slovo varchar(50),
   Hladane int,
   Najdene int,
   Naposledy datetime);

Táto tabuľka úplne postačí pre zapisovanie tých najzákladnejších údajov o vyhľadávaní. Pri každom vyhľadávaní sa najprv pozrieme do databázi, aby sme vedeli, či už práve hľadaný text niekto niekedy hľadal. Ak áno, tak tento záznam iba aktualizujeme. Pokiaľ ho ale nikto nehľadal, tak vytvoríme nový záznam s aktuálnymi výsledkami.

$datum = Date(„Y-m-d H:i:s“); // formát dátumu vhodný pre databázu
$info = MySQL_Query(„SELECT Hladane FROM informacie WHERE Slovo = ‚$slovo'“); // zistíme, či slovo už bolo hľadané
$pocet_info = MySQL_NumRows($info); // zistíme počet
 if($pocet_info>0): // ak slovo už bolo hľadané, záznam iba aktualizujeme
   for($l=0;$l<1;$l++):
     $hladane2 = MySQL_Result($info, $l, „Hladane“);
     $hladane = $hladane2 + 1;
   endfor;
   $update = MySQL_Query(„UPDATE informacie SET Hladane = ‚$hladane‘, Najdene = ‚$pocet‘, Naposledy = ‚$datum‘ WHERE Slovo = ‚$slovo'“);
 else: // ak slovo ešte nebolo nikdy hľadané, tak ho do databázy pridáme
   $vyhladavanie = MySQL_Query(„INSERT INTO informacie VALUES(‚$slovo‘, ‚1‘, ‚$pocet‘, ‚$datum‘)“);
 endif;

Prejdime si ešte raz túto časť slovne. Vytvoríme premennú $datum, ktorá bude obsahovať aktuálny časový údaj vo formáte vhodnom pre zápis do databázi. Nazrieme do tabulky „informacie“ a zistíme, či už práve hľadané slovo bolo niekedy hľadané. Pokiaľ bolo, tak ho jednoducho aktualizujeme – aktualizujeme počet hľadaní, počet nájdených záznamov a aktuálny dátum. Pokiaľ slovo hľadané doposiaľ nebolo, tak pre neho vytvoríme nový záznam.

K vyhľadávaču nám pribudol ešte jeden nový súbor statistiky.php. V ňom budeme mať prehľad štatistík o našom vyhľadávači. Tento súbor môžete poprípade sprístupniť pod heslom, aby k nemu nemal prístup bežný užívateľ. Celý skript vyzerá takto:

<style type=“text/css“>
<!–
.normal {FONT-SIZE: 12px; FONT-FAMILY: Verdana, Geneva, Arial, Helvetica, sans-serif; margin-left:7; margin-right:7;}
.button {font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; background: #6EACF9; font-style: bold; color: #10408F;}
.textinput {BACKGROUND-COLOR: #6EACF9; BORDER-RIGHT: silver 1px solid; BORDER-TOP: silver 1px solid; BORDER-LEFT: silver 1px solid; COLOR: #10408F; BORDER-BOTTOM: silver 1px solid; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;}
–>
</style>
<div class=“normal“><h3>Štatistika vyhľadávania</h3></div>
<?
require „db.php“; // pripojime sa k databazi
if(Empty($limit)) $limit = „50“;
$vysledok = MySQL_Query(„SELECT * FROM informacie ORDER BY Hladane DESC LIMIT 0,$limit“);
$pocet = MySQL_NumRows($vysledok);
$a = 1;
echo „<table border=\“0\“ Cellpadding=\“0\“ Cellspacing=\“0\“>“;
echo „<tr bgcolor=\“#005FA4\“><td><div class=\“normal\“ align=\“center\“><font color=\“white\“><b>Hľadané slovo</b></font></div></td><td><div class=\“normal\“ align=\“center\“><font color=\“white\“><b>Počet hľadaní</b></font></div></td><td><div class=\“normal\“ align=\“center\“><font color=\“white\“><b>Počet nájdených odkazov</b></font></div></td><td><div class=\“normal\“ align=\“center\“><font color=\“white\“><b>Naposledy hľadané</b></font></div></td></tr>“;
for($i=0;$i<$pocet;$i++):
   $slovo = MySQL_Result($vysledok, $i, „Slovo“);
   $hladane = MySQL_Result($vysledok, $i, „Hladane“);
   $najdene = MySQL_Result($vysledok, $i, „Najdene“);
   $naposledy = MySQL_Result($vysledok, $i, „Naposledy“);
   if(($a%2)==1):
     echo „<tr bgcolor=\“#EEEEEE\“><td><div class=\“normal\“>$slovo</div></td><td><div      class=\“normal\“>$hladane</div></td><td><div      class=\“normal\“>$najdene</div></td><td><div      class=\“normal\“>$naposledy</div></td></tr>“;
   else:
     echo „<tr bgcolor=\“white\“><td><div class=\“normal\“>$slovo</div></td><td><div      class=\“normal\“>$hladane</div></td><td><div      class=\“normal\“>$najdene</div></td><td><div      class=\“normal\“>$naposledy</div></td></tr>“;
   endif;
   $a++;
endfor; echo „</table>“;
$naj_slovo1 = MySQL_Query(„SELECT * FROM informacie ORDER BY Hladane DESC LIMIT 0,1“);
   $naj_slovo = MySQL_Result($naj_slovo1, 0, „Slovo“);
$vyhladavanie = MySQL_Query(„SELECT * FROM informacie“);
   $pocet_vyhladavani = MySQL_NumRows($vyhladavanie);
$pocet_vyhl = 0;
for($e=0;$e<$pocet_vyhladavani;$e++):
   $vyhl = MySQL_Result($vyhladavanie, $e, „Hladane“);
   $pocet_vyhl += $vyhl;
endfor;
$pocet_najd = 0;
for($x=0;$x<$pocet_vyhladavani;$x++):
   $najd = MySQL_Result($vyhladavanie, $x, „Najdene“);
   $pocet_najd += $najd;
endfor;
$naposledy = MySQL_Query(„SELECT Naposledy FROM informacie ORDER BY Naposledy DESC LIMIT 0,1“);
   $kedy2 = MySQL_Result($naposledy, 0);
$kedy = EReg_Replace(„([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})“,“\\3. \\2. \\1 \\4:\\5:\\6″, $kedy2);
?>
<div class=“normal“>
Najhľadanejšie slovo: <b><?=$naj_slovo?></b><br>
Počet uskutočnených všetkých vyhľadávaní: <b><?=$pocet_vyhl?></b><br>
Celkový počet nájdených záznamov: <b><?=$pocet_najd?></b><br>
Posledné uskutočnené hľadanie: <b><?=$kedy?></b><br>
</div>

<br>
<form action=“statistiky.php“ method=“get“>
<div class=“normal“>
   Limit:&nbsp;
     <input type=“text“ class=“textinput“ name=“limit“ size=“4″ maxlength=“3″ value=“<?=$limit?>“>
   &nbsp;
     <button type=“submit“ class=“button“>Zobraziť</button>
</div>
</form>
</body>
</html>

Vyhľadávač si do svojich stránok vložíte naozaj jednoducho, po väčšine stačí len prepísať pár premenných a názvov, vyhľadávač funguje ľahko a bezproblémovo. Podrobnejšie o tom som písal v predchádzajúcich článkoch. Kompletný vyhľadávač som pomenil podľa niektorých námetov z príspevkov v diskusii a preto ponúkam jeho vylepšenú verziu.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět