推荐阅读

PS制作与玻璃撞击的动感岩石文字效果
碎块字制作思路并不复杂,分为两个大的步骤。首先是文字部分的处理,用选区及移动工具把文字分成多个碎块;然后用图层样式及纹理素材增加质感和纹理即可。最终效果 一、新建一个960 * 560像素的文件,背景填充黑色。 二、选择文字工具输入所需的文字,文字颜色为白色。 三、在文字缩略图上右键选择栅格化文字。

20个“标准的”配色方案
20个“标准的”配色方案<html> <head> <title>Colors</title> <style type="text/css"> body{ margin:20px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size:12px; } .style1{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #96C2F1; background-color: #EFF7FF } .style1 h5{ margin: 1px; background-color: #B2D3F5; height: 24px; } .style2{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #9BDF70; background-color: #F0FBEB } .style2 h5{ margin: 1px; background-color: #C2ECA7; height: 24px; } .style3{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #BBE1F1; background-color: #EEFAFF } .style4{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #CCEFF5; background-color: #FAFCFD } .style5{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #FFCC00; background-color: #FFFFF7 } .style6{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #92B0DD; background-color: #FFFFFf } .style6 h5{ margin: 1px; background-color: #E2EAF8; height: 24px; } .style7{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #A9C9E2; background-color: #E8F5FE } .style8{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #E3E197; background-color: #FFFFDD } .style9{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #ADCD3C; background-color: #F2FDDB } .style10{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #F8B3D0; background-color: #FFF5FA } .style11{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #D3D3D3; background-color: #F7F7F7 } .style12{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #BFD1EB; background-color: #F3FAFF } .style13{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #FFDD99; background-color: #FFF9ED } .style14{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #CACAFF; background-color: #F7F7FF } .style15{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #A5B6C8; background-color: #EEF3F7 } .style16{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #CEE3E9; background-color: #F1F7F9 } .style17{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #CAE3FF; background-color: #F4F9FF } .style18{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #C9D9EE; background-color: #ECF8FF } .style19{ width: 800px; height: 100px; margin: 0px auto; margin-bottom:20px; border:1px solid #5C9CC0; background-color: #F2FAFF } h5{color:#CCCCCC;margin-left:680px} a{color:#CCCCCC;text-decoration:none} a:hover{color:#666666;text-decoration:underline} </style> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> <body> <div class="style1"><h5>Title</h5></div> <div class="style2"><h5>Title</h5></div> <div class="style6"><h5>Title</h5></div> <div class="style3"></div> <div class="style4"></div> <div class="style5"></div> <div class="style7"></div> <div class="style8"></div> <div class="style9"></div> <div class="style10"></div> <div class="style11"></div> <div class="style12"></div> <div class="style13"></div> <div class="style14"></div> <div class="style15"></div> <div class="style16"></div> <div class="style17"></div> <div class="style18"></div> <div class="style19"></div> </body> </html> [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

Flash CS5实例教程:漂亮的气泡动画
function ball(r:int):MovieClip {//自定义函数 ball,参数为 r,整数型,返回值为 MovieClipvar col:uint=0xffffff*Math.random();//声明一个无符号整数型变量 col,获取任意颜色var sh:MovieClip=new MovieClip();//声明一个影片剪辑类实例 shsh.graphics.beginGradientFill(GradientType.RADIAL,[0xffffff,col,col],[0.5,1,1],[0,200,255]);//在 sh 中设置渐变填充样式(放射状渐变,颜色,透明度,色块位置)sh.graphics.drawCircle(0,0,r);//在 sh 中画圆(圆心坐标(0,0),半径为参数r)sh.graphics.endFill();//结束填充return sh;//返回 sh}var ballArr:Array=[];//声明一个空数组 ballArrfor (var i:int=0; i<10; i++) {//创建一个 for 循环,循环 10次var balls:MovieClip=ball(Math.random()*20+20);//声明一个影片剪辑类实例balls,调用函数 ball(参数r 半径的值为 20-40 之间的随机值)addChild(balls);//把 balls添加到显示列表balls.x=Math.random()*(stage.stageWidth-balls.width)+balls.width/2;//balls 的 X 坐标balls.y=Math.random()*(stage.stageHeight-balls.height)+balls.height/2;//balls 的 Y坐标,使它出现在舞台的任意位置balls.vx=Math.random()*2-1;//为 balls 设置自定义属性 vx,数值为-1-1 之间的随机数,表示 X 方向的速度balls.vy=Math.random()*2-1;//为 balls 设置自定义属性 vy,数值为-1-1 之间的随机数,表示 Y 方向的速度ballArr.push(balls);//把 balls 添加到数组 ballArr 中}addEventListener(Event.ENTER_FRAME,frame);//添加帧频事件侦听,调用函数 framefunction frame(e) {//定义帧频事件函数 framefor (var i:int=0; i<ballArr.length; i++) {//创建一个 for循环,循环次数为数组 ballArr 的元素数var balls:MovieClip=ballArr;//声明一个影片剪辑类实例 balls,获取数组 ballArr 的元素balls.x+=balls.vx;//balls的 X 坐标每帧增加balls.vxballs.y+=balls.vy;//balls的 Y 坐标每帧增加balls.vyif (balls.x<balls.width/2) {//如果balls 出了舞台左边缘balls.x=balls.width/2;//balls 的 X坐标获取balls 宽度的一半balls.vx*=-1;//balls.vx 获取它的相反数}if (balls.x>stage.stageWidth-balls.width/2) {//如果 alls 出了舞台右边缘balls.x=stage.stageWidth-balls.width/2;//balls 的 X 坐标获取场景宽度与 balls 宽度一半的差balls.vx*=-1;//balls.vx 获取它的相反数}if (balls.y<balls.height/2) {//如果 balls出了舞台上边缘balls.y=balls.height/2;//balls 的 Y坐标获取 balls 高度的一半balls.vy*=-1;//balls.vy 获取它的相反数}if (balls.y>stage.stageHeight-balls.height/2) {//如果 balls 出了舞台下边缘balls.y=stage.stageHeight-balls.height/2;//balls 的 Y 坐标获取舞台高度与 balls 高度一半的差balls.vy*=-1;//balls.vy 获取它的相反数}}for (var j:int=0; j<ballArr.length-1; j++) {//创建一个 for 循环,循环次数比数组 ballArr 元素数少 1var ball0:MovieClip=ballArr[j];//声明一个影片剪辑类实例 ball0,获取数组 ballArr 的元素for (var m:int=j+1; m<ballArr.length; m++) {//创建一个 for 循环,var ball1:MovieClip=ballArr[m];//声明一个影片剪辑类实例 ball1,获取数组 ballArr 的元素var dx:Number=ball1.x-ball0.x;//声明一个数值型变量 dx,获取var dy:Number=ball1.y-ball0.y;//声明一个数值型变量 dy,获取var jl:Number=Math.sqrt(dx*dx+dy*dy);//声明一个数值型变量 jl,获取小球的距离var qj:Number=ball0.width/2+ball1.width/2;//声明一个数值型变量获取小球半径之和if (jl<=qj) {//如果 jl 小于等于 qjvar angle:Number=Math.atan2(dy,dx);//声明一个数值型变量angle,获取ball1 相对于 ball0 的角度var tx:Number=ball0.x+Math.cos(angle)*qj*1.01;//声明一个数值型变量 tx,获取目标点的 X坐标var ty:Number=ball0.y+Math.sin(angle)*qj*1.01;//声明一个数值型变量 ty,获取目标点的 Y坐标ball0.vx=- (tx-ball1.x);//ball0 在X 方向的速度ball0.vy=- (ty-ball1.y);//ball0 在Y 方向的速度ball1.vx=(tx-ball1.x);//ball1 在 X方向的速度ball1.vy=(ty-ball1.y);//ball1 在 Y方向的速度}}}}

生态摄影奥秘
说到CCD的尺寸,其实是说感光器件的面积大小,这里就包括了CCD和CMOS。感光器件的面积越大,也即CCD/CMOS面积越大,捕获的光子越多,感光性能越好,信噪比越低。CCD/CMOS是数码相机用来感光成像的部件,相当于光学传统相机中的胶卷。 CCD上感光组件的表面具有储存电荷的能力,并以矩阵的方式排列。当其表面感受到光线时,会将电荷反应在组件上,整个CCD上的所有感光组件所产生的信号,就构成了一个完整的画面。 如果分解CCD,你会发现CCD的结构为三层,第一层是“微型镜头”,第二层是“分色滤色片”以及第三层“感光层”。 第一层“微型镜头” 我们知道,数码相机成像的关键是在于其感光层,为了扩展CCD的采光率,必须扩展单一像素的受光面积。但是提高采光率的办法也容易使画质下降。这一层“微型镜头”就等于在感光层前面加上一副眼镜。因此感光面积不再因为传感器的开口面积而决定,而改由微型镜片的表面积来决定。 第二层是“分色滤色片” CCD的第二层是“分色滤色片”,目前有两种分色方式,一是RGB原色分色法,另一个则是CMYK补色分色法这两种方法各有优缺点。首先,我们先了解一下两种分色法的概念,RGB即三原色分色法,几乎所有人类眼镜可以识别的颜色,都可以通过红、绿和蓝来组成,而RGB三个字母分别就是Red, Green和Blue,这说明RGB分色法是通过这三个通道的颜色调节而成。再说CMYK,这是由四个通道的颜色配合而成,他们分别是青(C)、洋红 (M)、黄(Y)、黑(K)。在印刷业中,CMYK更为适用,但其调节出来的颜色不及RGB的多。 原色CCD的优势在于画质锐利,色彩真实,但缺点则是噪声问题。因此,大家可以注意,一般采用原色CCD的数码相机,在ISO感光度上多半不会超过400。相对的,补色CCD多了一个Y黄色滤色器,在色彩的分辨上比较仔细,但却牺牲了部分影像的分辨率,而在ISO值上,补色CCD可以容忍较高的感光度,一般都可设定在800以上 第三层:感光层 CCD的第三层是“感光片”,这层主要是负责将穿过滤色层的光源转换成电子信号,并将信号传送到影像处理芯片,将影像还原。
最新发布

Dreamweaver经典技巧,一个也不能少
Dreamweaver使得建立Web站点变得异常简单,但不要误认为这等于功能简单。实际上,这种有效的可视化Web开发工具同样是专业设计人员选择的,其中的许多优点非常合适于那些需要强大站点管理工具或者想用自己的模板扩充程序以协同工作的开发人员。更棒的是,Dreamweaver的灵活性使你无论如何都能提高技术水准!既然如此,那么何不现在就开始使用这些技巧以充分发挥Dreamweaver的强大功能呢? Dreamweaver具有许多丰富的用户向导功能,这使它看上去有无法抵挡的魅力。这些易于执行的技巧能够指引你流畅地创建新站点。 连接窗口 Dreamweaver的用户界面分割为几个窗口,当处于工作状态时,屏幕上只能容纳几个窗口。为了保存真实的操作状态,最佳策略是将打开的窗口连接(dock)在一起。你可能尝试过拖拽窗口的标题栏,这在许多程序中都是可以完成连接动作的,但是在Dreamweaver中却不生效。 实现窗口连接的技巧是用鼠标拖住窗口的tab栏,而不是标题栏。试着点击鼠标拖住一个窗口的tab栏并掠过另外一个窗口,当看到出现一个黑色边界时,松开鼠标按钮,你会发现2个窗口已经结合在一起了。现在你就可以照此方法连接任意多的窗口,最终合并到一个窗口中,如此就能节省大量的屏幕空间而看到实际的工作情况。但是请注意:装载器窗口、属性窗口以及站点窗口是不能被连接的。 数据输入 Dreamweaver允许你将数据直接输入到表格中,这样就比一次次地剪切、粘贴内容到单元格中容易许多。但是如果要输入的数据中含有插入/表格数据命令时,就会有些麻烦。很不幸,Dreamweaver只能输入具有分隔符的.txt文件。如果要处理Word或者Excel文件,可以先将它们输出为.txt文件,然后再输入进Dreamweaver中。你会发现这样的处理方法简直象梦一样美妙! 删除, 恢复,重复 输入数据到表格能够节省大量的操作时间,但是Dreamweaver中最有用的一个功能是它的历史窗口。在这个窗口中,一旦打开文档,随后执行的每一个操作都被记录下来,这样,你就可以跟踪操作行为并且简单地undo或者重复最后一步。只需要选中历史窗口中的最后一步然后按下Delete键,或者拖曳滑动指示器到某一步一次删除几个步骤。同样,点击窗口中的Replay按钮再次执行某一步。 很奇怪不能保存超过50步吧?这是个默认数值。要提高这个数值,选择“编辑/参数选择”,确认处于“普通”功能页面,在 "历史步骤最大值" 字段中输入一个较高数值。请注意,设定的保存步骤数目越大,消耗的内容就越大。

DreamWeaver高级应用―模板与库
DreamWeaver4来了,颇有点狼来了的味道。“什么,4.0版本出来了?我3.0还没有熟悉呢!”的确,软件的更新换代速度越来越快了,新软件一波接一波――首先是flash5.0开始,然后有Photoshop6.0,再到最近的DreamWeaver4.0和Fireworks4.0,真有点吃不消的感觉。这次要说的并不是DreamWeaver4.0的新功能,相反的,要介绍的是DW里一直为人津津乐道,从2.0版本就开始有的功能――模板与库。 DW2.0开始就与Frontpage98抗衡,当时就有了闪光点很亮的模板与库了,很可惜一直到后来的3.0版本与4.0版本都看不到对模板与库偶多少的改进,或许MACROMEDIA公司已经觉得它的功能够强了吧!但在实际应用中,使用模板与库还是有一定的技巧的。一、把什么定义成库? 很多教程谈到库时,都建议把页脚的版权信息做成库,等到要修改版权时,只要修改库,就可以方便的更新所有的页面了。除了应用在页脚,库其实还可以应用在好多地方,如导航条。举例说,21cn主页的导航条,处于banner下的电脑、娱乐等栏目就可以作成库。还有栏目名称,如果要对一个大型网站增加一个栏目而有不改变整体风格,用库就很方便了。 库还可以应用在很多地方,如图片,文字(通常是特定的名称),总之,在规划网站前好好想想哪里可以用得着库,这样以后维护起来就很方便了。二、为什么不能给库定义样式表Css? 这是刚刚接触库时经常碰到的问题。要解决这个问题首先要明白库是如何工作的。在一个使用了库的页面中,查看源代码(幸好DW4可以直接同时查看源代码和工作区),你会发现使用库的地方都被DW定义了标记;而在库的源代码钟,并不包含标签,而CSS恰恰室定义在于之间的。 知道了问题所在,就很容易解决了。使用库时,在库的源代码钟同时添加CSS的代码,这样库也可以定义CSS了。三、从模板新建文件后,为什么不能连接CSS? 定义一个CSS文件后,网站中的所有文件都连接这个文件,这时经常使用的技巧。但奇怪的时,使用模板新建的文件,竟然不能使用CSS。 同样从源代码入手。通常创建模板时都会定义一个表或一幅图片喂可编辑区域。关键也时这里:DW对除了定义为可编辑区域外,其他一律不能编辑!也就时说,如果定义了表格为可编辑区域,那么只有 之间时可以更改的!这样问题的解决办法就和上一个问题差不多了:在模板里预先定义好CSS,然后输出CSS文件,(DW4里的新功能时可以直接创建.CSS文件)直接在模板里连接CSS文件,这样就可以了。 其实在使用模板和库中碰到的问题,很都都可以通过源代码解决。这也说明了一个问题:即使所见即所得的编辑根据多么强大,许多问题仍然要通过源代码来解决。幸好的时DW4新添加了这样的功能:同时查看代码区和工作区,这样制作网页时就更得心应手了。当然DW4还有其他许多新功能,以后我们慢慢研究。

Dreamweaver4.0 快捷键自己DIY
快捷键的熟练运用,往往可以使我们工作的效率得到提高。习惯了DW3(注:Dreamweaver3.0缩写,下同)快捷键的朋友,当升级到DW4后,很多快捷键像F8,F7等都变了,觉得很不方便。好在DW4为我们想到了这一点,给了我们自己修改的权限。我们不仅可以把DW4的快捷键设为DW3方案,还可以设为HomeSite方案,更有甚者我们还可以根据自己的习惯来DIY快捷键。客观地说这也是DW4的一个亮点。下面我来为大家介绍如何改变DW4的快捷键方案,希望大家看完以后,可以自己DIY一套快捷键方案。一,熟悉菜单的基本组成。先来打开快捷键编辑窗口,点击菜单Edit/Keyboard shortcuts...后,出来下图编辑窗口,注意:在Keyboard shortcuts编辑窗口出来的时候会有一点慢,不要以为死机了。Current Set选项:它提供了四种固化的快捷键方案,这是不允许你改的。选项分别是:BBEdit,Dreamweaver3,HomeSite,Macromedia Standard。其中BBEdit,HomeSite,以及Dreamweaver3都是网页设计软件。:拷贝一份你选择的快捷键方案。:重命名,更改你方案的名称,只能修改自定义方案的的名称。:把你设定的快捷键方案,输出到文件,可以是.txt文件,也可以是.htm文件。:删除自定义方案,被删除的方案一定不能是当前系统正在使用的方案,同样只能删除自定义的方案。Command(命令)选项:可以选择要更改或设置快捷键的命令。任何命令都可以为它设置快捷键。Menu Commands(编辑窗口菜单命令):包括了所有DW4编辑窗口的命令;Site Menu Commands(站点管理菜单命令):包括了所有DW4站点管理窗口的编辑命令;Code Editing(代码编辑):包括了对代码,文本的处理的所有命令,如:Ctrl+c(复制),Ctrl+v(粘贴)等;Document Editing(文当编辑):主要是一些与窗口相关的命令,它和Site Editing(站点编辑)中的大部分命令重复了,这可能是DW4的一个小Bug吧。Shortcuts(快捷键):显示当前命令的快捷键。可以用减号来删除当前命令的快捷键,如果想增加快捷键就点击加号。可以为一个命令设置多个快捷键。比如:复制命令的快捷键是Ctrl+C,也可以还为它设置一个Alt+C的快捷键,注意:要确保Alt+C没有指向其他命令。Press Key:输入键值。输完后点击Change(改变)按钮。二,让我们来DIY自己的快捷键方案。在此我只设置一个快捷键,只要知道了方法,大家可以如法炮制。下面就是如何把F7键设为打开Behavior(行为)编辑窗口的实现过程。1.点击菜单Edit/Keyboard shortcuts...出来编辑窗口,在Current Set选择Macromedia Standard,当然也可以根据需要来选择其他的方案。2.点击,出来以下窗口,在窗口中输入名称,中文不被支持。由于DW4把原始选项固化了,不能修改,若要修改就必须先复制一个方案,再在这个方案的基础上作修改。3.由于要修改的快捷键在Menu Commands中,所以先选择Menu Commands再选择window,把Behaviors Shift+F3选中。4.Shortcuts选项就会出现:Shift+F3,再在Press Key 中输入F7后点击Change。5.一个快捷键的修改很简单,如果还想修改就重复3,4步。6.DW4还提供把你的方案输出文件功能,你只需点击,再输入文件名,就可以把你自己DIY的方案输出到文件。

Dreamweaver3 图层应用技巧(六)
>>可以用鼠标拖动的滚动板 (请看范例)今天我讲的是一个可以用鼠标到处拖动的滚动板。先看看例子,用鼠标拖拖看拖不拖的动,拖不动要跟我说一声:)这是本教程的最后一个例子,也可以说是压轴戏,我会讲得很详细,这个例子我花了一点时间想,为把它做好看一点,还加了一个图片背景。下面我就以这个例子的实现来讲步骤,你在具体操作时要会举一反三。1.你得先找一个背景图片,把这个图片放在一个图层中,此图层名为layer1,这图层就是滚动板的样式。2.在layer1中插入一个子层layer2。按住Ctrl键不放,点击Object对象浮动条中的 ,在layer1中画个图层,大小如下图,这个图层就是用来控制播放文本区域大小的。3.再在layer2中用同样的办法插入一个子图层layer3,在图层layer3中写入你想要发布的消息,这个图层的宽度一定要小于layer2的宽度,它的高度不限。现在为止已在layer1中插入2个子层。按F11调出layers浮动窗口,看看是不是与下图相同。4.选中layer2按Ctrl+F3调出图层属性编辑器,clip项的L和T填0,R填228,B填119。先填上再来解释,Clip它控制着你滚动板的显示区域,L,T,R,B分别是left,top,right,bottom的缩写,R,B这两个参数你就填该层的宽与高,当然你也可以改,根据后来显示的效果。如下图:5.现在该让图层layer3动起来了,怎样动?用Timeline来搞定,按Ctul+F9调出Timeline浮动面板。用鼠标拖layer3到时间轨道来。6.本例中图层是从下往上滚动,在第一帧处把图层layer3拖到layer2下端的边缘。再在最后一帧处,把图层拖到layer2的上端边缘,就这样做了两个关键帧,你可以拖动时间轴中的红色播放块,看图层layer3是不是运动的。7.由于系统默认的动画长度为30帧,播放速度是15帧每秒,这样的参数显然不适合滚动板,移动的太快了,在本例中,我把动画长度延长了,并把帧的播放速度该为2Fps,如下图。到现在为止滚动板已基本做完,有些参数你一定要耐心多设几遍,来达到最佳效果。8.现在该让此图层可以用鼠标拖动,在第一帧Behaviors轨道处双击鼠标,会出现一个大家熟悉的Behaviors窗口,点击 选Drag layer项即可。完工了,你可以按F12预览。本站的此教程已全部写完, 现已打包提供下载,如果你有什么更好的效果到我主页留言,请给我来信,让我学习学习。 最后我要给你出一道题:如何用DW做动态的下拉菜单?不许用插件。

Dreamweaver MX 打造我们的留言本一
大家好,我们又见面了。:)在前面几章里我们讲述了如何利用DW MX的服务器行为来操作数据库和生成动态页面,但是不是觉得有点乱,不怎么好理解呢?是的,前面我们讲的都是单个的服务器行为,好像都没什么联系一样。在这一章里呢,我们将学习如果灵活的应用DW MX的服务器行为--打造我们的留言本!(没错,就是留言本,将用到绝大部分的服务器行为,而且不用书写一行代码。)先做做准备工作,新建几个页面,分别取名为:index.asp:留言本首页,用于显示留言等。new.asp:发布新的留言。rep.asp:用于站长回复留言的页面。edit.asp:对一些不健康的留言内容进行编辑的页面。del.asp:同上,不过方法更狠,直接删除。:)login.asp:上面所说的回复,编辑,删除等操作都应只有站长才有权力,站长通过这个页面来登陆管理留言本。sorry.asp:登陆不正确的时候所返回的页面。如图(7-1)所示。 7-1 数据库方面我们需要用到两张表,如图(7-2)所示。其中表admin用于存放超级用户的姓名及密码,表f_bbs里存放的发贴信息,在后面我们会详细讲解。7-2 在表admin里新建两个字段,名为f_name和f_passWord,数据类型分别设为文本,如图(7-3)所示。7-3 表b_bbs就有点麻烦了,不过不用怕,让我们一步步来,先看图(7-4)。7-4

