 |
|
 |
 |
 |
| Kniha návštěv s pomocí MySQL - 2.díl
|
|
Když jsem napsal několik prvních článků o programování v PHP pro
začátečníky, začaly mi chodit e-maily, kde jsem byl žádán, abych napsal
další články. Bohužel jsem neměl čas, ale teď se těšte na další podobné
články.
Výpis údajů z databáze
K čemu by nám byl zápis do DB a hezký formulář, když bychom neuměli z
DB záznamy vypsat. K tomu slouží následující skript.
Abychom omezili počet výpisů na jednu stránku (to by se potom stránka
dlouho načítala, kdyby se najednou vypsalo třeba 100 záznamů) vkládáme do
SQL příkazu "podmínku" LIMIT $id, $max, která říká, že zápis bude omezen
na 10 (hodnota proměnné $max) záznamu, které mají vyšší id než je hodnota
proměnné $id. Na konci skriptu je vidět několik řádků, které zobrazují
odkazy další a zpět a zároveň zvyšují hodnotu proměnné $id o 10.
Při prvním načtení stránky je pomocí řádku: if(!IsSet($id)) $id=0; proměnné $id přiřazena
0.
<?
do {
if ($QUERY_STRING=="zapis"):// maximální počet zobrazených záznamů najednou
$max=10;
@$spojeni = mysql_connect("localhost"); //pokus o spojení
if (!$spojeni):
echo "Nepodařilo se připojit k MySQL.<BR>\n";
break;
endif;
MySQL_Select_DB("kniha"); // výběr databáze
//pokud není id již nastaveno, potom id=0
if(!IsSet($id)) $id=0;
//počet záznamů v DB
@$zjisteni=MySQL_Query("SELECT count(id) FROM kniha");
$poradi=MySQL_Result($zjisteni,0);
//SQL příkaz, který vybere požadovaný počet záznamů z DB
@$vysledek = MySQL_Query("SELECT * FROM kniha
order by id desc LIMIT $id,$max");
if (!$vysledek):
echo "Došlo k chybě při zpracování dotazu v databázi.<BR>\n";
break;
endif;
while ($zaznam = MySQL_Fetch_Array($vysledek)){
$email=$zaznam["email"];
$cislo=$zaznam["id"];
?>
<table cellpadding="0" cellspacing="0" width="510" border="0">
<tr>
<td bgColor="#81a4c7">[<b><?echo "$cislo"?></b>]
<b><? echo $zaznam["autor"] ?></b>
[<a href=mailto:<? echo "$email>$email"?></a>]
</td>
<td bgColor="#81a4c7" width="100"
align="right"><small><? echo $zaznam["datum"] ?></small></td>
</tr>
</table>
<table cellSpacing=0 cellPadding=3 width=510 border=0>
<tr>
<td><b>Web:</b>
<a href=http://<?echo $zaznam["web"].">".$zaznam["web"]?></a></td>
<td bgColor=#81a4c7 width=175 align=right><b>Honocení:
</b><? echo $zaznam["hodnoceni"] ?></td>
</tr>
</table>
<table cellSpacing=0 cellPadding=3 width=510 border=0>
<tr>
<td bgColor=#b3c5d9><? echo $zaznam["text"] ?></td>
</tr>
</table>
<p><br/></p>
<?
} while (false);
if ($id+1>10) echo "<A
HREF=\"./index.php?vypis&id=".($id-10)."\">Zpět</a>
\n";
if (($id+10)<$poradi) echo "<A
HREF=\"./kniha.phpindex.php?vypis&id=".($id+10)."\">Další</a>
\n";
endif;
} while (false);
?> | |
Děláme si anketu z naší knihy
Přišli tři dotazy, kde jsem byl tázán, jak lze získat údaje o hodnocení
webu. Protože tázající chtěli problém vysvětlit co nejjednodušeji (a jak
jsem z dopisů poznal, tyto články čte hodně začátečníků), použiji ten
nejjednodušší způsob, jaký mě napadl.
Protože návštěvník, který použije naší knihu je donucen ohodnotit naše
stránky, můžeme toho zneužít a vytvořit si anketu z nasbíraných dat, spíše
si udělat analýzu, jak se návštěvníkům stránky líbí.
Nepůjde o nic jiného, než že spočítáme počet zápísu, které obsahují
konkrétní hodnoty.
$data=MySQL_Query("SELECT count(id)
FROM kniha where hodnoceni='Výborný'");
$vyborny=MySQL_Result($data,0);
$data=MySQL_Query("SELECT count(id)
FROM kniha where hodnoceni='Pěkný' ");
$pekny=MySQL_Result($data,0);
$data=MySQL_Query("SELECT count(id)
FROM kniha where hodnoceni='Dobrý'");
$dobry=MySQL_Result($data,0);
$data=MySQL_Query("SELECT count(id)
FROM kniha where hodnoceni='Dostatečný'");
$dostatecny=MySQL_Result($data,0);
$data=MySQL_Query("SELECT count(id)
FROM kniha where hodnoceni='Hrozný'");
$hrozny=MySQL_Result($data,0);
echo "Hodnocení webu:";
echo "Vyborny: $vyborny";
echo "Pěkný: $pekny";
echo "Dobrý: $dobry";
echo "Dostatečný: $dostatecny";
echo "Hrozný: $hrozny"; | |
No a kniha návštěv se nám proměnila v nástroj pro zjištění mínění o
webu :-). Věřím, že budete mít ke článku připomínky, na které se
těším.
| Hodnocení článku |
1 | 2 | 3 | 4 | 5 Zatím nikdo
nehlasoval
| |
|
 |
 |
 |