发新话题
打印

PHP做WAP的总结

PHP做WAP的总结

//Hello World
复制内容到剪贴板
代码:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="card1" title="Title">
<P>
<!--Write your card implementation here.-->
Hello World!!
</P>
</card>
</wml>
可以用opera来查看和校验你的代码,通过校验一般用手机访问就没问题了

下面是一个应用例子
//wap_list.html
复制内容到剪贴板
代码:
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>

<card title="{typename}">
<p align="center">
<img src="./logo.gif" alt="img" />
<br/>
</p>
<p align="center">
{typename}({total})
<br/><br/>
</p>

<p>
<!-- BEGIN list -->
<a href="show.php?id={id}">{name}</a> ({hit})
<br/>
<!-- END list -->
</p>

<p>
{pagebar}
</p>

<p align="center">
<br/> <br/>
<a href="index.php">返回首页</a>
<br/> <br/>
{time}
<br/>
@2006 xjtusky.com
</p>
</card>
</wml>
//对应的list.php
复制内容到剪贴板
代码:
<?php
define('ROOT_PATH', '../');
require_once(ROOT_PATH . 'Includes/Global.php');

header('Content-Type: text/vnd.wap.wml');
echo '<?xml version="1.0" encoding="GB2312"?>';//这东西不能放到 php 外面

$id = $_GET['id'];
if($id == ''){
echo "分类ID不存在";
exit;
}

// 分页
$page = $_GET['page'];

if (!empty($page)){
$start_limit = ($page - 1) * $Config['pagePer'];
}else
{
$start_limit = 0;
$page = 1;
}

$SQL = "SELECT `id` , `name` , `hit` FROM " . GAME_TABLE . " WHERE `typeid` =$id ";

$Result = $DB -> query($SQL);
$total = $DB -> _GetNumRows($Result);

$SQL .= " ORDER BY id DESC LIMIT $start_limit, $Config[pagePer]";

$Result = $DB -> query($SQL);
while($Row = $DB -> queryArray($Result)){
$list[] = array(
     'id' => $Row['id'],
'name' => $Row['name'],
     'hit' => $Row['hit']
);
}

// 分页
$cont = ceil($total / $Config['pagePer']);
if($cont > 1 && $num % $Config['pagePer'] == 0)
$pagebar = paginationtxt (floor($cont), $page, 'list.php?id=' . $id . '&page');
elseif($cont > 1)
$pagebar = paginationtxt (floor($cont) + 1, $page, 'list.php?id=' . $id . '&page');

$typename = typename($id);

$time = date("H:i:s");

//$qc = "?";
$page = new SmartTemplate("wap_list.html");

//$page -> assign('sitename', $Config['sitename']);
$page -> assign('typename', $typename);
$page -> assign('pagebar', $pagebar);
$page -> assign('total', $total);
$page -> assign('list', $list);
$page -> assign('time', $time);
$result = $page -> result();
//$page -> output();
echo $result;
?>
//分页函数
复制内容到剪贴板
代码:
<?php
function paginationtxt ($count,$page,$url){

if($page>1)
{
$re="\n<a href=\"$url=1\">首页</a> <a href=\"$url=".($page-1)."\">上一页</a>";
}
if($page<$count)
{
$re.="\n<a href=\"$url=".($page+1)."\">下一页</a> <a href=\"$url=$count\">尾页</a> ";
}
return $re;
}
?>
这个是放在下载目录下的,具体的自己看了
.htaccess AddType text/vnd.sun.j2me.app-descriptor .jad
AddType application/java-archive .jar
AddType application/vnd.symbian.install .sis

有一个地方必须注意:链接中不能这么用?id=**,而应该这么用xx.php?id=**
呵呵,第一次搞这个玩意,出了不少错,感谢phpe的wsjakey指点

以下摘自:http://www0.ccidnet.com/school/web//2001/05/25/70_4286.html

WML程序的结构形式及组成:
引用:
1)语法。WML是一种标记语言,延续了XML的语法规则。

2)文件声明。所有的WML程序必须在文件的开头处声明XML文件类型,包括XML的版本,WML的文档类型、所用规范等。