Dreamweaver MX Ultradev探索5-1
Dreamweaver MX Ultradev探索(5)删除数据库中的记录 继续我们的Dreamweaver MX之旅,在上一章里我们学习了如何使用DW MX自带的服务器行为更新数据库里的记录,大家应当还应记忆犹新吧。它强大的服务器行为可以在我们不用书写一行代码的情况下对数据库里的数据库进行操作,比如说前面提到的插入,更新,删除等。在这一章里,我们将学习如果用DW MX对数据库里的记录进行删除。 先说说它的基本概念吧。:) WEB应用中可能包含允许用户通过浏览器来删除数据库记录的页面,通常是先在页面上显示要删除的记录,然后通过用户对数据库的操作来删除不必要的记录。在DW MX里自带了一个Delete Record(删除记录)服务器行为,来对数据库的删除进行操作。其实和上一章里我们学习的更新数据库操作大同小异,先通过浏览数据,选择要删除的数据,然后进行相应的删除页页,确认删除。具体步骤在这里也不一一详述,请参见上一见。 <1> 准备工作,在上一章里我们讲述了如何利用跳转到细节页连接(Go To Detail Page)服务器行为跳转到相关的数据库记录字段。在这里也不例外,最终显示效果如图(5-1)和(5-2)所示。5-1 5-2 上面制作的详细方面在这里也不一一详述,具体请参见第四章。:) <2> 好,前期工作已准备完毕,这次我们的主角是Delete Record(删除记录)的服务器行为。它的功能也很简单,看名字就知道它就是专门用来删除记录集的。OK,建立我们的子页面,接收第一个页面传过来的值,显示相对应的数据库记录。这些在第四章里我们也有讲,最终显示效果如图(5-3)和(5-4)所示。记得要把表格放进表单里,并对里面的文本框进行命名。5-3 5-4 <3> Delete Record(删除记录)的详细介绍。Application-->Server Behaviors-->Delete Record,如图(5-5)所示。5-5 点击出现如图(5-6)所示的对话框。不难发现它和我们前一章所讲的更新数据库内容的服务器行为非常相似。connection:可从这个下拉列表中选择要使用的数据库连接,如果没有,可以单击后面的Define重定义一个数据库连接。Delete From Table:在这个下拉列表中可以选择要删除数据库里哪个表的记录。Select Record From:在这里选择要使用的记录集名称。Unique Key Column:选中要删除记录集所在表的关键字段,如果关键字段内容是数字,则需选中右方Numeric复选框,一般我们在这里用它默认的就行了。Delete By Submitting:在这个下拉列表中,选择递交删除操作的表单名称。因为我们页面上只一个表单,且未对它进行命名,所以它会自动选择form1,如果对表单名进行了更改或有多个表单,则要选择相应的表单。After Deleting, Go To:完成此删除操作后跳转到哪个页面,在这里我们输入delok.asp。(不要忘记建立这个页面哦!)5-6 完成此操作后页面显示的效果如图(5-7)所示,应用了服务器行为的地方会被不同的颜色标明。5-7 <4> 最终测试! 先让我们来看看数据库里的记录吧,如图(5-8)所示。5-8 主页面的示例效果图(5-9)。5-9 在这里我们选择删除第一条记录,点击ID为1的记录上的删除,则会跳转到删除的子页面,显示效果如图(5-10)所示。5-10 提交后就会跳转到我们刚才在上面定义的delok.asp页面中,再看看数据库里的记录吧,如图(5-11)所示。5-11 呵。。。大家也应当看到了,记录已被删除。

DreamweaverMX Ultradev探索4-2
DreamweaverMX Ultradev探索(4-2)修改数据库中的记录 <4> 嗯,这是不错了,那我怎么知道这里要显示哪一条记录呢?和用户点击的对不号怎么办?不用急,DW MX早就给我们想好了一切了,LOOK~!就是Move To Specific Record(移动到特定记录)!Application-->Server Behaviors-->Recordset Paging-->Move To Specific Record,同样,这也是DW MX自带的一个服务器行为。如图(4-5)所示。 点击后出现图(4-6)所示对话框。Move To Specific Record的作用是移动当前记录集中的记录指针到适合的位置,具体位置由URL传递过来的参数决定。好像很难理解的样子,其实并没有这怕可怕,且听我细细道来。前面我们运用了跳转到细节页的服务器行为传递了一个URL参数到子页面来,所以在这里我们就要接收这个参数,然后根据这条参数,找出数据库里对应的记录,这样才能显示正确的数据库内容在页面上,这样就不会出现记录对不上号的情况了。Move To Record In:选择当前使用的记录集。Where Column:选择包含URL参数的字段。Matches URL parameter:所传递过来参数名,记得要和前面定义的相同哦。4-6 <5> 前面我们提到子页面执行了两个不同的操作,第一个就是显示数据,上面我们所做的就是为显示正确数据做准备。接下来就要把数据库中的字段绑定到相应文本框中,就如第二章所述,拖拖鼠标就行了,就这么简单。最终图如(4-7)所示。4-7 <6> 好,就差最后一步了,加油!更新数据库里的内容。还是我们的老朋友Application-->Server Behaviors--> Updata Record。如图(4-8)所示。同理可得,这个服务器行为也是DW MX自带的,可见其之强大。:)4-8 点击后出现一对话框,本章的精华就在这里了,如图(4-9)所示。Connection:在这个下拉列表中选择指定要更新的数据库,如果没有指定的连接,可单击Define按钮来定义一个。Table To Update:在这里选择要更新的数据库表的名称,在这里我们要更新“用户表”中的记录,所以也就选择“用户表”。Uniqun Key Column:唯一关键列,选择关键列(通常是记录的ID字段),识别在数据库表单上的记录。如果值是数字,请勾选Numeric选项。After Updating,Go to:数据更新成功后所跳转的页面,这里我们定义它到editok.asp(记得要建立这个页面哦)。Get Values From:这里选择你页面上显示记录集的表单名,我们用的是默认值Form1.Form Elements:和插入记录集的几乎一样,定义表单里的文本框提交数据所对应的数据库字段。Column:提交的数据类型,和插入记录集的一样,一般用默认就行了。这里我们使用文本型。4-9 完成后的页面显示的就如图(4-10)所示,运用了服务器行为的地方会被不同的颜色标明。4-10 唬~~~~到此为止大功告成,累死我了。:)来,测试一下!这是我们原来数据库中的内容!4-11这是我们主页面显示的效果,注意到那个“编辑”了吗?在这里我点一下ID为2的连接。4-12 结果正如我们所料的那样,页面显示的是ID为2的记录,注意两张图的对比,在这里我把邮箱改一下。4-13再来打开我们现在的数据库文件,看到了吗?邮箱的地址已改了哦。4-14 下一章,我们将讲述如何删掉数据库里的一条记录,敬请关注。Dreamweaver MX,让我们世界更美丽。

