只用DELPHI就可以完成WEB数据库的开发工作。
起码具备以下的几点知识(DELPHI方面)
1。MIDAS多层数据库开发知识;
2。XML的基础知识;
3。MTS的基础知识;
4。DELPHI的WebBorker技术;
5。熟练使用DELPHI的InternetExpress技术;
起码具备以下的几点知识(DELPHI方面)
1。MIDAS多层数据库开发知识;
2。XML的基础知识;
3。MTS的基础知识;
4。DELPHI的WebBorker技术;
5。熟练使用DELPHI的InternetExpress技术;
基本思路是这样的。
一个后台CGI程序进行处理,它有两个响应例程,一个在登录时用,一个聊天时用。
用一个数据库 talker.DB来存放聊天发言。
用一个talker.htm来存放最近40条发言记录。
当用户提交请求时,首先要求用户登录信息,提交登录信息后,自动保存该
用户的名称,进入聊天界面。
聊天界面是由后台程序返回的一个带浮动框架的HTML页面,分两个部分:
1,浮动帧内用来存放talker.htm,(talker.htm在表头加上<meta http-equiv="refresh" content="10">
实现聊天记录每10秒刷新一次,而不需服务器起动进程。
2, 另外用一个窗体来实现数据的提交。
用户提交数据后,进行分析处理,在写入数据库的同时,同时更新TALKER。HTM文件。
缺陷所在:
1。没有身份验证功能。
2。刷新时间不能由用户定义
3。功能不强
工作环境:WIN98+PWS
unit HTML;interfaceuses
Windows, Messages, SysUtils, Classes, HTTPApp, Db, DBTables;type
TWebModule1 = class(TWebModule)
Table1: TTable;
procedure WebModule1WebActionItem1Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebModule1WebActionItem4Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;var
WebModule1: TWebModule1;implementation{$R *.DFM}procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var html,talker:string;
htmlfile:textfile;
i:integer;
data:tstrings;
begin
data:=nil;
data:=request.ContentFields;
table1.Open;
table1.Last;
table1.append; table1.FieldByName('name').asstring:=data.Values['username'];
table1.fieldbyname('sex').asstring:=data.values['sex'];
table1.fieldbyname('age').asstring:=data.values['age'];
table1.FieldByName('city').asstring:=data.values['city'];
table1.fieldbyname('email').asstring:=data.values['email'];
table1.fieldbyname('talk').asstring:=data.values['textarea'];
if table1.FieldByName('talk').asstring<>'' then
table1.Post
else
table1.Cancel;
{提交数据入库结束} {写聊天记录文件}
assignfile(htmlfile,'talker.htm');
rewrite(htmlfile);
html:='';
html:=html+'<html><meta http-equiv="refresh" content="10"><head></head><body>';
table1.open;
table1.last;
i:=0; while ((table1.recno<>1) and (i<=40 )) do begin
talker:=table1.fieldbyname('name').asstring;
if talker='' then
talker:='匿名者';
html:=html+'<td>'+'<font color="#0000FF">'+talker+'</font><font color="#00c0c0">说:</font>'; html:=html+table1.fieldbyname('talk').asstring+'</td>';
html:=html+'<p>';
table1.prior;
i:=i+1;
end;
html:=html+'</body></html>';
writeln(htmlfile,html);
closefile(htmlfile);
{写聊天文件}
html:='';
html:=html+'<html><head><title>留言簿</title></head><center><H2>聊天室</H2>';
html:=html+'</center><body background="" bgcolor="#fffff"><td></td><td>';
html:=html+'<iframe align="right" height="250" width="100%" marginwidth="40" marginheight="40" name="data" scrolling="yes" src="\scripts\talker.htm">';
html:=html+'<font color="#0000FF"></iframe><br><br>';
html:=html+'<p><form action="/scripts/web.exe/a"';
html:=html+'method="post" id="form1" name="form1" style="FONT-SIZE: larger">';
html:=html+'<br><br><br><br><br><br><br><br><br><br>';
html:=html+'</p><p>姓名:<input size="12" maxlength="10" name="UserName" value="';
talker:=data.Values['username'];
html:=html+talker;
html:=html+'">';
html:=html+'</p><p>留言:<textarea name="Textarea" rows="2" cols="50">';
html:=html+'</textarea>';
html:=html+' <input type="submit" Name="submit" value=" 提 交 ">';
html:=html+' <input type="reset" value=" 取 消">';
html:=html+'</form></center></BODY></html>';
Response.Content :=html;
end;
procedure TWebModule1.WebModule1WebActionItem4Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var html:string;
begin
html:='';
html:=html+'<HTML><HEAD><title>聊天登记</title>';
html:=html+'<body>';
html:=html+'<center><font color="red"><h2>请详细填写个人信息</h2></font></center>';
html:=html+'<p><p><p><p>';
html:=html+'<form action="/scripts/web.exe/a" method="post" id="form1" name="form1" style="FONT-SIZE: larger">';
html:=html+'<p> 姓名:<input size="12" maxlength="10" name="UserName"></p>';
html:=html+'<p> 性别:<input type="radio" name="Sex" value="Man" checked>男';
html:=html+' <input type="radio" name="Sex" value="Woman">女</p>';
html:=html+'<p> 年龄:<input size="5" maxlength="3" name="Age"></p>' ;
html:=html+'<p> 所在城市:<input size="20" maxlength="16" name="City"></p>' ;
html:=html+'<p> Email:<input size="24" maxlength="30" name="Email"></p>';
html:=html+'<p> 个人信息:<textarea name="Textarea" rows="5" cols="30"></textarea></p>';
html:=html+'<center><input type="submit" Name="submit" value=" 进入聊天室">';
html:=html+' <input type="reset" value=" 重 填">';
html:=html+'</form></center>';
html:=html+'</BODY></html>';
Response.Content:=html;
end;end.
如果是的话会不会很麻烦呢?因为如果页面太多的不同内容就会很那个啦!to bpc():有没有相关的书籍或例程呢?本人现需要开发一个基于web的数据库,可能比较小型的,数据库底层不会很复杂,两个表就够了。有没有比较快捷的方法呢?