3)标签。在WML语言中需要使用标签(Tag),使用形式与HTML和XML等标记语言中的形式是完全一致的。

4)元素。WML的元素(Element)用于描述卡片组(Deck)的标记信息即结构信息。一个元素通常有一个首标签、内容、其它元素及一个尾标签组成,具有下述两种结构之一:

<首标签>内容</尾标签>

<标签/>

元素包含的内容中还可以有元素,这些元素也是有首标签、相应内容、其它元素及尾标签组成。不包含内容的元素成为空元素。它为一个单独的标签。或者说,单独的标签也是一种元素。

5)属性。WML与XML一样,其标签可以包含很多属性。属性用于给标签提供必要的附加信息,且属性内容通常在起始标签内使用。不过,属性内容不会被浏览器显示,它至作为参数为标签提供必要的信息。

指明属性值的时候,需要把该值用引号扩起来,可以是单引号或者双引号,引号通常成对嵌套使用。属性名称必须小写。例如:<card id="card 1"  title="Toolkit Demo">

而且,单引号的属性中还可以包含双引号的属性。实体字符也可以作为属性值。实体字符是指诸如&、<、>、'、"的特殊字符,在WML程序中显示着类字符需要特殊处理,后面我们介绍具体方法。

6)注释。WML程序中也可以加入注释。注释内容用于给开发人员顺利阅读源代码提供方便,它不会被浏览器显示出来。注释内容在标签中用感叹号(!)引出,并用于<!--注释内容-->的形式。例如:<!-- Write your card implementation here.-->。需要说明的是,XML程序中不支持注释的嵌套。

7)文档结构。WML文档是由“卡片(Card)”和“卡片组(Deck)”构成的,一个Deck是一个或多个Card的集合。当客户端发出请求之后,WML即从网络上把Deck发送到客户浏览器,这是用户就可以浏览Deck内包含的所有Card,而不必从网上单独下载每一个Card,程序中的第一个Card是缺省得可见的Card。

注意:Deck是一副纸牌的意思,这里是指一叠卡片,所以我们在这里称之为它为“卡片组”。另外,Card指的是WAP手机屏幕大小的网页,尽管有时一个Card可能需要多屏才能显示完,但我们也可以把它翻译成“页面”,不过这样与HTML中的页面容易混合。因此我们在这里称之为卡片。

WML字符使用基本规则
WML是一种比较严格的语言,字符使用必须遵守相应的规则,这些基本规则主要包括以下几个方面:

1)大小写敏感。在WML中,无论是标签元素还是属性内容都是大小写敏感的,这一点继承了XML的严格特性,任何大小写错误都可能导致访问错误。

一般来说,WML的所有标签,属性,规定和枚举及它们的可接受值必须小写,Card的名字和变量可大写和小写,但它是区分大小写的。包括参数的名字和参数的数值都是大小写敏感的,例如variable1、Variable1和vaRiable1都是不同的参数。 2)空格。对于连续的空字符,程序运行时只需要一个空格。属性名、符号(=)和值之间不能有空格。

3)标签。标签内属性的值必须使用双引号(")或单引号(')括起来。对于不成对出现的标签,必须在大于号(>)前加上顺斜杠(/),比如换行标签必须写成<br/>才正确。

4)不显示的内容。在WML中,不显示的字符主要包括换行符、回车符、空格和水平制表符,它们的8位十六进制内码分别为10、13、32及9。

程序执行时,WML将忽视所有的多于一个以上的不显示字符,即WML会把一个或多个连续的换行、回车、水平制表符及空格转换成一个空个。

5)保留字符。这是WML的一些特殊字符,如小于号(<)、大于号(>)、单引号“'”、双引号“"”、和号(&)。

6)显示汉字。如果希望WML程序执行时能够显示汉字,则只需要程序开头使用encoding指定汉字字符集即可。例如:<?xml version="1.0" encoding="gb2312">。
注意:指定汉字字符集的形式和方法可能因为开发工具或WAP手机的不同而不同。

[ 本帖最后由 renZF 于 2008-3-20 11:48 编辑 ]
努力,努力,再努力

TOP

发新话题