130个漂亮CSS布局站点参考
星期三, 06月 4th, 2008
-
以下是CSSVault.com推荐de2004年1月–3月130个CSS布局站点,供大家参考:
以下是CSSVault.com推荐de2004年1月–3月130个CSS布局站点,供大家参考:
在cnbruce’’s blog上看到这个即时换STYLEde相关代码,觉得不错就COPY过来备用.
在见de例子就是:一个站点上有多个页面样式提供浏览者选择.同时,在选择了某样式后,再次打开该页面时,将仍然保持该样式.自然会想到了Cookie技术.
程序相关代码
<HTML>
<HEAD>
<link ID=”skin” rel=”stylesheet” type=”text/css”>
<TITLE>换肤技术</TITLE>
<SCRIPT LANGUAGE=javascript>
<!–
function SetCookie(name,value){
var argv=SetCookie.arguments;
var argc=SetCookie.arguments.length;
var expires=(2<argc)?argv[2]:null;
var path=(3<argc)?argv[3]:null;
var domain=(4<argc)?argv[4]:null;
var secure=(5<argc)?argv[5]:false;
document.cookie=name “=” escape(value) ((expires==null)?”":(”; expires=” expires.toGMTString())) ((path==null)?”":(”; path=” path)) ((domain==null)?”":(”; domain=” domain)) ((secure==true)?”; secure”:”");
}
function GetCookie(Name) {
var search = Name “=”;
var returnvalue = “”;
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search);
if (offset != -1) {
offset = search.length;
end = document.cookie.indexOf(”;”, offset);
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset,end));
}
}
return returnvalue;
}
var thisskin;
thisskin=GetCookie(”nowskin”);
if(thisskin!=”")
skin.href=thisskin;
else
skin.href=”css.css”;
function changecss(url){
if(url!=”"){
skin.href=url;
var expdate=new Date();
expdate.setTime(expdate.getTime() (24*60*60*1000*30));
//expdate=null;
//以下设置COOKIES时间为1年,自己随便设置该时间..
SetCookie(”nowskin”,url,expdate,”/”,null,false);
}
}
//–>
</SCRIPT>
</HEAD>
<BODY>
<P>请选择下面de下拉菜单测试换肤效果</P>
<a href=# onclick=”changecss(”css.css”)”>css.css</a>
<a href=# onclick=”changecss(”css1.css”)”>css1.css</a>
<a href=# onclick=”changecss(”css2.css”)”>css2.css</a>
<a href=# onclick=”changecss(”css3.css”)”>css3.css</a>
<br>
<select onchange=”changecss(this.value)”>
<option>选择样式单文件</option>
<script language=”javascript”>
var csss=new Array();
csss[0]=”css.css”;
csss[1]=”css1.css”;
csss[2]=”css2.css”;
csss[3]=”css3.css”;
var i;
for(i=0;i<4;i )
if(thisskin==csss[i])
document.write(”<option value=\”" csss[i] “\” selected>” csss[i] “样式单文件</option>”);
else
document.write(”<option value=\”" csss[i] “\”>” csss[i] “样式单文件</option>”);
</script>
</select>
</BODY>
</HTML>
1、问题描述:
系统S中有M1,M2,M3,M4四个模块,每个模块都是一个web应用.其中一个模块中设置Session后在其他模块中无法读取.
2、问题原因:
一个WEB应用相当于一个站点,应用与应用之间不可能共享Session.
3、解决方法:
1) 将四个web应用包含在同一个解决方案中
(注:调整.webinfo文件使解决方案能构正常运行)
2) 新建一个web应用Main,该web应用包含在解决方案S中,并直接存放在S目录下(即与虚拟目录S相对应).
3) 在Main应用中添加其他四个应用de引用
4) 重新生成Main应用,此时,与Main模块相关deM1、M2、M3、M4四个模块dedll将生成于S\bin目录下.
5) 调整web.config文件
删除M1、M2、M3、M4四个模块web.config中除AppSetting节以外de所有节.(也可删除四个模块中deweb.config,只保留S目录下deweb.config文件.)
以下操作将影响开发环境
6) 删除goble.acax
删除M1、M2、M3、M4四个模块中degoble.acax文件.
7) 删除M1、M2、M3、M4四个模块对应de虚拟目录
8)大功告成
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
using System.Security.AccessControl;
using System.Security.Principal;
public partial class ACLChange : System.Web.UI.Page
{
//文件夹路径
private string strDir = “images”;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AddDirectorySecurity();
}
}
/// <summary>
/// 给文件夹添加ASPNET用户
/// </summary>
private void AddDirectorySecurity()
{
DirectoryInfo dirinfo = new DirectoryInfo(Server.MapPath(strDir));
if ((dirinfo.Attributes & FileAttributes.ReadOnly) != 0)
{
dirinfo.Attributes = FileAttributes.Normal;
}
//取得访问控制列表
DirectorySecurity dirsecurity = dirinfo.GetAccessControl();
string strDomain = Dns.GetHostName();
dirsecurity.AddAccessRule(new FileSystemAccessRule(strDomain “\\ASPNET“, FileSystemRights.FullControl, AccessControlType.Allow));
dirinfo.SetAccessControl(dirsecurity);
}
}
配置要求:IIS(win2000 server 自带)、Java 2 SDK 1.4.2 (或更高版本)、Tomcat Web Server 连接器、Tomcat 5.0.24 (或更高版本)
准备
一、Java 2 SDK 1.4.2 (或更高版本)
1、 www.java.sun.com/downloads/ 网站中下载,选择
2、 Java 2 Platform, Standard Edition (J2SE)
3、 在下拉列表框中选择All platforms
4、 J2SE v 1.4.2_04 SDK includes the JVM technology 下选择
5、 Download J2SE SDK
6、 选择accept后下载Windows Offline Installation, Multi-language (j2sdk-1_4_2_04-windows-i586-p.exe, 49.36 MB) 版本
二、Tomcat 5.0.24 (或更高版本)
1、http://jakarta.apache.org/site/binindex.cgi下载
2、在Downloads中选择Binaries
3、在Tomcat 5.0.25 KEYS 中选择5.0.25 exe PGP MD5 下载
三、Tomcat Web Server 连接器
1、http://jakarta.apache.org/site/binindex.cgi下载
2、在Downloads中选择Binaries
3、在Tomcat Web Server Connectors KEYS 中选择
4、JK 2
JK 2 Binary Releases
5、出现Index of/dist/jakarta/tomcat-connectors/jk2/binaries
界面,选择win32/然后选择下载
jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip
注意 这个目录列表显示de文件名称被截断,所以需要观察浏览器状态栏中de提示,确认您准备下载de文件应该是以\”…iis.zip\”为结尾de
安装
一、Java 2 SDK
运行j2sdk-1_4_2_04-windows-i586-p.exe 按照提示安装(可以更改安装路径到您习惯de地方).这里选择
d:\\jdk(jdk为自己新建de文件夹)
二、Tomcat 5
运行jakarta-tomcat-5.0.24.exe 按照提示安装(可以更改至其它路径).
这里选择d:\\tomcat5.0(tomcat5.0为自己新建de文件夹)
选择本地机器dejdk路径,一般情况下,安装文件会自动搜索并显示,如果没有正确显示,也可以手动更改
成功安装后,程序会提示启动tomcat并查看readme文档.
注意: 启动Tomcat之前要确定系统没有其它服务已经占用8080端口(Tomcat默认端口)和8009端口( Tomcat\’s AJP13 连接器端口)
Tomcat正常启动后会在系统栏加载图标
注意: tomcat5.0以下de版本必须设初始密码,tomcat5.0以上de可以不设
三、Tomcat JK2 IIS 连接器
解压缩jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip得到bin conf doc三个文件夹,进入\\bin\\后可见isapi_redirector2.dll.
剪切/复制isapi_redirector2.dll 文件到Tomcat\’s bin\\目录中
新建目录win32\\i386\\ 并粘贴isapi_redirector2.dll.
记住这个路径,稍后配置IISde时候还会用到.这个路径不是系统要求de,可改变!
现在可以删除jakarta-tomcat-connectors-jk2.0.4-win32-IIS目录,这里面de文件已经没用了.实际上在jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip中我只用到了isapi_redirector2.dll一个文件
设置
一、tomcat
进入 Tomcat\’s conf\\ 文件夹.
要支持 JK2 连接器, 您可能需要修改jk2.properties文件. 大多数情况下保留此文件de默认状态即可,本人de多次配置过程都没有修改过这个文件.
## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.
## COMMENTS WILL BE _LOST_
## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.
# Set the desired handler list
# handler.list=apr,request,channelJni
# www.knowsky.com
# Override the default port for the socketChannel
# channelSocket.port=8019
# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config is working
# shm.file=${jkHome}/work/jk2.shm
# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:
# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so
# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess
request.tomcatAuthentication=false
设置环境变量tomcat_home.指向tomcatde安装目录d:\\Tomcat 5.0下.注意要求系统有可用JAVA_HOME环境变量
创建workers2.properties到d:\\Tomcat 5.0\\conf下.workers2.properties内容文件如下:
[shm]
file=\”d:/Tomcat 5.0/logs/jk2.shm\”
size=1048576
# Example socket channel, override port and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# Uri mapping
[uri:/*.jsp]
[uri:/servlet/*]
worker=ajp13:localhost:8009
三、Tomcat IIS 连接器
您已经放置isapi_redirector2.dll在您de路径下,本例子中是
d:\\Tomcat 5.0\\bin\\win32\\i386
现在需要添加一些必要de注册信息到注册表,redirector被IIS调用时会读到.建立一个.reg文件
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Apache Software Foundation\\Jakarta Isapi Redirector\\2.0]
\”workersFile\”=\”d:\\\\Tomcat 5.0\\\\conf\\\\workers2.properties\”
\”extensionUri\”=\”/jakarta/isapi_redirector2.dll\”
\”logLevel\”=\”debug\”
\”serverRoot\”=\”d:\\\\Tomcat 5.0\\\\\”
在记事本中写入上面de文字,并保存为 reg.reg
双击.reg文件,在注册表中de内容将会添加成功
HKEY_LOCAL_MACHINE\\SOFTWARE\\Apache Software Foundation\\Jakarta Isapi Redirector\\2.0中可以看到.
四、给Tomcat配制虚拟主机多个站点.
新建两个文件夹d:\\tomcat1和d:\\tomcat2.在两个文件夹里面再分别建立一个ROOT目录.
记事本打开d:\\Tomcat5.0\\conf\\server.xml文件.在文件server.xml中找到
标签;在标签之后新建如下信息:
www.tomcat1.com\” appBase=\”d:\\tomcat1\” >
www.tomcat2.com\” appBase=\”d:\\tomcat2\”>
主要就是新建两个虚拟主机www.tomcat1.com和www.tomcat2.com.站点目录分别是d:\\tomcat1和d:\\tomcat2.d:\\tomcat1\\ROOT和d:\\tomcat2\\ROOT.分别是两个站点de主目录.也建立了日志文件和访问日志文件.
五、打开tomcatde/servlet/*de映射.
记事本打开d:\\Tomcat 5.0\\conf\\web.xml文件.
把
invoker
org.apache.catalina.servlets.InvokerServlet
debug
0
2
和
invoker
/servlet/*
这两个相关代码段de注释去掉,使其生效.
六、在iis中建立两个站点tomcat1和tomcat2.建立时注意主机头分别设成www.tomcat1.com和www.tomcat2.com.主目录分别设成d:\\tomcat1\\ROOT和d:\\tomcat2\\ROOT.两个站点分别建立名称为jakartadeISAPI筛选器.可执行文件都指向d:\\Tomcat 5.0\\conf\\connector\\isapi_redirector2.dll.
两个站点分别新建虚拟目录别名都填:jakarta,目录选择指向:d:\\Tomcat 5.0\\bin\\win32\\i386在\”执行(例如ISAPI应用程序或CGI)\”一项打上勾,完成.
IIA筛选器
再进行筛选器de选择时,选用jakarta可执行文件为d:\\Tomcat 5.0\\bin\\win32\\i386
建筛选器所需要de虚拟目录
选择需要加载Tomcat服务站点,右键选择新建,再选择虚拟目录.创建虚拟目录,别名为jakarta.注意这个名字是固定值,不要拼写错误!指定目录为isapi_redirector2.dll所在目录. 本例子中是 d:\\Tomcat 5.0\\bin\\win32\\i386
重启tomcat和iis.
在tomcat1和tomcat2文件夹下最好放一个index.htm和一个index.jsp文件.方便测试.
JSP是由Sun微系统公司于1999年6月推出de一项技术,是基于JavaServlet以及整个java体系deWeb开发技术,利用这一技术可以建立先进、安全和跨平台de动态网站.
JSP 与ASP非常相似.两者都提供在HTML 相关代码中混合某种程序相关代码、由语言引擎解释执行程序相关代码de能力.在ASP或JSP 环境下,HTML相关代码主要负责描述信息de显示样式,而程序相关代码则用来描述处理逻辑.ASP下de编程语言是 VBScript 之类de脚本语言,而JSP 使用de是Java.
TRS及其JavaBeans
TRS系统是国际上第一个采用“并行计算”算法de中文全文检索系统,其全文检索引擎可以提供关系型数据库所没有de性能,并可与关系数据库协同使用;因为TRS可对文本内容建立全文索引,提供高效de全文检索功能.所以使用TRS可以大大提高网站de查询速度.
TRS JavaBeans是基于Java组件技术——JavaBeans开发de,具有良好de跨平台特性.本文将介绍利用JSP、TRS及JavaBeans建立一个Webde过程.
TRS JavaBeans配置步骤
以NT下WebLogic5.1.0为例说明.
1.安装WebLogic5.1.0
2.修改startWebLogic.cmd
将“set PRE_CLASSPATH=”改为“set PRE_CLASSPATH=%TRSBean.jarde全路径%;%TRSDemo.jarde全路径%”.
例如:如果TRSBean.jar位于C:\TRSJavaBeans\lib\目录下,则将此语句改为:
set PRE_CLASSPATH=C:\TRSJavaBeans\lib\TRSBean.jar
3.修改weblogic.properties
将语句:#weblogic.httpd.register.servlets=weblogic.servlet.ServletServlet前面de#号去掉.
将下列语句前de“#”号去掉:
# weblogic.httpd.register.*.jsp=\
# weblogic.servlet.JSPServlet
#weblogic.httpd.initArgs.*.jsp=\
# pageCheckSeconds=1,\
# compileCommand=C:/java/bin/javac.exe,\
# workingDir=D:/weblogic/myserver/classfiles,\
# verbose=true
接着将“compileCommand=C:/java/bin/ javac.exe,\”改为“compileCommand=JAVA_ PATH/bin/javac.exe,\”,其中JAVA_PATH为实际所用JDKde安装根目录.
4.安装DEMO
将TRSJavaBeans安装包deDEMO目录全部复制到D:/weblogic/myserver/public_html目录下.
完成以上配置后,我即可进入设计开发阶段.
开发示例
设数据库为:“news.投资动态”,字段为“标题”、“内容”、“日期”和“编号”(惟一性字段).
以显示某一条具体记录de详细内容为例,至于分页显示、全文检索和BBS等,篇幅所限,不再赘述,感兴趣de用户可以自己试一试.实际运行结果可以参看易信网(www.exin.net)或北京投资平台(www.bjinvest.gov.cn).
jsp程序如下:
<HTML>
<HEAD>
<TITLE>新闻</TITLE>
<link REL=”stylesheet” href=”mycss.css”TYPE=”text/css”>
<META content=”text/html; charset=GB2312″http-equiv=Content-Type>
<%@ page import=”com.eprobiti.TRS.*”%>
<%@ page import=”java.util.*”%>
<jsp:useBean id=”TRSConn”scope =”session” class=”com.eprobiti.TRS.TRSConnection”/>
<jsp:useBean id=”TRSRS”scope =”page” class=”com.eprobiti.TRS.TRSResultSet”/>
</HEAD>
<BODY>
<%
String item_id = request.getParameter(”id”);
//参数id由URL或者前一个文件de表单隐藏域传过来
String dbname,ip,port,username,password;
dbname = “news.北京新闻”;
//TRS数据库名字
ip=”202.123.166.99″; //TRS服务器IP
port=”8888″;//TRS服务器端口
username=”yourname”;
// 可以检索”news.北京新闻”de用户名
password=”yourpassword”;
// 该用户名对应de口令
String filter = “编号=” item_id;
//定义检索条件
try {
if (TRSConn.connect(ip,port,username,password)){ }
//建立与TRS服务器de连接
else {
out.println(”Connection 连接失败!\n”);
}
TRSRS = TRSConn.executeSelect(dbname,s1,”",”", null, 0, 0, false);
// 执行查询操作,生成记录集
}
catch(TRSException TRSe) {
out.println(”ResultSet 连接失败!\n”);
}
try {
TRSRS.moveFirst();
//记录定位
%>
<p>
<center>
<table width=80%>
<tr align=center>
<td><%=TRSRS.getString(”标题”)%>
</td>
</tr>
<tr align=center>
<td><%=TRSRS.getString(”日期”)%>
</td>
</tr>
<tr>
<td><%=TRSRS.getString(”内容”)%>
</td>
</tr>
</table>
</center>
<p>
<%
TRSRS.close();
} catch(TRSException TRSe) {}
%>
</body>
</html>
在实际de应用中,经常会遇到一些特殊de情况,比如需要新闻,天气预报,等等,但是作为个人站点或者实力小de站点 我不可能有那么多de人力 物力 财力去做这些事情,怎么办呢?
好在互联网是 资源共享de,我可以利用程序 自动de把别de站点de页面抓取回来经过处理后被我所利用.
用什么呢,那个战友给de是不行de,其实在Php有这个功能,那就是用curl库.请看下面de相关代码!
<?php
$ch = curl_init ("http://dailynews.sina.com.cn");
$fp = fopen ("php_homepage.txt", "w");
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
?>
但有时会出现一些错误,但实际上已经下载完了!我问了老外,他们没有给我一个答复,我想实在不行,就在函数前面加个◎;这样我只要对$txt进行适当de分析后,我就可以偷偷de抓取sinade新闻!不过,还是不用de为好!以免发生法律纠纷,这里只是想告诉您Phpde功能非常de强大!您可以做许多事情!
【本文版权归作者与奥索网共同拥有,如需转载,请注明作者及出处】
写PHP/WML相关代码
现在我写首个PHP/WML页面,名字为index.wml
<?php
Header("Content-type: text/vnd.wap.wml");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");
echo ("<?xml version=’1.0′?>");
?>
"http://www.wapforum.org/DTD/wml_1.1.xml" >
<WML>
<CARD id=card1 title=UNITO/Database><P>
You can search for professors’ consulting hours or for examinations timetables.
<SELECT name=choice title=Research value="1"> <OPTION selected value=exams_data>Examinations timetables</OPTION> <OPTION value=consulting_data>Consulting hours</OPTION></SELECT>
<DO type="text" label="Go">
<GO href="index2.wml#card2" method="get">
<POSTFIELD value="$(choice)" name="choice">
</GO>
</DO>
</P>
</CARD>
</WML>
第一行告诉浏览器该文件deMIME类型,如果没有头文件de话,浏览器是不懂得接收de是属于什么类型de内容,而且有了这一行de话,文件de扩展名就不重要了.对于您想写一个多样式de页面,这个功能是十分有用de,您可以通过一个脚本来检测设备或者它de性能,然后根据浏览器de类型返回WML或者HTML.
检查PHP是否已经装有短标签支持.如果是de话,您可以做一个类似<?xml version=’1.0′?>de声明,并且将它嵌套到PHP相关代码中以免混淆.
该页面de余下相关代码只是让您搜索测验de时间或者咨询de时间.选择de项目会记录在$choice变量中.
下一页称为index2.wml,让您选择是通过科目还是姓来查询数据库.
Header("Content-type: text/vnd.wap.wml");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");
echo ("<?xml version=’1.0′?>");
?>
"http://www.wapforum.org/DTD/wml_1.1.xml" >
<WML>
<CARD id=card2 title="Kind of research">
<P><BR><?php
echo ("You are checking ");
if ($choice == "exams_data") {
echo (" examinations timetables.<BR>n");
} else if ($choice == "consulting_data") {
echo (" consulting hours.<BR>n"); <BR>} else { <BR>echo ("I don’t know what and there is some problem.<BR>n");
}
?>
<P><BR>You can search by surname (either exact or partial) or by subject (either exact or partial).<BR><BR>Select the kind of research. <BR><P>
<SELECT name="<?php echo (" $choice?);<br> ?>" value="surname" title="research"> <OPTION selected value=surname>professor’s name</OPTION> <OPTION value=subject>subject</OPTION>
接着用户必须在下一个文件(index3.wml)中输入.我要求用户输入科目de名字或者教授de姓.您要留意一下变量在页面之间是怎样传送de.语法看来有点复杂,不过可以让您了解整个过程是怎样通过几个文件来完成de.
<?php
Header("Content-type: text/vnd.wap.wml");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo ("<?xml version=’1.0′?>;");
>;
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml" >; <WML>
<CARD id=card3 title=Name>
<?php
echo ("<p>Insert ");
if (${$choice} == "surname") {
echo ("professor’s surname (or part of it).n");
} else if (${$choice} == "subject") {
echo ("the subject (or part of it).n");
} else {
echo ("Maybe there is some problem.n");
} echo ("<INPUT name=’"${$choice}"’ type=’"text"’>");
?>
<DO type="text" label="Go">
<GO href="query.wml" method="get">
<?php
echo ("<POSTFIELD value=’"$"."$choice".""/’ name=’"$choice"’>");
echo ("<POSTFIELD value=’"$"."${$choice}".""/’ name=’"${$choice}"’>");
?>
</GO>
</DO>
<P></P>
</CARD>
</WML>
<DO type="text" label="Go">
<GO href="index3.wml#card3" method="get">
<?php
echo ("<POSTFIELD value=’"$"."$choice".""/’ name=’"$choice"’>");
echo ("<POSTFIELD value=’"$choice"/’ name=’"choice"’>");
?>
</CARD>
</WML>
写查询相关代码
以下de文件负责处理查询.它de名字是query.wml,我将更详细地分析它.
<?php
Header("Content-type: text/vnd.wap.wml");
printf("<?xml version="1.0"?>n");
printf("n");
printf("n");
// 以下各行是用来为查询授课时间构造SQL语句de
$consulting_tables =
"(professors left join teach on (professors.Id = teach.Id), subjects)";
$consulting_columns =
"professors.Surname, professors.Name, subjects.Subject , ";
$consulting_columns .=
"subjects.Cod_number, professors.Consulting_hour, professors.Consulting_place";
$consulting_query=
"subjects.Cod_Subject = teach.Cod_subject ";
// 以下各行是用来为查询测验时间构造SQL语句de
$exams_tables= "(exams left join professors ON (exams.Id = professors.Id), subjects)";
$exams_columns= "subjects.Subject , subjects.Cod_number, professors.Surname, ";
$exams_columns.= "professors.Name, exams.Date, exams.Time, exams.Room, exams.Test";
$exams_query= "exams.Cod_Subject = subjects.Cod_Subject ";
// 以下各行是用来为查询测验时间表desql语句增加查询限制
if ($exams_data) {
switch($exams_data) {
case "subject":
$exams_query.= " and subjects.Subject like ‘%$subject%’";
break;
case "surname":
$exams_query.= " and professors.Surname like ‘%$surname%’";
break;
}
}
// 以下各行是用来为查询授课时间desql语句增加查询限制
if ($consulting_data) {
switch($consulting_data) {
case "subject":
$consulting_query
.= " and subjects.Subject like ‘%$subject%’";
break;
case "surname":
$consulting_query.= " and professors.Surname like ‘%$surname%’";
break;
}
}
// 处理与数据库de连接
function connect($tables, $data, $condition_passed) {
//
// put your password and username in next line
//
$db = mysql_pconnect("localhost","***","***");
// put your database name in next line
mysql_select_db("lanfranchi_co_uk",$db);
$sql = "SELECT $data FROM $tables WHERE $condition_passed order by professors.Surname";
$result = mysql_query($sql,$db);
return $result;
}
// 这个函数产生授课时间dewml相关代码
function consulting_print($consulting_result) {
global $file;
printf("n");
printf(" <P>Receiving hours
n");
while ($myrow = mysql_fetch_row($consulting_result)) {
printf(" <P>$myrow[0], $myrow[1]</P>n");
printf(" <P>$myrow[2]</P>n");
printf(" <P>$myrow[3]</P>n");
printf(" <P>$myrow[4]</P>n");
printf(" <P>$myrow[5]</P>n");
}
printf("</CARD>n");
}
// 这个函数产生测验时间表dewml相关代码
function print_exams($exams_result) {
global $file;
printf("<CARD id=’"card1"’ title=’"hours"’>n");
printf(" <P>Examinations hours
n");
while ($myrow = mysql_fetch_row($exams_result)) {
printf(" <P>$myrow[2], $myrow[3]</P>n");
printf(" <P>$myrow[0]</P>n");
printf(" <P>$myrow[1]]</P>n");
printf(" <P>$myrow[4], $myrow[5]</P>n");
printf(" <P>$myrow[7]</P>n");
printf(" <P>$myrow[6]</P>n");
}
printf("</CARD>n");
}
// 检查您时候选择授课时间或者测验时间,连接数据库并且调用产生wml相关代码de函数
if ($consulting_data) {
$connection_result =
connect($consulting_tables, $consulting_columns, $consulting_query);
consulting_print($connection_result);
}
if ($exams_data) {
$connection_result =
connect($exams_tables, $ exams_columns, $ exams_query);
print_exams($connection_result);
}
printf("</WML>n");
?>
好,完成了.您已经建立了首个基于MySQL数据库dePHP/WML页面了,自己继续实践一下吧.
支持WAP功能de移动电话越来越多了.因此,您也应该考虑一下建立自己deWML网站了,本文要介绍de是如何建立PHP/WML页面de站点,使用MySQL数据库,可动态更新站点de内容,具体例子是某个学院de教授授课时间和测验时间表.一点也不复杂哦
在开始之前,您应该准备好以下东东:
1.您已经正确安装好PHP和MySQL,并且有使用两者编程de经验.
2.您有SQLde相关知识
3.您运行de是Apache并且可写.haccess文件;或者您运行IIS并且您可以增加映射(或者您可以让系统管理员帮您de忙);
4.您有WMLde相关知识;
好了,第一步首先让您de服务器知道使用PHP来处理WML文件,以下介绍如何做到这一点.
设置服务器
如果您使用de是Apache,您必须在您de目录中找到一个.htaccess文件.然后,加入以下行:
AddType application/x-httpd-php3 .wml
如果您找不到该文件,可以加入一个,并且加入以上行,放在您de目录中.
如果您使用de是IIS,您必须做一些改动,与安装PHP时差不多:看一下.php和.php3扩展名de映射,并且为.wml加入同样de映射处理.
通常您会发现PHP被映射到:
C:\php\php4isapi.dll
或者
C:\php\php.exe
准备工作
如果您使用de是微软de操作系统,您可以安装NOKIAde开发工具包.它可以检查您de语法,并且让您通过一个类似电话de界面来预览WML页面,该工具包还带有关于WML和WML脚本de参考文档.如果您de电话没有WAP支持,或者您不能使用一个WAP网关,这可以帮上大忙哦.
要下载这个工具,您首先必须以一个WAP开发者de身份在这个网站登记(http://www.forum.nokia.com/main/0,6668,1_1_4,00.html),要记住de是您需要Java2 Runtime Enviromentde支持(Java2运行环境de支持).您可以使用任何de文本编辑器来写页面.
在写任何PHP/WML相关代码前,您需要建好MySQLde表格.
该数据库由4个表够成.
1.professors表包括教授de相关数据;
2.subjucts表包括主题de相关数据;
3.exams表包括测验de相关数据;
4.teach表包括教授和他们所授科目de关系信息
在连接MySQL时,可通过以下de相关代码建立表格
CREATE TABLE professors (
Id int(11) DEFAULT ‘0′ NOT NULL auto_increment,
Surname varchar(24) NOT NULL,
Name varchar(24) NOT NULL,
Email varchar(48) DEFAULT ‘Not avaliable’,
Cod_course varchar(16) DEFAULT ‘Not avaliable’,
Consulting_hour varchar(128) DEFAULT ‘Not avaliable’,
Consulting_place varchar(128) DEFAULT ‘Not avaliable’,
PRIMARY KEY (Id)
);
这些语句建立了professorsde表结构.ID为每个教授分配了一个唯一de识别号,而且是表de主键.其它字段,Surname, Name, Email用来表示每个教授de姓、名字和e-mail地址.Cod_course为唯一识别每个科目值.最后Consulting_hour和Consulting_place表示授课时间和授课de地点.
CREATE TABLE subjects (
Subject varchar(96) NOT NULL,
Cod_Subject varchar(24) NOT NULL,
Cod_number varchar(12) NOT NULL,
PRIMARY KEY (Cod_subject )
);
Subject是科目de名字,Cod_subject是学院采用de代表每个科目de名字,它de值是唯一de,并且是这个表de主键.Cod_number是一个数字de字段,相同科目de不同课程都属于一个组,这个数字就是组de识别号.
CREATE TABLE exams (
Cod_Subject varchar(24) NOT NULL,
Id int(11) NOT NULL,
Date date DEFAULT ‘0000-00-00′,
Time time DEFAULT ‘00:00:00′,
Room varchar(64),
Test varchar(16) DEFAULT ‘Oral’
);
Cod_subject指学院采用de代表每个科目de名字,是唯一de,ID是教授de唯一识别号,Date, Time和Room用来记录测验举行de日期、时间和地点,Test用来表示测验de类型(包括书面、口头等)
CREATE TABLE teach (
Cod_Subject varchar(16) NOT NULL,
Id int(11) DEFAULT ‘0′ NOT NULL,
PRIMARY KEY (Id, Cod_subject )
);
在teach表中,ID是教授de识别号,Cod_Subjectde含义同上,两者构成了该表de主键.
下一步是在数据库中填入一些数据,这步可以自行完成.