DreamweaverMX Ultradev探索4-1
Dreamweaver MX Ultradev探索(4)修改数据库中的记录 在上一章里我们讲了如何向数据库里添加新的内容。但不知大家注意到这样一种情况没有,如果我一条数据库记录在提交后才发现在出错了呢?怎么办?当然就要修改。这次修改我们可是通过WEB来修改数据库里的内容。听起来好像也不是太容易。没关系,通过前面几章的介绍,大家应当发现,在DW MX里调用数据库非常的简单,只要你点几下鼠标就行了。呵。。。这次更新数据库的内容也一样,非常之简单,let's go!~~! 好,让我们大家来理解一下数据库内容更新的基本概念吧。先打个比方,如5D论坛里的用户资料更新用到的就是数据库内容更新。这类页面通常是主页面(前页面)--子页页(后一页面),主页面让用户选择记录更新(5D论坛里的个人信息便是让用户选择记录更新),然后把一个参数传递到子页面,同时子页面执行了两种不同的操作。首先,它显示已存在的数据,这样能被用户修改,然后,它更新修改了的数据库内容。 <1> 首先,我们建立记录集,就如同第二章所讲的那样,再运用重复域行为建立多行记录,在这里我就不复述这些步骤了。实际效果图如(4.1)所示。4-1 <2> 大家注意到上面那个“编辑”了吗?这就是我们第一步的主角--跳转到细节页连接(Go To Detail Page)。前面提到在主页面把一个参数提交到子页面。我们这里这个“编辑”便是起这个作用,当点击它的时候便会传递一个参数到下一页。我们先用鼠标选定“编辑”这两个字,再Application-->Server Behaviors-->Go To Detail Page,这也是DW MX自带的一个服务器行为,如图(4-2)所示。4-2 点击鼠标后会出现一个对话界面,如图(4-3)所示。Link:你可以在这个下拉列表中选择这个服务器行为要运用在哪个连接上,如果你在文档中选择了动态内容,则会自动选择该内容。Detail Page:在这个文本框里输入详细页所对应ASP页面的URL地址,也可以单击Browser按钮来选择。这里我们输入edit.asp。Pass URL Parameter:这个文本框里输入要通过URL传递到细节页中的参数名,记得可要输个好记一点的呀,在后面我们还要用到哦。Recordset:选择通过URL传递参数所属的记录集。意为从哪个记录集里传递参出去呢?这里选择刚才我们建立的名为testmx的记录集。Column:选择通过URL传递参数所属的记录集中的字段名称,即设置URL传递参数的值的来源。在这里我们选择ID,你也可以选择别的,但在后面记得要改成想对的。URL Parameters:表明将主页面中的表单值作为URL参数传递到子页面。在我们这个主页面上我们并没有运用到表单,所以可以不选。Form Parameters:表明将主页面中的表单值以URL参数的方式传递到子页面。在子页面上可以可以通过request.form读取这里传递过来的参数。同上,并没表单,所以不选。(注:request.form为ASP里一基本的内建对像,详细方法请参见相关资料。) 当单击OK按钮后,原先我们所选择的“编辑”将变成一个包含动态内容的超文本连接了。4-3 <3> 到此为止,我们主页面的参数传递的准备工作已完成,剩下的呢?自然也是本章的重头戏--更新数据库内容。新建一页面,定义为ASP,脚本为VBSscript,保存为edit.asp,即我们在上面所输入的,可不要输错了哦,要不又会出错的。接下来的事就是建立记录集,同主页面,然后建立表单,以方便用户输入更新记录,具体显示如图(4-4)所示。同第三章所述,同样要记得设置表单里文本框的名称和数据库里的一致。4-4

