V štvrtej časti seriálu o tvorbe WAP stránok budeme pokračovať v tvorbe dynamických WAP aplikácii vytvorených pomocou PHP, ktoré si rozšírime o prácu s momentálne najobľúbenejším databázovým systémom MySQL. V názornom príklade si vytvoríme knihu hostí.
MySQL
MySQL je relačný databázový systém, vytvorený švédskou firmou MYSQL AB. Dáta sú uložené v podobe čísiel, textu alebo binárnych súborov, komunikácia prebieha pomocou jazyka SQL (Structured Query Language). Bližšie informácie o MySQL nájdete v článku „
Ako na MySQL“ v sekcii Programovanie.
Príklad
Pre nasledujúci príklad si vytvoríme najskôr súbory config.php a funkcia.php. Súbor funkcia.php, ktorý obsahuje funkciu na spracovanie diakritických znamienok, ste si mohli stiahnuť v
predchádzajúcej časti seriálu. Súbor config.php bude obsahovať script na pripojenie. Premenné (server, user, password, databaza) si musíte zmeniť podľa vašich nastavení.
Ukážka config.php:
<?php
$server = "server";
$user = "user";
$password = "password";
$databaza = "databaza";
$link = mysql_connect ("$server", "$user","$password", "") or die ("Nepodarilo sa pripojiť na databázový server");
mysql_select_db("$user", $link) or die ("Nepodarilo sa otvoriť databázu");
?>
Kniha hostí
Umožnite vašim návštevníkom vyjadriť ich názory, postrehy a pripomienky k vašej stránke. Kniha hostí vám určite spestrí vašu WAP stránku a názory návštevníkov vám pomôžu pri jej ďalšom rozvoji. Celá aplikácia sa bude skladať z piatich súborov, už spomínané config.php, funkcia.php a ďalej index.php, pridat.php a zobrazit.php. Na začiatok si vytvoríme v MySQL databáze tabuľku „kniha“ kde budeme do jednotlivých polí (id, meno, email, text, datum) ukladať jednotlivé dátá.
CREATE TABLE kniha(
id int(8) auto_increment,
meno varchar(250) not null,
email varchar(250) default NULL,
text text,
datum int(11) not null,
PRIMARY KEY id(id)
) TYPE = MyISAM;Ďalej si vytvoríme stránku pridat.php, ktorá nám slúži ako formulár. Diakritické znamienka si ošetríme pomocou funkcie v súbore funkcia.php.
Zdrojový kód pridat.php:
<?php
header("Content-type: text/vnd.wap.wml");
echo "<?xml version="1.0" encoding="ISO-8859-2"?>n";
echo "<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">n";
?>
<wml>
<card title="Pridanie" id="vloz" newcontext="true">
<p align="center">
<?php
if ($in=='ok') {
include ('config.php');
include('funkcia.php');
$datum = time();
$meno = unicode($meno);
$text = unicode($text);
mysql_query ("INSERT INTO kniha VALUES ('', '$meno', '$email', '$text', '$datum')");
echo "Príspevok bol úspešne pridaný...";
}
else {
?>
Vaše meno: <br/>
<input name="meno" type="text"/><br/>
Váš email: <br/>
<input name="email" type="text"/><br/>
Správa: <br/>
<input name="text" type="text"/><br/>
<br/>
<anchor>
Pridať
<go accept-charset="utf-8" href="pridat.php" method="post">
<postfield name="in" value="ok"/>
<postfield name="meno" value="$(meno)"/>
<postfield name="text" value="$(text)"/>
<postfield name="email" value="$(email)"/>
</go>
</anchor>
<?php } ?>
<br/>
<a href="index.php"><< Návrat</a>
</p>
</card>
</wml>Pre zobrazenie príspevku budeme potrebovať stránku zobrazit.php, kde si pomocou premennej id, ktorá bude zadaná na stránke index.php, vytiahneme údaje príspevku z databázy.
Zdrojový kód zobrazit.php:
<?php
header("Content-type: text/vnd.wap.wml");
echo "<?xml version="1.0" encoding="iso-8859-2"?>n";
echo "<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">n";
?>
<?php
include ('config.php');
?>
<wml>
<card title="Prispevok" id="first">
<?php
$results=@mysql_query("SELECT meno,email,text,datum FROM kniha WHERE id='$id'");
$numrows = @mysql_num_rows($results);
if ($numrows <= 0) echo"<small>Nesprávne id!</small><br/>";
else;
while ($row = mysql_fetch_array($results)) {
$meno=($row[0]);
$email=($row[1]);
$text=($row[2]);
$datum=($row[3]);
} ?>
<p>
<?php
echo "$text";
echo "<br/><br/>Pridal: <b>$meno</b> ($email)<br/>";
echo "Dňa: ".date( "d.M.Y H:i", $datum )." <br/>";
?>
<?php
$query = "SELECT id FROM kniha WHERE id >'$id' ORDER BY id ASC LIMIT 1";
$vysledok=mysql_query($query, $link) or die ("Chyba");
$num=mysql_num_rows($vysledok);
if ($num == 1) {
while ($bow=mysql_fetch_array($vysledok))
{
$mid = $bow[0];
echo "<small><a href='zobrazit.php?id=".$mid."'>
<<Novší</a>-</small>";
}
}
else { echo"<small><<Novší -</small>"; }
$query = "SELECT id FROM kniha WHERE id < '$id' ORDER BY id DESC LIMIT 1";
$vysledok=mysql_query($query, $link) or die ("Chyba");
$num=mysql_num_rows($vysledok);
if ($num == 1) {
while ($bow=mysql_fetch_array($vysledok))
{
$mids = $bow[0];
echo "<small><a href='zobrazit.php?id=".$mids."'>
Starší>></a></small>"; } }
else { echo"<small> Starší>></small>"; }
?>
<br/>
<a href="index.php"><< Návrat</a></p>
</card>
</wml>Na koniec nám už len ostáva vytvoriť úvodnú stránku index.php, kde bude odkaz na pridanie príspevku a zoznam jednotlivých príspevkov.
Zdrojový kód index.php:
<?php
header("Content-type: text/vnd.wap.wml");
echo "<?xml version="1.0" encoding="iso-8859-2"?>n";
echo "<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">n";
?>
<?php
include ('config.php');
?>
<wml>
<card title="Kniha hosti" id="kniha">
<p align="center">
<b>Kniha hostí</b><br/>
<a href="pridat.php">>> pridať</a><br/>
</p>
<?php
$limit = 15;
$numresults = @mysql_query("SELECT id FROM kniha ORDER BY id DESC") or die (mysql_error());
$numrows = @mysql_num_rows($numresults);
if (empty($o)) { $o=0; }
$results=@mysql_query("SELECT id,meno FROM kniha ORDER BY id DESC LIMIT $o, $limit") or die (mysql_error());
echo "<p>";
while ($row = mysql_fetch_array($results)) {
$id=$row[0];
$meno=$row[1];
echo "- <a href='zobrazit.php?id=$id'>$meno</a><br/>n";
}
echo"</p>";
if ($o>=1) {
$p=$o-5;
echo "<p>[<a href='index.php?o=$p'><<</a>]</p>n";
}
$pages=intval($numrows/$limit);
if ($numrows%$limit) {
$pages++;
}
if (!(($o/$limit)==($pages-1)) && ($pages!=1)) {
$n=$o+$limit;
echo "<p>[<a href='index.php?o=$n'>>></a>]</p>n";
}
?>
</card>
</wml> Hotovú knihu hostí si môžete stiahnuť
pod týmto odkazom (3,8 Kb).
Nabudúce
V piatej časti seriálu si povieme o tvorbe WAP stránok v XHTML pre mobilné telefóny podporujúce WAP 2.0.
Jaroslav Pitoňák
Neprehliadnite: