为了提高ColdFusion版的人气!特送分!
ColdFusion版成立到现在人气真的好差,为了提高,特送分!
规则为:只要你发一篇有关ColdFusion的技术文章我就送你20分(灌水的不要,我也可以将你的贴子变为精华或FAQ,增加你的可用分或信誉分)。
其实说句实话:ColdFusion在国内用的人不是很多,但我觉得学习他真的很好,你可以了解到很多Web方面的思想,对于你学习J2EE、ASP.NET、PHP...都有很大的帮助。你也可以比较ColdFusion与其他的解决方案的不同点(多学习他是怎么样简单的、利用什么样的技术、模式是问题简单),多学习一些原理性的东西。不要永远的停留在语言的层次上。
其实我一直觉得对于开发一些企业内部的中、小型管理系统,你完全可以使用ColdFusion,简单、快速。对于软件企业来说,在短的时间内开发出产品你的成本肯定比较的低,再说在企业内部使用盗版的ColdFusion谁会知道(当然我鼓励大家买正版,但真的好贵:-))。
还有,如果你发了贴子,可以到本贴里报道一下,我给分。如果超过5人的话我重新开贴送分。
[解决办法]
cf是一种WEB应用开发、服务提供和管理的集成环境。CF WEB采用基于页面的技术,在页面中嵌入一种基于标记的服务器端标记语言CFML。cf利用cfml中的70多个标记和函数,将浏览器界面控件、数据库访问、电子邮件、目录服务、XML等技术集成起来,连同CF的开发、管理工具,使它成为功能强大而又简便快捷的开发和实施WEB应用服务的WEB服务器。
[解决办法]
想学ColdFusion看看闪科帝国的http://www.flashempire.com/efe_special/cfmx/002.php
文章,受益颇丰
[解决办法]
在看看
ColdFusion来做FLASH(三)
作者:wait
ColdFusion的<CFGRAPH>还允许我们链接到其他的地址,当然,也可以传递数值给接受网页。现在,要说的就是这。
现在我们看看我在第一节说到的查询数据库代码。
<CFQUERY NAME="wait" DATASOURCE="cflash">
SELECT sortname, COUNT(*) AS Count
FROM sort,file
WHERE file.sort = sort.sortID
GROUP BY sortname
ORDER BY sortname
</CFQUERY>
这数据库总共就查了一个数值--SORTNAME和一个SQL合计函数。现在我希望,你们看到一个图表,而想进一步看看里面的具体文章。但是,我们这里是按类别区分的,只可能点击进去看到一个类别的所有文章,而不是某一篇文章。这容易,只要能链接,没什么能阻拦我们前进脚步的。
现在我们把第一节那源代码修改一下,添加几个参数。原来的代码如下:
<CFGRAPH
TYPE="Pie"
QUERY="wait"
VALUECOLUMN="Count"
ITEMCOLUMN="sortname"
FILEFORMAT="Flash"
TITLE="The Pie"
borderwidth="0"
depth="10">
</CFGRAPH>
现在我们开始改造。值得注意的,这次我们用柱形图我那数据库FILE表中的文章类型是连接SORT表中的SORTID,而不是SORTNAME,而我们这里只能传递SORTNAME,但是我们先不管那么多,传递过去让那边用COLDFUSION处理转换。
<CFGRAPH
TYPE="bar"
QUERY="WAIT"
VALUECOLUMN="wait_count"
ITEMCOLUMN="sortName"
FileFormat="flash"
DEPTH="15"
SCALETO="20"
SCALEFROM="0"
Barspacing="10"
Gridlines="4"
URL="show.cfm?sortName="
URLCOLUMN="Sortname">
</CFGRAPH>
如果你看了第2节,你会发现就加了3个参数,一个是URL,URLCOLUMN。另外一个是Barspacing URL是用来连接网页地址的,我们目的是链接到一个网页,显示那个类别的首页。URLCOLUMN是用来传递网页地址后面数值的。看了上面,你大概有个了解吧?当然,如果你连接到一个HTML页而后面没有参数了。URLCOLUMN也可以省了。另外上面参数Barspacing="10",我这里是用柱形显示的,不想每根柱子都紧紧的挨在一起。所以用了Barspacing来间隔每根柱子的间距,单位是象素。
修改保存以后运行运行如下:
可以想象一下,上面这段代码是链接到 show.cfm?sortname=#sortname#,show.cfm是我们用来显示类别的首页和显示一篇文章详细情况的CFML脚本文件。
现在开始我们来摆平show.cfm
先头我说了,我传送的是sortname而不是sortid,当用户点一个类型的柱子时候,就传递了一个sortname,例如是XML,这里就要显示所有XML文章列表,点一个文章标题,就查看这篇文章的详细情况。
首先来转换,把sortname转换成SORTID,然后再查询文章
《显示类别代码1》
<cfquery name="check" datasource="CFLASH">
SELECT sortID,sortName FROM SORT
WHERE SortName='#URL.SortName#'
</cfquery>
<CFQUERY NAME="ShowSort" datasource="CFLASH">
select ID,title from file
where file.sort=#check.sortID#
ORDER BY ID DESC
</CFQUERY>
只要你懂点SQL语句,就很容易理解上面的,第一个查询,是提取表里sortname相同与URL传递sortname的所有字段,SORT表里总共只有2个字段第二个查询,提取表FILE里面所有类型等于第一个查询里面SORTID字段的所有文章ID,TITLE,即ID和文章标题。
下面就容易很多了,显示这个类型所有的文章标题列表,稍为修饰了一下。
《显示类别代码2》
<ul>
<cfoutput query="showsort">
<LI>
<a href="show.cfm?ID=#ID#" target="_blank">#title#</a><br>
</LI>
</cfoutput>
</ul>
<br><br><br><a href="3.cfm">返回图表</a>
文章标题的链接还是链接到show.cfm网页,也就是自己本身的网页。我们需要加个判断。
1.如果URL上传递过来的sortname,我们查询所有文章等于sortname。
2.如果URL传递过来的是ID,我们就查询文章ID等于URL上ID的文章。
3、4.如果两个参数都传递了,或者什么都不传递,我们可以做另外的事,给提示,或者设置默认值。
但是我只说前面两种。第一种我们前面介绍了,显示所有本类型文章列表。现在我们说说第2种。先提示一下,如果判断URL传递的值是否存在可以用CF的IsDefined()函数而不是用象<CFIF URL.SORTNAM>这样的表达式,写过程序的朋友都知道,NULL和“不存在”完全是两码事。
显示文章的详细数据还要显示这篇文章是属于哪个类型。所以查询加了一些语句。
《显示文章代码1》
<CFQUERY NAME="showdetail" datasource="CFLASH">
select file.title,file.detail,sort.sortID,sort.sortname from file,sort
where ID=#URL.ID# AND file.sort=sort.sortID
</CFQUERY>
《显示文章代码2》
<cfoutput query="showdetail">
<b>文章主题</b>:#title#<br>
<b>文章类型</b>:#sortname#<br>
<b>详细内容</b>:
<blockquote>
#detail#
</blockquote><p>
</cfoutput>
<a href="javascript:window.close()">关闭窗口</a>
[解决办法]
<a href="3.cfm">返回图表</a>
看懂了吗?如果不懂我也没办法,只有建议你去看看COLDFUSION编程这方面的教程。(注意现在是广告时间)对了,前个月我路过李家村,发现有卖书的,专卖COLDFUSION书,其中有一本叫《轻松掌握COLDFUSION》,入门非常不错,价格公道,童叟无欺,,你可瞧准了,是电子工业出版社出版的哟。www.china-pub.com
接上面
重新组织一下思路,
1.如果URL传递有SORTNAME
执行《显示类别代码1》
然后执行《显示类别代码2》
2.如果URL传递有ID
执行《显示文章代码1》
然后执行《显示文章代码2》
组合以后源文件如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!---
title:让ColdFusion来做FLASH<3>
author:wait(parole@163.net)
description:与CFGGRAPH交互
date:November,11 2002
--->
<CFif Isdefined("URL.SortName")>
<cfquery name="check" datasource="CFLASH">
SELECT sortID,sortName FROM SORT
WHERE SortName='#URL.SortName#'
</cfquery>
<CFQUERY NAME="ShowSort" datasource="CFLASH">
select ID,title from file
where file.sort=#check.sortID#
ORDER BY ID DESC
</CFQUERY>
<ul>
<cfoutput query="showsort">
<LI>
<a href="show.cfm?ID=#ID#" target="_blank">#title#</a><br>
</LI>
</cfoutput>
</ul>
<br><br><br><a href="3.cfm">返回图表</a>
</CFIF>
<CFIF IsDefined("URL.ID")>
<CFQUERY NAME="showdetail" datasource="CFLASH">
select file.title,file.detail,sort.sortID,sort.sortname from file,sort
where ID=#URL.ID# AND file.sort=sort.sortID
</CFQUERY>
<cfoutput query="showdetail">
<b>文章主题</b>:#title#<br>
<b>文章类型</b>:#sortname#<br>
<b>详细内容</b>:
<blockquote>
#detail#
</blockquote><p>
</cfoutput>
<a href="javascript:window.close()">关闭窗口</a>
[解决办法]
<a href="3.cfm">返回图表</a>
</CFIF>
你完全可以不写,直接下载本教程里面的源文件。想不到我这么懒的人还这么勤快。
现在测试一下,在IE打开3.cfm文件,就是先介绍的带有URL图表文件,
我现在点开一个类别例如我点FLASH。那么SORNAME=FLASH就会传递给SHWO.cfm网页,显示会象下面这样显示
随便点一个文章标题,会在新窗口中弹出所点的那篇文章详细情况。
结束语:这只是COLDFUSION和FLASH结合的一部分,但是不支持中文,如果改用COLFUSION配合JAVA那就能实现K形图,数据实时变化了。但是我们这里讨论的是CF和FLASH的结合。另外COLDFUSION利用FLASH COMPONENT KIT还有更多的效果,那时候我们就可以做真正动态的FLASH站点了。不过哪有下载我也没找到。谁有可以给我发一份。我先在这里说声谢谢。本教程网上没有演示,因为虚拟主机太贵,如果哪位有空间的朋友愿意代劳在网上演示一下我会感激不尽的。也欢迎喜欢ColdFusion的朋友和我交流。Parole@163.net
有篇用COLDFUSION 做的购物车比这先写一个月,但是后来发现网上的没人喜欢COLDFUSION,所以一直搁浅。
主要介绍了用COLDFUSION制作购物车,另外侧重应用了WDDX生成XML文件做为存储介质。大家看看可以先去看看程序演示 http://cfml.vicp.net/ 朋友的个人电脑,有时候也许还没睡醒没开机可能无法访问或者在玩CS被蹂躏中...可怜的孩子。
全部教程和源代码下载地址:http://coldfusion.3322.net/CFGRAPH.ZIP
[解决办法]
在csdn没有coldfusion专栏时,我上的是这个网站,很好的。里面有很多技术文章!
http://www.cfwindow.com/cn/main.cfm
[解决办法]
用CFM做动态实现分类 ——摘自Coldfusion中文用户组论坛
<HTML>
<HEAD>
<TITLE>²ãµÝʽѡÔñ</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<cfquery name="Q_country" datasource='#dsn#'>
select * from ct_country order by country_id
</cfquery>
<cfquery name="Q_province" datasource='#dsn#'>
select * from ct_prov
</cfquery>
<cfquery name="Q_city" datasource='#dsn#'>
select * from ct_city
</cfquery>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
var arrItems1 = new Array();
var arrItemsCode1 = new Array();
var arrItemsGrp1 = new Array();
var arrItems2 = new Array();
var arrItemsCode2 = new Array();
var arrItemsGrp2 = new Array();
<cfoutput query="Q_province">
arrItems1[#currentRow#] = "#DESCRIPTION#";
arrItemsCode1[#currentRow#] = "#PROV_ID#";
arrItemsGrp1[#currentRow#] = "#COUNTRY_ID#";
</cfoutput>
<cfoutput query="Q_city" maxrows="7">
arrItems2[#currentRow#] = "#DESCRIPTION#";
arrItemsCode2[#currentRow#] = "#CITY_ID#";
arrItemsGrp2[#currentRow#] = "#PROV_ID#";
</cfoutput>
function selectChange(control, controlToPopulate, ItemArray, ItemCode, GroupArray)
{
var myEle ;
var x ;
// Empty the second drop down list of any choices
for (var q=controlToPopulate.options.length;q>=0;q--) controlToPopulate.options
<< =null;
if (control.name == "firstChoice") {
// Empty the third drop down list of any choices
for (var q=myChoices.thirdChoice.options.length;q>=0;q--) myChoices.thirdChoice.options
<< = null;
}
// Loop through the array of individual items.
// Add the items that have the same child id to dropdown list.
for ( x = 1 ; x <= ItemArray.length ; x++ )
{
if ( GroupArray[x] == control.value )
{
myEle = document.createElement("option") ;
myEle.value = ItemCode[x] ;
myEle.text = x + ItemCode[x] + ItemArray[x] ;
controlToPopulate.add(myEle) ;
}
}
}
// End -->
</script>
</HEAD>
<BODY BGCOLOR=#ffffff vlink=#0000ff>
<div align="center">²ãµÝʽѡÔñÏÂÀ­²Ëµ¥</div>
<center>
<table width="100%" cellpadding=0 cellspacing=0 border=0>
<tr>
<td width="99%" align=center> <basefont size=3> <FONT SIZE="+2" FACE="Helvetica,Arial">
</font><BR>
<BR>
<form name=myChoices>
<table align="center">
<tr>
<td>
<SELECT id=firstChoice name=firstChoice onchange="selectChange(this, myChoices.secondChoice, arrItems1, arrItemsCode1, arrItemsGrp1);">
<option value=0 SELECTED>[ÇëÑ¡Ôñ]</option>
<cfoutput query="Q_country">
<option value=#country_id#>#DESCRIPTION#</option>
</cfoutput>
</SELECT>
</TD><TD>
<SELECT id=secondChoice name=secondChoice onchange="selectChange(this, myChoices.thirdChoice, arrItems2, arrItemsCode2, arrItemsGrp2);">
</SELECT>
<SELECT id=thirdChoice name=thirdChoice>
</SELECT>
</TD>
</TR>
</TABLE>
</form>
</table>
</center>
</body>
</html>