DreamweaverMX Ultradev探索3-2
Dreamweaver MX Ultradev探索(3)向数据库中添加记录 <4> 我们的重头戏来了,这里才是真正感受到DW MX强大的时候,您可以不书写一行代码就可以实现很多看起来很难的效果。Application--->Server Behaviors---> Insert Record,如图(3-7)所示。3-7 DW MX自带了很多实用的服务器行为,像数据的插入,更新,删除等等,这里我们暂时办介绍数据的插入,其它行为我们会在以后讲到。点击它,出现一个插入数据的对话框,如图(3-8)所示。这个对话框允许使用可在页面上利用的表单元素建立自己的数据库。下面各个域需要填写。Connection:可在Connection(连接)数据库下拉列表框中选择指定的数据库连接,如果没有指定连接,可单击Define(定义)按钮定义数据库连接。在这里我们选择我们刚才在上面指定好的数据库testmx。 Insert Into Table:这将是数据库中所有表的一个下拉列表。我们在这里选择刚才我们建立的数据表“用户表”。 After Inserting, Go To:这充许在完成插入后把用户重定向到另一个页面,即数据成功保存进数据库后显示给用户看的页面,告诉用户数据已插入进数据库里。在这里我们定义为insertok.asp。注:不要忘了建立这个页面呀,如果找不到页面就会报错哦! Get Values From:把这个域设置为form1。它应该是页面上唯一的表单;但如果有多个表单,则交有可能利用表单的一个下拉列表。 Form Elements:文本域应该全部被列在这里。必须一个一个地设置所有这此条目,包括选取表单元素,选择适应的数据列和文本框下面适当的数据类型。用户名将插入到“用户名”列中,密码将插入到“密码”列中,邮箱将插入到“邮箱”列中。刚才我们在上面定义了文本框的名字和数据库的字段名一置,所以DW MX会自动让它们对应,我们在以后应当尽量让表单名和数据库字段名一置,这是个好习惯。Column和Submit As:所在文本框提交时的数据类型,一般我们不用选择,DW MX会自动作出选择。 3-8 <5> 完成这些步骤后,可单击OK按钮,Server Behavior交被应用到这个页面上。Server Behavior将自动把所有的代码写到页上,完成数据库的插入。如图(3-9)所示。DW MX会用不同的颜色来标明这里运用了一个服务器行为。3-9 最后,测试一下吧!如图(3-10)所示。3-10 <6> 提交,再打开刚才我们设计的数据库,如图(3-11)所示,我们刚才提交的内容,乖乖的在里面躺着呢,哈。。。Dreamweaver MX,让我们世界更美丽。3-11 在下一章里,我们将讲如何更新数据库里的数据,DW MX还有更多激动人心的功能等着我们去用呢

