分享
 
 
 

UltraDev 4插件应用解析(7)

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

插件名字

版本

类型

作者

下载该插件

TWvote

1.02.1

Server Behavior

Tim Walter

下载这个例子

(图1)

这个调查系统的思路:

我们这个调查系统的制作主要是利用MX182762_TWvote.mxp插件来生成的。

在此先说明这个插件投票原理:根据每次投票的动作,获得相应的值,增加一条记录,然后在建立记录集时利用SQL语句获得最终所需要的数据来显示投票结果。

在原插件中作者只使用了一个字段进行记录,为了限制少数人恶作剧式的重复投票我们对IP地址和日期进行限制,当然目前还没有一种方法可以绝对限制一个人的重复投票,好在不是政治选票没有必要“精益求精”的了。^_^

这个限制:对于某一天内的同一个IP地址只能进行一次投票。

在这个投票系统中我们共需要三个页面和一个用于柱状图显示的图片文件

default.asp:投票页面

error.htm:重复投票错误的显示页

over.asp:投票结果显示页

col.gif:图片文件

||||||该教程默认你已经懂得UltraDev的基础操作

1. 设计数据库

数据库种建立三个字段,字段名、数据类型如图2所示

(图2)

2. 建立default.asp文件

2.1 在页面内插入一个表单,在表单内建立三个单选按钮,按钮名为“voting”,对应数据库中的voting字段,按钮值分别为“1”、“2”、“3”对应三个选项“ASP”、“JSP”、“PHP”;如图3

(图3)

2.2 写入投票主题、插入投票按钮和链接到over.asp的查看按钮;

2.3 在表单内建立两个隐藏域,分别是:

域名:xtdate 值:

域名:IP 值:

2.4 建立插入记录的服务器行为,如图4设置,这样每次提交选择的项目后都会在数据库中增加一条包含按钮值、你的IP、和提交日期的记录。

(图4)

2.5 插入服务器行为视窗中的User Authentication→Restrict Access To Page行为,如图5设置,这个行为的设置是验证你的IP地址与数据库中“IP”字段所记录的地址是否相同,如果存在相同IP则转向“error.htm”页面。

(图5)

||||||2.6 当然,仅仅这样是不够的。对于网友每次上网的IP地址都是不同的,那么下次其他网友使用了你的IP地址不是无法投票了,所以这里还要加上日期验证,就是说在不同日期内的相同IP是允许投票的。我们先来分析一下Restrict Access To Page行为的代码:

MM_dupKeyUsernameValue = CStr(Request.Form("ip"))

MM_dupKeySQL="SELECT ip FROM tp WHERE ip='" & MM_dupKeyUsernameValue & "'"

这里将表单内名为“ip”的隐藏域设为变量“MM_dupKeyUsernameValue”,在SQL语句中对这个变量进行了引用来和“ip”字段匹配,这样结合整个行为来理解,就是说如果“ip”字段中存在与表单“ip”隐藏域中有相符的值就转向“error.htm”页。

在理解代码原理后我们考虑是否可以增加一个变量并在SQL语句中增加这个的变量的判断。

MM_dupKeyUsernameValue2 = CStr(Request.Form("xtdate"))

与“ip”隐藏域相同写法增加一个获得时间的变量:MM_dupKeyUsernameValue2

MM_dupKeySQL="SELECT ip FROM tp WHERE ip='" & MM_dupKeyUsernameValue & "' and xtdate='" & MM_dupKeyUsernameValue2 & "'"

在原SQL语句后增加AND语句让他判断两个条件后才可以转向“error.htm”页。

完整语句如图6

(图6)

2.7 最后加上针对单选按钮没有被选择时按下“投票”按钮的JS判断,这不属于UltraDev范围所以只写出代码不作详细说明。

表单验证代码:

<script LANGUAGE="javascript">

<!--

function form1_onsubmit() {

if(document.form1.voting[0].checked==false &&document.form1.voting[1].checked==false&&document.form1.voting[2].checked==false)

{

alert("哎呀,您还没有选择呢!")

return false

}

}

//-->

</script>

2.8 完成default.asp文件制作。如图7

(图7)

||||||3. 建立error.htm文件

这个页面是重复投票的错误提示页,没有任何UltraDev动作,所以采用htm格式制作,这里不作说明。如图8

(图8)

4. 建立over.asp文件的制作

4.1 在over.asp文件中先建立一个记录集“Recordset1”,如图9设置

(图9)

4.2 在服务器行为视窗中使用“TW_vote”插件,在对话框中如图10设置

(图10)

Connectionstring链接名称:tp

Recordset Name记录集名:Recordset1

Table Name数据表名:tp

Field Name域名:voting

Image File图片文件:col.gif

Table Width(Pixels)表格宽度:200

Column Width(Pixels)图片宽度:30

完成后确定返回。

||||||4.3 你现在看到的应该如图11所示

(图11)

我们修改其中的文字、样式和添加返回按钮后即可存盘预览。如图12

(图12)

4.4 虽然现在已经可以投票了但我们还想知道一下投票原理也就是这个插件到底在我们的页面中干了些什么。查看原代码很容易发现一大串SQL语句是最惹眼的了。

1. SELECT COUNT (voting) as total,

2. (select COUNT (voting) FROM tp WHERE voting =1) as votingyes,

3. (select COUNT (voting) FROM tp WHERE voting =2) as votingno,

4. (select COUNT (voting) FROM tp WHERE voting =3) as votingdunno ,

5. INT(votingyes/total*100) AS agreecent,

6. INT(votingno/total*100) AS disagreecent,

7. INT(votingdunno/total*100) AS dontknowcent

8. FROM tp

注意:该序号是为了清楚表达所加。

第一行:计算“vouing”字段的行数总和成为新的字段“total”,得到总投票次数;

第二行:计算“tp”数据表中“vouing”字段等于“1”的总和成为新的字段“votingyes”,得到投票值为“1”的次数;

第三行:与第二条类似得到字段votingno为投票值为“2”的次数;

第四行:与第二条类似得到字段votingdunno为投票值为“3”的次数;

第五行:取得字段“votingyes”除以字段“total”的值乘以100并用INT函数取整成为新的字段“agreecent”,得到投票数为“1”的次数在总次数中所占的百分数;

第六行:与第五行类似取得新的字段“disagreecent”;

第七行:与第五行类似取得新的字段“dontknowcent”;

第八行:不解释了,只是第一行的语句的后半句。

好了,这个投票教程到此结束,其中较为重要的是多条件判断后跳转和插件中的SQL语句,希望你可以从中得到启发!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有