Tvoríme WAP/WML stránky – IV. časť

Jaroslav Pitoňák  /  05. 06. 2006, 00:00

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&#xED;spevok bol &#xFA;spe&#x0161;ne pridan&#xFD;...";
    }
else {
?>

Va&#x0161;e meno: <br/>
<input name="meno" type="text"/><br/>
V&#xE1;&#x0161; email: <br/>
<input name="email" type="text"/><br/>
Spr&#xE1;va: <br/>
<input name="text" type="text"/><br/>
<br/>
<anchor>
Prida&#x0165;
 <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">&lt;&lt; N&#xE1;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&#xE1;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&#x0148;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."'>
&lt;&lt;Nov&#x0161;&#xED;</a>-</small>";
}
 }
else { echo"<small>&lt;&lt;Nov&#x0161;&#xED; -</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&#x0161;&#xED;&gt;&gt;</a></small>"; } }
else { echo"<small> Star&#x0161;&#xED;&gt;&gt;</small>"; }
?>
<br/>
<a href="index.php">&lt;&lt; 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&#xED;</b><br/>
 <a href="pridat.php">&gt;&gt; prida&#x0165;</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'>&lt;&lt;</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'>&gt;&gt;</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: