《动态Web技术ppt课件(完整版).pptx》由会员分享,可在线阅读,更多相关《动态Web技术ppt课件(完整版).pptx(226页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1动态动态Web技术技术(PHP)25W1HWhy市场需求What动态Web技术基于Apache+MySQL+PHP架构的动态网站开发Where/WhenWho/Whom我你How3WhyLinux+Apache+Mysql+Perl/PHP/Python,一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。在Windows平
2、台上进行AMP的开发,可以很容易地转移到Linux平台上4What动态Web技术基于Apache+MySQL+PHP架构的动态网站开发5Where/When解决在哪里实现“网上选课”这一系统的问题。第一,解决系统开发环境的问题,什么系统平台,什么架构;第二,工作人员的软件开发工作环境。就教学而言,需要在一个多媒体的计算机网络实训室,系统可以是Linux平台,也可以是Windows 平台,同时安装了Apache+MySQL+PHP组件。解决“网上选课”系统的软件生命周期的问题。6Who/Whom我你一起学习,共同进步7How通过若干模块的实现过程,学习有关PHP编程的技术,包括语法、数据类型、函
3、数、流程控制等基本概念,掌握实现具有实际功能的网络模块开发的过程,掌握从实际案例(工作情境)转移到相关知识、技能的学习(学习情境)的能力,为今后学习新知识和新技能打下良好的基础。在此基础上,由学生进行一个实际案例的开发,把知识和技能进行一次整合。教学过程中注重学生素质方面的培养:团结协作、具有良好的沟通能力,不断追求知识的自学能力;自主学习的能力。8课程性质和任务课程性质和任务 课程性质:课程性质:本课程是为软件工程、信息管理等相关专业学生开设的一门必修课程。课程任务:课程任务:学习本课程后能够根据实际需要开发基于Apache+MySQL+PHP的动态网站。前导课程:前导课程:数据库基础与应用
4、、程序设计基础后续课程:后续课程:毕业设计9动态动态Web技术技术动态Web技术是属于互联网应用工程的范畴,是一个新的领域:把它形容成“先知后觉(pre-paradigmatic)”的,是因为跟它相关的理论一直还在发展着,它的目标是检验在线服务的结构:基于网站/技术 还有他们的安全,弹性,.10互联网应用工程互联网应用工程互联网应用工程产生的机理:面向对象的编程思想object-oriented programming 人机工程(构造有效的人机对话逻辑)关系型数据库(数据模型和数据存储)互联网的技术 (把所有的技术绑定在一起)11技术纵览技术纵览重要的技术:互联网技术 e.g.HTTP,URL
5、s,DOM,browsers,JavaScript,.关系数据库 e.g.MS SQL,Oracle/PostgreSQL,MySQL,.互联网服务器 e.g.AOLServer+Tcl,Apache+MySQL+PHP/Perl,Tomcat+Java,.12Web 术语术语构成Web的各个组成部分:HTML Hypertext Markup Language(based on SGML,markup embedded in content)HTTP Hypertext Transfer Protocol(very important aspect:stateless protocol)UR
6、L Universal/Uniform Resource Locator(e.g.http:/host/document?name=value&.)DOM Document Object Model(browsers internal representation of rendered pages)(provides basis for programmed control of browser)13 Web 术语术语Web/DB 存取机构:DHTML Dynamic HTML(client-side scripts)CGI Common Gateway Interface Servlet
7、Program executed in Server(all server-side scripts e.g.Java,PHP,ASP,.)Applet Program executed in Browser JDBC Java Database Connectivity 14 Web 术语术语Languages/Systems:SQL relational DB query language(for extracting raw information from DB)Java portable,o-o programming language(for programming GUIs,ha
8、s DB connectivity)PHP dynamic Web-content scripting language(server scripting,has DB connectivity)Perl text-manipulation scripting language(CGI/server scripting,has DB connectivity)JavaScript dynamic Web-content scripting language(for programmed control of browser behavior)15通过通过Web访问数据库访问数据库传统的访问数据
9、库的步骤:1.浏览器提供一个表 2.用户向这个表输入一些内容 3.用户提交这个表 4.这个动作调用脚本语句,传递输入的内容 5.脚本语句向数据库发送查询,并且收集相应的响应6.脚本根据查询的结果产生相应的HTML7.结果显示在浏览器的窗口Examples:web search engines,commercial web sites 16通过通过Web访问数据库访问数据库用户界面可能把有关访问数据库的细节给藏起来了,访问数据库可能是:多个数据库的一个集合从多个分布式网站的多个结果的集成基于多个不同的DBMSs i.e.the Web provides one means to achieve
10、DB integration.(Writing Java applications using JDBC on multiple DBs is another means.)17Web 体系结构体系结构18Web-DB 体系结构体系结构三个主要的模块:browser,server,DBMS 19Web 浏览器浏览器Web浏览器有两个主要的功能:向服务器发送请求(如:URLs,一个地址是包含若干参数的)获取反馈结果并且试图显示它们一般说来这种反馈结果往往是HTML的形式.Web浏览器内部,它所读取的是对象的一个继承(DOM=Document Object Model).浏览器的脚本语言(e.g.
11、JavaScript,VBScript,JScript)允许处理一些文档对象.20 Web 浏览器浏览器Web 浏览器的优点浏览器的优点:几乎每一个使用过电脑的人都使用过浏览器浏览器提供足够的接口(人机对话)的元素Web 浏览器的缺点浏览器的缺点:不同的浏览器在处理的时候有小小的不同不能够提供一个强有力的、标准的内部编程模型21DBMS关系型数据库管理系统(RDBMS)是 一个处理海量数据软件具有处理数据的高级能力(relational model,SQL)提供非常有效的存取功能(disk/memory management)能够并发地支持不同的用户(权限,保护)能购进行大量的并发的操作(事务
12、交易)对数据保持高度的可靠性和可操作性(备份,回复)因此采用RDBMSs作为我们网站的后台支持是目前最好的选择。22Web ServersWeb servers 的功能如下:监听端口,例如8080,接收请求调用相应的服务区处理URL 把有关的信息返还给请求方缓存一些Web页面 调用外部(在服务器主机端)程序(CGI scripts)解释和执行脚本语句(e.g.Tcl,PHP,Java,Perl)23Web 地址地址Web地址为URL.URL=Universal Resource Locator 标准的URL是:protocol:/host :port /path/filename?argume
13、nts Examples:http:/www.cse.unsw.edu.au/school/people/info/jas.html http:/localhost:8080/university/q4.phtml?DeptId=2 ftp:/ftp.cse.unsw.edu.au/home/jas/public_ftp/papers/bncod98.ps.gz 24构成构成URL的元素的元素protocol-defines mechanism for transferring document-examples:httphttp,ftpftp,gophergopher,.host-a sta
14、ndard Internet host name(or IP address)-generally an alias,prefixed with www.port-port that Web server listens on(default:1080)-only needed if a non-standard port is used path-a standard Unix(or MS)directory path-defined relative to DocumentRoot of Web sever-or can use special mappings e.g.user argu
15、ments-list of name=value pairs-made available to server script or CGI script 25URLs 当作方法使用当作方法使用URLs 被设定成如下的方式来使用 把他们放在 把他们放在 把他们分配给DOM location objects 参数可以和URL一起使用,例如:在URL后边附加?name=value.从输入的元素中收集这些参数(action style only)URLs 可以被调用点击链接(href style)点按一个提交的按钮(form style)执行一些JavaScript(location style)一个
16、程序发送一个URL给server 26 URLs 当作方法使用当作方法使用利用这些观点,我们可以把Web Services简单的定义成如下的形式.这些services.被一个URL调用,但不一定非得从一个Web Broswer来调用 接收参数(either in URL(GET)or on stdin(POST)从它们的参数和相关数据库进行数据处理返回它们的结果,通常是HTML的形式 27Browser-Server-DB 连接连接Three choices:connect DB to browser OR connect DB to server OR connect DB to progr
17、am invoked by server 28Server-DB Connection(type 1)Close coupling between DBMS and Web server(e.g.OCI).Examples:Oracle Web Server,AOLserver+ACS/Oracle ORACLE调用接口(Oracle Call Interface简称OCI)29.Server-DB Connection(type 1)优点:Web server可以直接访问到数据库 数据传输的表现非常好能够处理复杂的数据事务缺点:由服务器决定这个数据库的类型Web server和DBMS必须在
18、一个host上运行应用于:当需要非常有效的处理复杂数据事务的时候30Server-DB Connection(type 2)Loose coupling between DBMS and Web server(e.g.TCP/IP).Examples:Apache+PHP/Perl,Servlets+JDBC,ColdFusion TCP/IP31.Server-DB Connection(type 2)优点:可以同时访问各式各样的DBMSs数据传输和处理速度还可以可以在数据处理的过程上进行控制缺点:当修改的时候,同时需要修改 Web server(maybe and minor)应用于:当一
19、些不同的数据库系统需要联合起来的时候不需要很快速的处理数据的时候 32CGI-DB ConnectionWeb server invokes application to access database.Examples:most early WebDB systems 33.CGI-DB Connection优点:弹性(适应性)几乎可以和任何Web servers和DBMSs一起工作缺点:调用访问数据库程序的时候有开销(时间和相应速度)完全地与 DB 相联系应用于:老式的 Web server和old DBMS 把遗留的系统集中起来 34Browser-DB ConnectionBrowse
20、r uses Java applet to interact with database.Examples:JDBC,ObjectStore 35.Browser-DB Connection优点:(可能)一直于 DBMS 相连接完全地脱离 Web server;用户直接于 DB 发生作用内部处理非常好(但 GUI 必须要编程)缺点:与Applet发生作用,并非 HTML (通用的interface就被改变了)应用起来不是很好(控制方面,安全方面)对于用户需要较高级的要求:懂得 DBMS如何操作36Apache+MySQL+PHP的安装三个软件单独安装,再进行配置利用集成软件三个一起安装。37配
21、置问题端口设定(Apache服务器监听的端口是8080)MySQL的密码设定(123456)PHP的缓冲区的设定(把buffer设定为On)动态动态Web技术技术(PHP)网站如何动态起来?动态网站的本质是什么?核心技术手段是什么?LAMP架构是什么?PHP访问数据库的方式是怎样的?网上选课系统分析 项目引入与需求分析 功能划分 页面(文件)流图 数据库和表设计 网上选课系统描述请描述你目前所使用的网上选课系统功能操作步骤操作页面涉及到的数据系统分析的概念是软件开发过程中的一个步骤是在充分认识原信息系统的基础上,通过问题识别、可行性分析、详细调查、系统化分析,最终完成新系统的逻辑方案设计,或称
22、逻辑模型设计。逻辑方案不同于物理方案,前者解决“做什么”的问题,是系统分析的任务;后者解决“怎么做”的问题,是系统设计的任务。刚才所描述的系统系统分析的意义弄清楚客户的需要从现实世界(现有系统)到目标系统的必由之路无序-有序如何实现客户的合理需要就目前的技术手段如何去实现相关功能盲目-条理网上选课的功能 学生他们通过客户端浏览器浏览可选课程的信息,并根据自己的实际情况,按照一定意愿次序选课教学秘书他们可以通过客户端浏览器进行一些系统管理和维护的工作,例如对课程信息进行编辑,对选课的信息进行统计等。原信息系统-系统设计系统结构功能梳理数据分析系统结构服务器学生教学秘书B/S结构上的WEB服务客户
23、端客户端系统结构进行网站开发,在做系统需求分析时,除了完成对功能的分析之外,还必须按照学校的实际情况例如学校的规模来测算进行网上选课的并发规模。网上选课往往是发生在一个比较集中的时段,这个特点就必须要求服务器的承载能力比较强,所以必须考虑硬件和网络设施的指标和系统软件以及WEB架构。系统结构对于硬件和网络设施,目前由于性价比都比较合适,硬件供应商的服务和水平也都比较专业。而服务器系统软件以及WEB架构则需要进行商榷了。功能梳理教学秘书可以通过客户端浏览器登陆到系统,对课程进行管理,例如添加课程、修改课程、删除课程、浏览课程、查询课程和查看课程的详细信息等学生则可以通过客户端浏览器登陆到系统,浏
24、览课程、查询课程和查看课程的详细信息,并按意愿次序预选自己想要选修的课程,也可查询显示自己已经预选的课程。功能梳理教务部门希望该系统可以让学生按照意愿次序预选5门课程,然后系统按照学生意愿次序进行课程选定,如果第1个意愿没有被满足,则进行第2个意愿的匹配,依此类推。如果进行到第5个意愿还没有匹配到,则该生需要重新选择。功能梳理教学秘书学生图2-2 功能模块图首页添加课程修改课程删除课程课程详细信息查询课程浏览可选课程浏览已选课程课程详细信息选择课程删除已选课程页面(文件)流图 网站功能的实现往往必须借助网页来实现实现客户向服务器提交的请求把服务器执行的结果以网页的形式显现在客户面前。页面的规划
25、非常重要进行网站开发,在系统分析阶段,除了使用功能模块图来描述系统的功能模块划分之外,还使用页面流图描述各个页面之间的关系。方便程序员按照系统和模块设计去实现各个模块的代码。例:登陆模块学生用户用户名:00000001密码:00000001教学秘书用户用户名:00000001密码:ken7411其他用户用户名和密码自己拟定观察运行的情况,根据自己的知识,确定由哪些页面文件(程序)构成登陆模块的页面流图 检查不通过首页index.php用户检查ChkLogin.php教学秘书页面teacher.php学生页面student.phpFORM_POST($username/$userpwd/$rol
26、e)SESSION($teacher/$TeaNo/$DepartNo)SESSION($student/$StuNo/$ClassNo)登陆模块的页面(文件)流图传递参数方法及对应形参传递参数方法及对应形参传递参数方法及对应形参登陆模块的页面流图 该页面流程告诉程序员,登陆模块所需要4个文件(页面)首页“index.php”,这个页面内应该包含一个供用户填写用户名和密码的表单用户检查“ChkLogin.php”是首页的表单提交的对象,这个文件是用来检查用户输入的用户名和密码的合法性。如果合法,就引导到对应的教学秘书页面“teacher.php”或学生页面“student.php”如果不合法,
27、就重新引导到首页“index.php”。页面(文件)流图的意义由于网站是由若干网页加上链接或调用构成的,页面(文件)流图规定了一个功能模块被几个页面去执行和实现,页面(文件)流图是进行网站设计的非常有利的工具,非常直观地告诉程序员各个模块的组成和实现这些模块所需要的文件组成以及相应的链接(跳转)关系。数据库和表设计 根据前面的需求分析,如果要实现网上选课,则存在多少个实体和联系?E-R图如何绘制?需要多少个表来保存各方面的信息?表及其关系 Teacher表TeaNoDepartNoTeaNamePwdDepartment表DepartNoDepartNameClass表ClassNoDepar
28、tNoClassNameStudent表StuNoClassNoStuNamePwdStuCour表StuNoCouNoWillOrderStateRandomNumCourser表CouNoCouNameKindCreditTeacherDepartNoSchoolTimeLimitNumWillNumChooseNum各个表间的关系表及其关系 班级表Class和系部表Department之间通过DepartNo(系部编号)进行连接,表示班级的系部编号来源于系部表。教学秘书表Teacher和系部表Department之间通过DepartNo(系部编号)进行连接,表示教学秘书的系部编号来源于系
29、部表。课程表Course和系部表Department之间通过DepartNo(系部编号)进行连接,表示课程的系部编号来源于系部表。学生表Student与班级表Class之间通过ClassNo(班级编号)进行连接,表示学生的班级编号来源于班级表。StuCou表与Student表通过StuNo(学号)进行连接,StuCou表与Course表通过CouNo(课程编号)进行连接,分别表示选课数据中的学号来源于学生表,课程编号来源于课程表。表的内容 表的内容 表的内容表的内容表的内容表的内容实训2详见实训项目指引首页的设计与实现 首页的设计 设计首页的第一步是设计版面布局开始。版面指的是浏览器看到的完整
30、的一个页面(可以包含框架和层)。因为每个人的显示器分辨率不同,所以同一个页面的大小可能出现640*480像素,800*600像素,1024*768像素等不同尺寸。布局,就是以最适合浏览的方式将图片和文字排放在页面的不同位置。“最适合”是一个不确定的形容词,什么才是最适合的呢?不可能给出一个完整的正确的答案。在进行站点整体的创意设计时,版面布局也是一个创意的问题,但要比站点整体的创意容易,有规律的多。草案 新建页面就像一张白纸,没有任何表格,框架和约定俗成的东西,设计者可以尽可能的根据网站需求发挥自己的想象力,将所想到的“景象”画上去。草案 粗略布局 定案 定案 在布局过程中,遵循的原则有1正常
31、平衡2异常平衡3对比4凝视5空白6尽量用图片解说常用的版面布局形式 1“T”结构布局2“口”型布局3“三”型布局4对称对比布局5POP布局网上选课首页设计案例 HTMLHTML文件是被网络浏览器读取产生网页的文件,HTML文件是网站呈现给客户端用户最终的文档。从本质上来说,Web只是一个由HTML文件及一系列传输协议所组成的集合。这些HTML文件存储在分布于世界各地的服务器端,或者由服务器的相应的程序把若干数据生成HTML文件,而传输协议能把这些文件从一台计算机传输到另一台计算机 CSS文档以及与HTML文档的关系 HTML文件CSS文件形容和修饰页面内的格式CSS修 饰语 句HTML语句使用
32、CSS的两种形式外连CSS文件的方式内嵌CSS语句的方式网上选课的首页代码编写 首页index.php文件的源代码 表单的编写 表单,在网页中的作用不可小视,主要负责数据采集的功能。通过表单,服务器从客户端采集到相应的数据,并根据表单的指引,调用相应的文件去处理这些数据,并根据需要把处理结果传递给客户端参见index.php中的表单代码 表单的组成 1表单标签这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。2表单域包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。3表单按钮包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的C
33、GI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。表单标签form/form form action=URL method=GET|POST enctype=MIME target=.表单域 文本框多行文本框密码框隐藏域复选框单选框下拉选择框 文本框文本框是一种让访问者自己输入内容的表单对象,通常被用来填写单个字或者简短的回答,如姓名、地址等。代码格式:input type=text name=.size=.maxlength=.value=.属性解释:type=“text”定义单行文本输入框;name属性定义文本框的名称,要保证数据的准确采集,必须定义一个独一无二的名
34、称;size属性定义文本框的宽度,单位是单个字符宽度;maxlength属性定义最多输入的字符数。value属性定义文本框的初始值 样例1代码 用户名 这段代码是在“用户名”后面跟着一个文本框,这个文本框的名字是username,显示的长度是10个字符。那么客户在这个文本框中输入的信息就被当作字符串赋给变量username。样例2代码 密码这段代码是在“密码”后面跟着一个文本框,这个文本框的名字是userpwd,显示的长度是12个字符。那么客户在这个文本框中输入的信息就被当作字符串赋给变量userpwd。与上面那个文本框不同的是,由于该文本框的类型被定义成“password”,因此用户在向此文
35、本框输入内容的时候,将不显示具体的内容,而被“*”或者其他的密码字符所代替。样例3代码 学生 教师这段代码则显示出一个下拉菜单,菜单的名字是role,显示的值是学生,如果拉下来,则可以选择教师。所以,在客户端,选中学生,则变量role的值就是“学生”;选中教师,则变量role的值就是“教师”。表单按钮 当前的例子显示给客户两个按钮,一个是“确定”,另一个是“重置”。代码如下:常见HTML代码实训参见第三章实训访问者计数器访问者计数器各大门户网站,往往把该网站访问者计数器放在首页的某个位置,一来作为该网站的业绩,展示人气的一项证据;同时也成为吸引客户和广告商的有利数据。当然作为选课系统,则用来衡
36、量用户访问的次数,为今后的系统维护和发展提供一定的数据支持。样例访问者计数器的工作流程 查找定制文件请求回复客户端计数器处理组件图4-1 访问者计数器的工作流程连接请求服务器php.exe传递给执行文件写入次数读取次数传递执行结果记录次数组件访问者计数器的工作流程 通常客户端要连接到网站时,一定会先送出一个请求信息,服务器收到这个信息时,就会将网页内容返回给用户,因此我们可以利用这个必经的过程来设计和实现访问者计数器。当服务器收到用户端传送来的请求时,访问者计数器模块便将次数一次一次累加下来,这样我们就可以知道网站被要求送出几次内容。当然也就可以借此来计算出网站究竟已经被浏览过几次了。访问者计
37、数器的工作流程 详细的步骤描述如下:1、客户访问相应的页面,向服务器发送“连接请求”;2、服务器收到请求后,开始“查找定制文件”;3、“计数器处理组件”代码通过php.exe的解释执行,将保存在“记录次数组件”中的次数读取出来,并做加一处理,写回到“记录次数组件”中;4、相关php代码把当前的次数通过php.exe“传递执行结果”,嵌入到网页的HTML代码中,由服务器传送到客户端浏览器。实现思想 在服务器端,使用一个文件(例如counter.txt)来保存当前的计数,然后服务器被访问一次,就把这个计数+1,再把结果放回到该文件当中。当需要的时候就把该数字调出来,按照要求发送到客户端浏览器。因此
38、,记录次数的组件就是counter.txt文本文件。模块结构图 计数器模块HTML组件计数器处理组件记录次数组件图4-2 访问者计数器的模块结构图流程图 打开counter.txt文件从counter.txt文件中取数据,把值赋给$counter$counter+1$counter把$counter的值写回counter.txt文件中关闭counter.txt文件图4-3表示计数器处理组件的流程图代码实现与分析 在网站根目录创建一个文本文件counter.txt。建立一个计数器处理组件counter.php,编写代码如下:代码实现与分析 临时的HTML组件中temp.php查看一下计数器处理组
39、件运行的效果。访问者计数器-文字版访问者计数器范例-文字版您是第个访问者 随机显示课程信息 随机显示课程信息 随机地从数据库课程表中抽取数据进行显示,并显示对应的图片。随机显示课程信息的关键技术在“网上选课”的首页上,有一个随机显示课程信息的功能:当用户访问该网站的时候,网站代码可以从数据库中随机的选取某一个可供选择的课程的信息,包括课程编号、名称、类型、学分、教师、开课系部、上课时间和限定人数等信息,当然还包括该课程的图片。包括3个技术:随机技术;显示数据库信息;显示图片。其中“随机技术”必须解决随机地产生有效的结果;显示数据库信息则是依据随机技术,选取一条记录,通过PHP代码显示在客户端;
40、显示图片则要保证显示的图片和课程信息是一致的。课程信息的组成数据库课程表的信息组成 文件系统中的对应课程的图片 数据库课程表的信息组成课程表Course有9列:CouNo(课程编号)、CouName(课程名称)、Kind(课程类别)、Credit(学分)、Teacher(教师)、DepartNo(系部编号)、SchoolTime(上课时间)、LimitNum(限制选课人数)、WillNum(报名人数)、ChooseNum(被选中上该课程的人数)。课程编号(CouNo)是该表的主键,通过该主键,可以唯一的确定一个课程的信息。文件系统中的对应课程的图片系统还在“uploadpics”目录中保存了各
41、个课程的图片。为了方便实现与数据库课程表的一一对应,我们规定保存在这个目录中的图片,以课程编号为文件名,图片的类型同一用JPG文件。例如,课程编号为001的课程,那么该课程的图片被保存在“uploadpics”目录中,该图片文件是“001.jpg”。随机显示课程信息的工作流程 查找定制文件请求回复客户端随机处理组件图5-1 访问者计数器的工作流程连接请求服务器php.exe传递给执行文件查询语句查询结果传递执行结果数据库表Course文件系统课程图片实现思想与手段 随机手段 显示图片信息 显示文字信息 随机手段 本模块的核心就是产生一个有效的、随机的记录。那么如何产生这么一条记录呢?常规的思维
42、是产生一个随机数,这个随机数必须控制在课程编号所组成的集合之中。例如,课程编号从“001”至“020”,那么产生的随机数必须是从1至20的整数。这种算法可行吗?假如课程编号不连续,中间没有编号为“010”的课程,万一产生的随机数是10呢?所以这种算法不可行。随机手段换一种角度,把所有的课程信息的总数当做随机数的上界M,这样就比较容易控制:1、从数据库中提取所有课程信息,构成一个二维表;2、产生一个0M-1的随机整数r;3、把第r行的课程信息提取出来,展示给客户端。随机手段图5-2 随机手段提取所有课程信息随机函数数据库Course表所有课程信息第0行信息第M-1行信息第r行信息【例】数据库主机
43、位置是“localhost”,访问数据库使用的账号是“root”,访问数据库使用的秘密是“123456”,数据库的名称是“Xk”,使用PHP访问“Xk”的代码是:行号行号代代码码1$DB_HOST=localhost;/数据库主机位置2$DB_LOGIN=root;/访问数据库的使用账号3$DB_PASSWORD=123456;/访问数据库的使用密码4$DB_NAME=Xk;/数据库名称5$conn=mysql_connect($DB_HOST,$DB_LOGIN,$DB_PASSWORD);6mysql_select_db($DB_NAME);7mysql_query(SET NAMES U
44、TF8);【例】请重定义常用的数据库操作函数。行号行号代代码码1function db_query($sqlstr)2 return mysql_query($sqlstr);3function db_num_rows($res)4 return mysql_num_rows($res);5function db_fetch_array($res)6 return mysql_fetch_array($res);7function db_fetch_object($res)8 return mysql_fetch_object($res);9function db_data_seek($res
45、,$num)10 return mysql_data_seek($res,$num);【例】使用PHP代码,求表Course中共有多少条记录。行号行号代代码码1$SQLStr=SELECT COUNT(*)FROM Course;2$res=mysql_query($SQLStr);3$row=mysql_fetch_array($res);4$total=$row0;【例】使用PHP代码,提取Course表中所有的记录。考虑到今后要显示给用户开课系部的名称而不是系部编号,结果必须是表Course和表Department的连接。行号行号代代码码1$SQLStr=SELECT*FROM Cour
46、se,Department WHERE Course.DepartNo=Department.DepartNo;2$res=mysql_query($SQLStr);【例】使用PHP代码,产生一个018的随机整数。行号行号代代码码1srand(double)microtime()*1000000);2$num=rand(0,18);显示图片信息【例】假设通过第r行的课程信息,获取该课程的课程编号为“005”,则对应的课程图片就是“005.jpg”。在HTML中,图片的显示是引用的方式。在当前目录下,若要显示“uploadpics”目录中的“005.jpg”,则应该表示为:假设当前提取的课程信息
47、的值赋给了变量$row,要显示这个课程对应的图片,则应该表示为:img width=80 height=120 img src=./uploadpics/.jpg border=0$row是一个一维数组,我们需要的是第“CouNo”列的数据,所以表示为$rowCouNo。显示图片信息 显示文字信息【例】通过上面的方式提取了第r行的课程信息,则可以把对应信息放在HTML对应的位置上。上面的代码画出了一个2列8行的表格,$row是一个数组,需要显示内容的地方,使用就可以了。例如,在需要显示编号的地方,使用的语句。代码组装与分析 获取表Course的记录数-$total获取所有课程信息-$res产生
48、一个介于0和$total之间的随机数$num从$res中抓取第$num个记录并显示图5-3表示随机显示课程信息处理组件的流程图代码组装与分析 请根据本章节的内容,把随机显示课程信息的代码进行组装、调试。登陆模块登陆模块验证用户的一般方法登陆后系统如何保持该用户的登陆状态验证用户的一般方法提交表单表单中携带的用户名和密码条件查询结果指定页面用户名与密码验证手段用户名与密码验证手段按条件提取用户信息Teacher表或Student表符合查询条件的用户信息结果为空,则是非法用户结果不为空,则是合法用户验证用户的页面流图首页index.html用户检查ChkLogin.php教学秘书页面teacher
49、/index.html学生页面student/index.html验证用户的页面流图验证用户的页面流图首页index.html用户检查ChkLogin.phpusernameuserpwdrole$role决定查询哪个表;$username和$userpwd则为查询语句中的where条件SELECT*FROM Teacher WHERE TeaNo=$username 或SELECT*FROM Student WHERE StuNo=$username 密码验证模块程序流程图?代码编写index.htmlChklogin.php要有一个form,这个form将变量传给Chklogin.php课
50、程信息的显示 课程信息的显示分页列表显示 课程详细信息显示课程的信息组成 针对教学秘书和学生用户,希望通过列表的形式查看到相关课程的粗略信息,如课程编码、课程名称、课程类别、学分、教师和上课时间等,每页显示10门课程的信息,当课程门数超过10门的时候,通过翻页查看后面的课程信息;每门课程都是一个链接,链接到显示该课程的详细信息,例如还包含限制选课人数和课程图片等 显示课程信息模块用到的表的字段 数据库Xk中的课程表中都保存着需要显示的课程的CouNo(课程编码)、CouName(课程名称)、Kind(课程类别)、Credit(学分)、Teacher(教师)、DepartNo(系部编码)、Sch