DreamweaverMX Ultradev探索3-1
Dreamweaver MX Ultradev探索(3)向数据库中添加记录 好,接上一讲,前一章讲到动态显示数据库内容,相信大家现在的心情已是很激动了吧,呵。。。是不是心里早就在想,应当可以自己在网页上也能手工添加数据呢?当然没问题, DW MX已为我们准备好一切了。一般来说,要通过ASP页面向数据库中添加记录,需要提供用户输入数据的界面,这可以通过创建包含表单和页面来实现。利用Dreamweaver MX的Insert Record(插入记录集)服务器行为,就可以向数据库里添加记录。 废话少说,新建一页面,如图(3-1)3-1 应当大家都会吧。 <1> 点击后你会发现,出现的页面和以前DW或UD很大的不现,如图(3-2)所示。DW MX在创建不同的动态网页方面显得非常方便,可以随意的选择自己想要的类型,而不用像以前一样还要选保存类型。在这里我们选择创建动态页面(Dynamic Page),选择VBScript作为页面的脚本语言。OK,保存为insert.asp。3-2 <2> 我们用Access新建一数据库,保存名为“用户表”,如图(3-3)所示。指定ID为主键,同时设置它的数据类型自动编号。3-3 大家注意到没有,在这里我把字段类型用了中文,要是以前在UD时代,是绝对不能出现中文的,但到了DW MX时代,我们终于可以用了,感动ing...照第二章的介绍,建立系统DSN,同时在DW MX里建好数据库连接,如图(3-4)所示.3-4 <3> 好,准备工作到这里终于完成了。前面提到要通过ASP页面向数据库中添加记录,需要提供用户输入数据的界面,即我们要在页面上建立表单,提供让用户输入的区域,这样我们才能把用户提交的数据保存进数据库中。设计如下界面,如图(3-5)所示。3-5 注意到上面的红色数字了吗?不要急,这里还有一点要注意,如图(3-6)所示。要指定这些文本框的名称,第一个“用户名”我把它后面的文本框指定为“用户名”,其它两项雷同,分别指定为“密码”,“邮箱”,只是要注意密码这一项的类型(Type)要指定为PassWord,这样用户在输入密码的时候看到只是一串*号了。注:以前在UD里给文本框命名不能用中文,但现在在DW MX里也可以用了。 3-6