Tip dne pro váš server v PHP
Chcete mít na stránkách užitečné tipy pro návštěvníky stránek nebo chcete do stránek vkládat různé citáty, které se budou při každém načtení stránky obměňovat? Přečtěte si následující řádky.
V tomto článku si probereme dva praktické příklady toho, jak do stránek vkládat různé užitečné tipy nebo citáty. Svým způsobem budete moci systém využít i pro vkládání textové reklamy, ovšem již nebude možné vést statistiky o počtu zobrazení a o počtu kliknutí. Uvedu dva příklady. Jeden bude pracovat se souborem na disku a druhý bude pracovat s databází. Můžete si tak vybrat dle vašich potřeb a možností, takže pokud nemáte na vašem serveru možnost využívat databáze, máte alespoň alternativu ve využití textového souboru na disku.
Z pohledu optimalizace a zátěže serveru jsou na tom oba soubory zhruba stejně. Databázová struktura je jednoduchá, takže selectování z databáze nebude trvat příliš dlouho. Práce se souborem je obecně pro server výhodnější, v případě absence SQL databázového serveru nutností. Je to sice téma k polemice, ale to si případně necháme do diskuse k článku; začněme se raději věnovat programování.
Nejdříve uvedu příklad s využitím databázového serveru. Budeme používat jednu jednoduchou tabulku s dvěmi položkami. První bude ID, obsahující jedinečné číslo, které bude sloužit k identifikaci záznamu v databázi. Druhá položka pak bude obsah samotného tipu či citátu. Pro ID použijeme datový typ int, pokud ale neplánujete velké množství záznamu, bude klidně stačit typ smallint nebo dokonce tinyint. Pro druhou položku v našem případě zvolím datový typ varchar s maximální délkou 255 znaků, ale pokud potřebujete text delší, není problém změnit datový typ třeba na text, nebo naopak zkrátit maximální délku textu. Nyní si vytvoříme v databázi tabulku citaty:
- id int unsigned not null auto_increment primary key
- citat varchar(255)
Skript bude pracovat tak, že se připojí k databázovému serveru a pomocí příkazu: SELECT citat from citaty vybere všechny citáty v tabulce.
Pak pomocí funkce mysql_num_rows() zjistíme počet nalezených záznamů. Poté vygenerujeme náhodné číslo v rozsahu od 0 do počtu nalezených řádků v databázi sníženého o jedna. Takto získané náhodné číslo použijeme jako argument funkce mysql_result(). Tento argument bude sloužit jako číslo indexu záznamu nalezeného v databázi. Nakonec funcí mysql_result() vložíme výsledek do výstupu skriptu. Zde je celý skript, který obsahuje funkci citat(), jejímž zavoláním vložíme do stránky náhodně zvolený citát. function citat()
{
// načtení citátů z databáze
@$sql = mysql_query("SELECT citat FROM citaty");
// zjistíme počet citátů
@$pocetcitatu = mysql_num_rows($sql);
$pocetcitatu--;
// vytvoříme náhodné číslo
SRand((double)MicroTime()*1e6);
$nahodnecislo = Rand(0,$pocetcitatu);
// vybereme konkretni citat
@$vygenerovano = mysql_result($sql,$nahodnecislo,0);
// odstranime konec radku
$vygenerovano = chop($vygenerovano);
return $vygenerovano;
}
// spojení s databazí a výběr databáze
@$conn = mysql_connect("localhost","","");
@$sql = mysql_select_db("test");
// vyvolání citátu
echo citat();
// odpojení od databáze
@mysql_close($conn);
?>
Další metoda bude spočívat v použití textového souboru na disku místo použití databáze. Jediný rozdíl bude v tom, že se data nebudou selectovat, ale soubor obsahující „databázi“ se načte do pole indexovaného od nuly pomocí funkce file(). Textový soubor bude obsahovat jednu položku v jednom řádku (jeden citát/tip na jednom řádku). Pomocí funkce count($data) zjistíme počet řádků v poli a vygenerujeme náhodné číslo v rozsahu od nuly do počtu řádků sníženého o jedna. Pro vypsání citátu pak použijeme funkci echo $data[$nahodne_cislo], kde v proměnné $nahodne_cislo je naše získané náhodné číslo.
function citat()
{
// cesta k souboru s citáty
$soubor = "./citaty";
// načtení souboru do pole
$data = file($soubor);
// zjistíme počet citátů
$pocetcitatu = count($data)-1;
// vytvoříme náhodné číslo
SRand((double)MicroTime()*1e6);
$nahodnecislo = Rand(0,$pocetcitatu);
// vybereme konkretni citat
$vygenerovano = $data[$nahodnecislo];
// odstranime konec radku
$vygenerovano = chop($vygenerovano);
return $vygenerovano;
}
echo citat();
?>
Skript opět budeme volat jako funkci citat(), která do stránky vloží náhodně vybraný citát. Kompletní skripty včetně souboru s citátem si můžete stáhnout.