admin 管理员组文章数量: 887840
2024年2月23日发(作者:down怎么读)
课章节:第一章 PHP入门
课时 4学时
教学目的:通过学习,学生可以了解PHP程序的工作流程,并可以编写、运行简单的PHP程序
教学重点:PHP程序工作流程以及PHP运行环境的安装、配置。
教学难点:PHP程序的工作流程在windows中配置Apache、PHP以及MySQL。解锁第一个PHP程序的工作流程。
教学内容:
1-1PHP 概况
1 . PHP 的优势
PHP 发展到今人,只备了很多优势:
( l )易学好用(2 )免费开源(3 )良好的可扩展性(4 )平台无关性(跨平台)( 5 )功能全面(6 )数据库支持(7 )面向对象编程
2 . PHP 的应用领域
教学PHP主要月于以下3 个应用领域。
( l )服务器端脚本程序(2 )命令行脚木程序(3 )桌面应用程序
使用PHP 编写服务器端脚木程序是PHP 最常用的应用领域,这也是木课程着重阐述实的内容。
施
3 . HTML 内嵌式的脚本语言
这是我的第一个PHP 程序:
过
程 设echo " hello world ! "> 计 注意:PHP代码通常以符号“ PHP 程序文件名中的扩展名通常使用“.php“ ,例如 1-2 PHP脚本程序工作流程 1. WEB 浏览器 WEB 浏览器(WEB Browser )也叫网页浏览器,简称浏览器。浏览器是用户最为常用的客户端程序,主要功能是显示HTML 网页内容,并让用户与这些网页内容产生 互动。常见的浏览器有微软的Internet Explorer(简称IE )浏览器、Mozilla的Firefox 浏览器等。 2 . HTML 简介 HTML 是网页的静态内容,这些静态内容由HTML 标记产生,WEB 浏览器识别这些HTML 标记并解释执行。例如WER 浏览器识别HTML 标记“ < br/ >”,将< br / >标记解析为一个换行。在PHP 程序开发过程中 , HTML 主要负责页面的互动、布局和美观。 3 . PHP 预处理器 PHP 预处理器(PHP Preprocessor)的功能是将PHP 程序中PHP代码解释为文本信息,这些文木信息中可以包含HTML 代码。 服务器 WEB服务器(WEB Server)也称为WWW(Word Wide Web)服务器,功能是解析HTTP 。当WEB 服务器接收到浏览器的一个HTTP 动态请求时.WEB服务器会调用与请求对应的程序,程序经PHP 预处理器解释执行后,WEB 服务器向浏览器返回HTTP 响应,该响应通常是一个HTML 页面.浏览器接收到该HTTP 响应后,将执行结果显示在浏览器或进行其他处理。 常见的WEB服务器有微软的Internet Information Server(IIS)服务器、IBM 的WebSphere 服务器、开源的Apache服务器等。其中Apache 具有免费、速度快且性能稳定等特点,它已成为目前最为流行的WEB 服务器。 5 .数据库服务器 数据库服务器(DataBase Server )是一套为应用程序提供数据管理服务的软件,这些服务包括数据管理服务(例如数据的添加、删除、修改、杳询)、事务管理服务、索引服务、高速缓存服务、查询优化服务、安全及多用户存取控制服务等。 常见的数据库服务器有甲骨文的Oracle、微软的SQL Server、IBM的DB2、SAP的Sybase以及SUN公司的MySQL数据库服务器。由于MySQL具有体积小、速度快、免费等特点,许多中小型WEB系统选择MySQL作为数据库服务器。 6 .PHP 程序的下作流程 l-3 PHP 服务器构建 1.安装Apache服务器: 双击11 文件2.2.19,在安装程序打开窗口中,除了制定安装目录,并设定输入土机名、管理员信箱。 一路选择“Next”下去,完整安装。注(在此我们将Apache 服务器安装在D:/apache/)安装完成后,在任务栏托盘区中会增加一个Apache服务程序运行图标,这说明服务器已经安装成功,在IE 地址栏中键入迎,即可看到Apache 的欢迎页面。 2.设置Apache的服务端口 在Apache 安装路径下的D : Apache conf \文件夹中,打开 文件,找到“listen80 ”所在的一行,将“80 ”改为白己希望的端日号,如8000 。修改后,停止Apache 服务,再启动,然后再浏览器地址栏中输入,观察效果。 3.安装PHP 环境 将php也解压缩在d:/apache/php 日录下 4.配置PHP 参数 ( l )在步骤2 所用到的 文件中,在文件最后加上以下三行代码PHPIniDir“D :Apache\php ” LoadModule php5 _ module “D :Apachephp" AddTyPe application/ 其中: ① PHPIniDir: “一行的”中填写为PHP 的安装路径。 ②LoadModule php5_module”一行的”填写为PHP的安装路径\ 。 ( 2 )设置PHP 文件存放路径 打开 文件,在文件最后加上< Directory“D : Apache wwwroot"> ( D:Apachewwwroot 是放置web目录的路径,路径即是存放网站的路径) Options Indexes FollowSymLinks AllowOverride None Order allow deny Allow from all (3)配置启用默认文档 打开D:Apacheconf < IfModule dir_module> 238行附近,设置启用默认文档 Directorylndex (4)配置虚拟目录 ①打开 文件,启用Includc conf/extra/httpd-vhosts . conf ② 打开Apacheconfextra中的 文件并进行配置,即设置虚拟目录与域名,在D盘的Apache 文件夹下创建wwwroot 文件夹。 ServerAdmin DocumentRoot”D:Apachewwwroot\test“ ServerName test ErrorLog”D:Apachewwwroottestlogs “ CustomLog”D : Apache wwwroottestlogs”common ServerAdmin DocumentRoot “D:Apache\wwwroot phpMyAdmin” ServerName mysql ErrorLog”D : Apache wwwroot phpMyAdminlogs” CustonLog“D :ApachewwwrootphpMyAdminlogs”common 注:以上的logs文件夹是存放错误日志的文件夹 (5)找到PHP 的安装路径下的php . ini(复制一份 ,文件名修改为 ),启用配置 找到: extension_dir =”D:Apachephpext”( 491 行附近,此行说明要调用ext中的文件) =”D:Apache\tmp”( session临时保存的文件夹,其中tem是白行创建的,995 行附近) extension =(前面的;去掉)启用618 行附近 extension = (前面的;去掉)启用633 行附近 upload_tmp_dir = “D :\Apachetmp”(上传文件临时保存的文件夹,其中tmp是自行创建的)549 行附近 (6)将PHP 安装路径下的文件php5ts .dll . 复制到Winnt ( Windows)/ systenl32/目录中。 5 .安装Mysql 在Apache 文件夹下,安装详细步骤见MySQL 详细安装步骤.doc文档。 6 .配置Mysql 数据库的管理程序phpMyAdmin ① 将phPMyAdmin整个文件夹复制到wwwroot 文件夹下,phpMyAdmin 是用来管理数据库MySQL 的程序; ② 在wwwroot创建一个名为test的文件夹,该文件夹即是存放网站的文件夹; 7 .配胃C:WINDOWSsystem32driversetc下的hosts文件,即域名和本地IP 一致。 8 .创建一个简单的PHP程序,保存为 ,并将其存放test文件夹下在地址栏里输入,如果输出hello,world!,说明环境配置正确
echo “hello word!”; > 9.上述(1)、(2)、(3)、(4)、(5)、(6)、(7)都做完后,重新启动Apache服务。 复习及作业布置: 自己动手搭建PHP运行环境及其配置。 扩展学习参考: 课后反思: 教学过程: 1、介绍一下课程的情况,包括课时,学分,课程的性质,学生学习本课程能获得什么知识能达到什么目的,强调课程的重要性以及课程学习好的方法。介绍本课程的考核方式,强调平时成绩的重要性。 2、借助多媒体课件,对PHP进行介绍,介绍 PHP脚本程序工作流程,演示服务器的构建。介绍代码基本语法及PHP程序组成及编码规范。 3让学生自己实际动手操作搭建运行环境。 授课章节:第二章PHP基础 课时 4学时 教学目的:通过学习,学生可以从整体上认识PHP程序的各个组成部分,并可以制作功能简单的用户注册系统。 教学重点: PHP数据、PHP数据类型、浏览器端的数据采集、PHP程序的数据采集、PHP数据处理、PHP数据的输出。 教学难点:编程规范习惯的养成PHP数据、PHP数据类型、浏览器端的数据采集、PHP程序的数据采集、PHP数据处理、PHP数据的输出。 教学内容: 2-1PHP 代码基本语法 开始标记与结束标记 (1)开始标记“ (2)开始标记“” (3)开始标记“<”和结束标记“>” 教 (4)开始标记“<%”和结束标记“%>” 学 注释 实PHP 支持如下三种注释风格(例如程序 ) : 施 第一种:/*多行注释风格*/; 过第二种:于PHP数据 程与传统的高级语言一样; 设(1) PHP使用变量或常量实现数据在内存中的存储,并使用变量名(例如$userName)计 或常量名(例如PI)实现了内存数据的按名存取。 (2)PHP 使用等于号“=”(赋值运算符)给变量赋值。 (3)PHP不允许直接访问一个未经初始化的变量,否则PHP预处理器会提示Notice信息。 (4)PHP提供变量作用域的概念实现内存数据的安全访问控制。 (5)PHP引入了数据类型的概念修饰和管理数据。 与传统的高级语言不一样: (1) PHP变量名之前要加美元符号“$”标识,例如$userName 变量。 (2)PHP是一种“弱类型的语言”,声明变量或常量时,不需要事先声明变量或常量的数据类型,PHP会自动由PHP预处理器根据变量的值将变量转换成适当的数据类型。 数据类型 PHP数据类型分为四种:标量数据类型、复合数据类型、特殊数据类型和伪类型。 其中标量数据类型分为四种:布尔型、整型、浮点型和字符串型; 复合数据类型共有两种:数组和对象; 特殊数据类型有资源数据类型和空数据类型; 伪类型通常在函数的定义中使用。 3.浏览器端的数据采集 浏览器端数据的采集主要依靠HTML提供的FORM表单实现。FORM表单是包含一系列表单元素的区域,表单元素是允许用户在表单中输入信息的元素。常见的表单元索有:文本域、下拉列表、单选框、复选框等。 程序的数据采集 PHP 程序负责采集用户注朋FORM 表单提交的数据,然后进行显示。 $userName=$_GET[“userName”]; $password=$_GET[“password”]; $confirmPassword=$_GET[“confirmPassword”]; 1”写规范 (1)缩进 (2)大括号{} (3)运算符 2.命名规范 (1)类 (2)常量 (3)变量 (4)数组 (5)函数 (6)数据库表字段 (7)类文件 3.为代码添加注释 软件开发是一种高级脑力劳动,精妙的算法之后往往伴随着难以理解的代码,对于不经常维护的代码,往往连开发者本人也忘记编写的初衷。要为代码添加注释,增强代码的可读性和可维护性。有时添加注释和编写代码一样难,但养成这样的习惯是必要的。请记住:尽最大努力把方便留给别人和将来的自己。 复习及作业布置: 扩展学习参考: 课后反思: 教学过程: 复习导入: 本章着重讲述PHP基本语法、PHP程序的组成以及PHP 编码规范,详细讲解PHP数据类型以及数据输出等知识。通过本章的学习,读者可以从整体上认识PHP程序的各个组成部分,并可以制作功能简单的用户注册系统。 讲解新知: 1.代码基本语法 2.编码规范 程序的组成 授课章节:第三章 PHP表达式 课时 4学时 教学目的:通过学习,学生可以了解变量、常量、常用运算符、变量状态函数以及类型转换的相关知识,为今后设计更为复杂的程序奠定坚实的基础。 教学重点:isset()函数、unset()函数、empty()函数的使用字符串连接运算符、错误抑制符、比较运算符等运算符的使用数据类型的转换。 教学难点:理解“空”与NULL的区别,数据类型的自动转换。 教学内容: 3-1常量 1.自定义常量 define()函数的语法格式: 教define(name,值为value[,Boolean case_insensitive]) 学功能:定义一个名字为name,值为value的常量:ase _insensitive 参数的默认实值默认为FALESE , 表示常量名name大小写敏感(区分大小写): case_insensitive 施 参数值如果为TRUE,表示常晕名name大小写不敏感(不区分大小写)。说明:常量过名name为字符串类型数据,常量值value 必须是标量数据类型数据。 程注意:常量名前面不加前缀”$”符号。 设常量的作用域是全局的,不存在使用范围的问趣,可以在程序任意位置进行定计 义和使用常量。常最一旦被定义,其值不能在程序过程中修改,也不能被销毁。 2.常量的内存分配 内存中专门为常量的存储分配了一个空间:常量存储区。常量存储区是一块比较特殊的存储空间,位于该存储空间的常量是全局的,且在程序运行期间不能修改和销毁。 3.预定义常量 PHP还预定义了许多常最,这些常量无需使用define()函数定义,可直接在程序中使用。 (1)_FILE_ ( FILE 前后是两个下划线):当前正在处理的脚木文件名。 (2)_LINE _( L INE 前后是两个下划线):正在处理的脚本文件的当前行数。 (3)PHPV_VERSION :当前PHP 预处理器的版本。 (4)PHP_OS: PHP所在的操作系统的类型,如Linux。 (5)TRUE :表示逻辑真:FALSE 常最:表示逻辑假:NULL 常最:表示没有值 或值不确定。 (6)DIRECTORY_SEPARATOR常量:表示目录分隔符,Unix 或Linux 操作系统环境时的值为“/”Windows 操作系统环境时的值为“”。 3-2变量 1.变量基本概念 变量是用于临时存储数据的容器,这些数据可以是任意一种数据类型的数据PHP中的变最名遵循以下规则: (1)变量名必须以美元符号($)开头,例如:$userName 。 (2)变量名的第一个字符必须是字母或下划线(不能是数字),变量名称可以包含字母、数字和下划线的组合。 (3)PHP中的变量名是区分大小写的,这是一个非常重要的规则。这意味着$userName 和$UserName 是截然不同的两个变量。 2 .变量赋值方式 (1)传位赋值方式 (2)传地址赋值方式 3.可变变量 PHP 提供了一种特殊类型的变量:可变变量,可变变最允许PHP程序动态地改一个变量的变量名,可变变量的工作原理是用一个变量的“值”作为另一个变量的 “名”。 3-3有关变量或常量状态的函数 1.数据类型查看函数 (1)gettype()函数 (2)var_dump函数 2.检查常量或变量是否定义函数 (1)define()函数 (2)isset函数 3.取消变量定义unset()函数 4.检查变量是否为“空” (1)empty()函数 (2)is_nul()函数 5.数据类型检查函数 3-4 PHP运算符 1.算术运算符 2.递增乒递减运算符 3.赋值运算符 4.比较运算符 5.逻辑运算符 6.字符串连接运算符 7.错误抑制运算符 8.条件运算符9.类型运算符 10.执行运算符 11.位运算符 12.运算符优先级 3-5数据类型的转换 1.类型自动转换 2.强制类型转换 复习及作业布置: 扩展学习参考: 课后反思: 教学过程: 复习导入: PHP 表达式是PHP程序最为重要的组成部分,PHP表达式指的是将相同数据类型或不同数据类型的数据,用运算符号按一定的规则连接起来、有意义的式子,木章可以围绕表达式详细讲解表达式中涉及的变最、常量以及常用运算符,最后讨论表达式中数据类型之间的相互转换。 讲解新知: (1)详细讲解常量 (2)详细讲解变量 (3)介绍有关变量和常量状态的函数 (4)详细讲解PHP运算符 (5)介绍数据类型的转换 最后对本次课内容进行总结 授课章节:第四章 PHP流程控制 课时 4学时 教学目的:通过学习,学生可以了解条件控制结构、循环结构以及程序跳转和终止语句3种类型的PHP流程控制语句,这3种类型的流程控制构成了面向过程编程的核心。通过学习,为今后设计更为复杂的程序奠定坚实的基础。 教学重点:if…else…语句、switch语句、while语句以及break语句、continue语句、exit语句。 教学难点:switch语句、while语句以及break语句、continue语句、exit语句。 教学内容: 教4-1条件控制结构 学语句 实 If语句的语法格式为: 施 If(条件表达式){ 过 语句块 程 } 设 ………else语句 计 if…….else语句的语法格式为: if(条件表达式){ 语句块1 }else{ 语句块2 } 3,.switch语句 Switch语句的语法格式: Switch(表达式){ Case值1:语句块1; break; Case值2:语句块2; break; …………… Default: 语句块n; } 4-2 循环结构 1. while 循环语句 while循环语句是最简单的循环语句,它的语法格式跟if 语句相似: while(条件表达式){ 语句块; } ……while 循环语句 do……while 循环语句的语法格式如下所示: do{ 语句块; } while(条件表达式); :循环语句 for循环语句的语法格式如下所示: for(表达式l ;条件表达式2 ;表达式3){ 语句块; } for 循环语句中,各表达式的功能如下: 表达式1 的功能是初始化循环控制变量,表达式l只执行一次,并且不是必需的。条件表达式2 为循环控制条件,若条件表达式2值为TRUE ,则执行语句块;若条件表达式2 值为队FALSE则跳出for 循环。条件表达式2 也不是必需的。表达式3 的功能是修改循环控制变量的值。表达式3也不是必需的。 4 .循环结构应用 程序使用PHP循环结构制作九九乘法表。 4-3其他流程控制语句 语句 continue语句一般在for 、while 或do … while 循环结构中使用。在循环结构中,当程序执行至continue 时,程序将跳过木次循环中剩余的代码并开始执行下一次循环。例如程序的功能是计算l + 3 + 5 +… +99 的奇数和。 语句 当break 在switch语句中使用时,它会使程序跳出当前的Switch 语句。 brcak 语句还可以使用在for 、while 或do… while 循环语句中,使得程序跳出当前循环结构。例如程序的功能时计算I + 2 + 3 +… +100的和。 3.终止PHP 程序运行 exit语言结构的语法格式:void exit( [ string message]) exit 语言结构的功能:输出字符串信息message ,然后终止PHP 程序的运行。例 如程序 · 从程序的运行结果可以看出: (1)使用逻辑或(or)表达式:$a or $b 可以强制只有表达式$a的结果为队FALSE时,表达式$b才会执行。 (2)当某个表达式运行失败时,该表达式的结果为FALSE 。 复习及作业布置: 扩展学习参考: 课后反思: 教学过程: 复习导入: PHP程序中如果没有流程控制语句,PHP程序将从第一条PHP语句开始执行,一直运行到最后一条PHP语句。流程控制语句用于改变程序执行次序,从而控制程序的执行流程。 讲解新知: (1)通过例子讲解条件控制语句 (2)通过例子讲解循环结构 (3)通过例子讲解程序跳转和终止语句 授课章节:第五章PHP数组 课时 4学时 教学目的:通过学习,学生可以了解数组的基本概念以及数组常用的处理函数,并掌握几种数组遍历方法。 教学重点:数组的遍历foreach语言结构、常用数组函数的使用、数组内部指针。 教学难点:各种数组遍历的方法常用数组函数的使用,例如快速创建数组的函数、数组统计函数、数组指针函数、数组和变量间的转换函数、数组遍历语言结构、数组检索函数。 教学内容: 5-1数组的基本概念 1.为什么引入数组 使用标量数据类型定义的变量只能存储单个“数据”,仅依靠标量数据类型远不现实生活中的一些常见问题,例如一个设置个人信息的页面。 2.数组的分类 一维数组、二维数组、多维数组 5-2一维数组的创建 1.直接将变量声明为数组元素,一个变量声明为一个数组元素有三种方法: 教第一种方法:不指定数组元素的“键”, 示例程序:$characters[]=”humour”; 学第二种方法:将数组元索的“键”指定为某个整数,示例程序:$iterests[2]=”music”; 实第三种方法:将数组元素的“键”指定为某个字符串,示例程序:$colors[“red]=”施 red”; 过2.使用array()语言结构创建数组 程 PHP提供了array()语言结构创建数组,array()语言结构接受一定数量用逗号分隔设的key = >value参数对,这样可以一次性地为数组添加多个元素(若key省略,则计 key值为整数)。 3.创建数组的注意事项 (1)如果数组元素中的“键”是一个浮点数,则‘键”将被强制转换为整数(例如浮点数将被强制转换为整数8),如果“键”是TRUE 或FALSE ,则‘键”将被强制转换为整数1 或O 。 (2)如果数组元素中的“键”是一个字符串,且该字符串完个符合整数格式时,数组元素的“键”将被强制转换为整数(例如“9”将被强制转换为整数9)。 (3)由于数组元素中的“键”唯一标识一个元素,因此数组中元素的“键”不能相等(使用==比较)。如果两个数组元素的“键”相等,“键”对应的值将被覆盖。 (4)不要在array()语言结构中使用诸如”red=>””red”键值对的方式创建数组 元素,也不要使用诸如$colors[red]=”red”的赋值语句的方式创建数组元素,否则程序的可读性及运行效率将大扫折扣。 4.数组元素“值”的访问 访问数组元素值的方法和访问变量值的方法相同:通过指定数组名并在方括号内指定”键名”的方式“访问”数组元素的”值”。使用这样的方法访问数组,不仅可以读取某个数组元素的“值”,还可以为数组添加数组元素以及修改数组元素的“值”,并可以像访问“变最”的方法访问数组元素的值。PHP 提供两种变量赋值方式:传值赋值和传地址赋值,对于数组同样适用。 5-3多维数组 1.二维数组的创建 二维数组的创建方法和一维数组的创建方法相同。 方法一:直接将变量声明为二维数组 方法二:使用array()语言结构创建二维数组 2.二维数组元素“值”的访问 二维数组中存在两个“键”,因此访问数组元素的“值“时需要指定这两个”键”。例如:$ students[“2010001”][“studentName”]对应的值是”张三” ,其中第一个键”2010001”用于指定二维数组$studcnts中的某一‘行”,第二个“键”$studentName用于指定二维数组$student的该“行”的某一“列”。只使用第一个“键“访问数组时,访问的是二维数组中的某一“行”,该行是一个一维数组。 5-4数组处理函数及应用 1.快速创建数组的函数 (1)range()函数 语法格式:array range(mixed start ,mixed end) 函数功能:快速创建一个从start 到end 范围的数字数组或字符数组。 函数说明:如果start > end,序列将从start 到end。 (2)explode()函数 语法格式:array explode(string separator , string st ) 函数功能:使用指定的字符串分隔符separator分割字符串str ,将分割后的字符串放到数组中,并返回该数组。 (3)array_combine()函数 语法格式:array_combine( array keys,array values) 函数功能:创建一个新数组,用数组keys的值位作为新数组的“键”,数组values的值作为新数组的“值”。 (4)array_fill()函数 语法格式:array array _fill(int start_key,int length,mixed value) 函数功能:创建一个数组,并为该数组添加length个数组元素,数组元素的“键“,从start_key 处开始始递增,每个数组元素的值为value。 说明:length必须是一个大于零的数值,否则PHP 会提示Warning警告信息。 (5)array_pad()函数 语法格式array array_pad( array arr ,int pad_size,mixed pad_value ) 函数功能:array_pad()函数返回数组arr的 一个拷贝,并用pad _ value 将其填补到pad _ size 指定的长度。如果Pad_size为正,则数组被填补到右侧,如果为负则从左侧升始填补。如果pad_size的绝对值小于或等于input 数组的长度则没有任何填补。 2.数组统计函数 (1)count()函数 语法格式:int count ( array arr[int mode] ) 函数功能:统计并计算数组arr中元素的个数。如果数组arr是多维数组,可将mode 参数的值设为常量COUNT_RECURSIVE(或整数l),计算数组arr中所有元素的个数;mode的默认值是0。该函数的别名函数为sizeof()。 (2)max()函数 语法格式:mixed max(array arr [,array……]) 函数功能:统计并计算数组arr中元素的最大值。 说明:PHP 会将非数值的字符串当成0处理,但如果这个正是最大的数值则仍然会返回一个字符串。如果多个数组元素的值为0且是最大值,函数会返回其中数值的0 ,如果数组元素中没有数值的O ,则返回按字母表顺序最大的字符串。 (3)min()函数 语法格式:mixed min(array arr[,array … ] ) 函数功能:统计并计算数组arr中元素的最小值。 说明:PHP 会将数组arr中的字符串当成0处理,如果字符串正是数组arr中最小的数值,则仍然会返回一个字符串:min ()函数返回一个字符串时,该字符串为数组中顺序靠前的字符串。 (4)array_sum()函数 语法格式:: number arry_sum( array arr ) 函数功能:统计并计算数组arr中的所有元素值的和,array_sum()返回整数或浮点数。说明:PHP 会将数组arr 中的非数值类型的元素值自动类型转换为整数或浮点数。 (5)array_product()函数 语法格式:number array_product(array arr ) 函数功能:统计并计算数组arr中所有元素值的乘积,该函数返回整数或浮点数。说明:PHP会将数组arr中的非数值类型的数据自动类型转换为整数或浮点数。 (6)array_count_values()函数 语法格式:array array_count_values ( array arr ) 函数功能:统计并计算数组arr中所有元素的值出现的次数。 3.数组指针函数4.数组和变量间的转换函数5.数组遍历语言结构 6.数组检索函数7.数组排序函数8.数组与数据结构9.数组集合运算函数 复习及作业布置: 扩展学习参考: 课后反思: 教学过程: 复习导入: 数组(Array)是一组批量的数据存储空间,这一组存储空间在内存是邻接的,每一个存储空间存储了一个数组元素,元素之间使用“键”(key)来识别,通过数组名和“键”的组合数组中每一个元素的访问。然后按以下内容讲解: (1)讲解数组的基本概念 (2)通过演示讲解一维数组的创建 (3)介绍多维数组 (4)介绍数组处理函数及应用 最后对本次课内容进行总结 授课章节:第六章 PHP的数据采集 课时 4学时 教学目的:通过学习,学生可以了解浏览器端数据的各种提交方式,如何创建FORM表单实现浏览器端的数据采集, PHP程序各种数据采集的方法,以及如何实现文件的上传功能。通过本章的学习,读者可以结合PHP数组实现功能复杂的“用户注册系统”。 教学重点:设计FORM表单、文件上传的表单的设计以及如何实现文件上传功能。 教学难点:在FORM表单中使用数组文件上传的具体流程、与文件上传有关的配置 多文件上传的实现(可以参考习题以及习题答案)。 教教学内容: 学6-1浏览器端数据的提交方式 实 提交方式 施 GET 提交方式是将“请求”数据以查询字符串(Query String)格式附在URL 之过后“提交”数据。例如: 程 =victor&password= 1234&confirmpassword=1234 在这个URL中,问号“ ”表示设查询字符串的开始,问号“ ”后面的字符串参数" userName = victor&password = 计 1234&confirmPassword = 1234 ”为查寻字符串。可以看出 : 查询字符串可以包含多个参数,每个参数以“参数名=参数值”的格式定义,参数之间使用“& ”相连,最后再将查询字符串使用“ ”附在URL 之后。 另外,FORM 表单也提供了GET提交方式。 2. POST 提交方式 POST 数据提交方式一般通过FORM表单实现,由于默认情况下FORM 表单的数据提交方式为GET方式,必须在FORM 表单的 和POST混合提交方式 还可以使用FORM表单实现GET和POST混合提交方式,即向WFB 服务器某PHP程序发出“GET请求”的同时,还向该PHP 程序发出“POST 清求”. 4.两种提交方式的比较 POST提交方式比GET提交方式安全。这是由于GET提交方式提交的数据将出现在URL查询字符串中,并且这些带有查询字符串的URL可以被浏览器缓存到历史记录中。因此诸如用户注朋、登录等系统,不建议使用GFT提交方式。 POST提交方式可以提交更多的数据。理论上讲POST 提交方式提交的数据没有大小限制,而GET提交方式提交的数据由于出现在URL查询字符串中,而URL的长度是受限制的(例如IE 浏览器对URL长度的限制是2083字节)。例如:新闻发布系统中提交篇幅较长的新闻信息时,不建议使用GET提交方式:带有文件上传功能的FORM 表单则必须使用POST 提交方式。不同的“提交”方式对应的服务器端数据“采集”方式不同。 6-2相对路径和绝对路径 1.绝对路径 绝对路径是与相对路径相对立的,通常是一个完整的URL,该URL由两个部分构成:scheme :用来描述寻找数据所采用的机制,即:协议。如http协议和ftp协议等位置(Location ) :用来描述到哪儿去寻找数据的资源 这两部分使用“:对路径 相对路径可以分为两类:server-relative路径与page-relative路径。server-relative 路径是以斜杠“/”开头的相对路径。在HTML中,以斜杠“/ ”开头的相对路径表示从WEB 服务器的根目录下开始查找相应的资源文件。使用默认配置安装WAMP后,目录“C:/wamp/www”为Apache服务器的根目录,因此使用相对路径“/”访问资源时,访问的是目录“C :/ wamp/www”下的页面;使用相对路径“/6/”访问资源时,访问的是目录“C : / wamp / www ”中的目录“6”下的register .html 文件。Page-relative路径不以斜杠开头。此时当文件l 访问文件2 ( HTIL页面、PHP程序或图片等)资源时,将从文件1的当前目录作为起点查找文件2资源。例如当目录“C:/wamp/www/6/”中的文件使用超链接访问该目录下的文件时,只需在register .html文件的超链接中直接指定 文件即可。 3.相对路径其它概念 (1)同一个日录下的资源访问 如果文件1和文件2在同一个日录,这两个文件间的相互访问直接使用文件名即可。 (2)如何表示当前目录 .表示文件的当前日录。 (3)如何表示上级目录 ../表示文件所在目录的上一级目录,../../表示文件所在目录的上上级目录,以此类推。 (4)如何表示下级目录 如果文件1访问下级目录中文件2,直接指定该目录和文件2的文件名即可。 6-3使用FORM 表单实现浏览器端的数据采集 FORM 表单由三部分组成: 表单标签:定义了表单处理程序及数据提文方式等信息。 表单控件:包括单行文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等表单控件。 表单按钮:包括提交按钮、复位按钮和一般按钮。 1.表单标签<form> 表单标签<form > 常用的属性有action 、method、enctype、title 、name等。 (1)action属书设置当前表单数据“提交”的目的地址。当不设置action属性,或设置值等于空字符串(即action = " " )时,表单数据提交给当前页面。 (2)method属性设置表单数据的提交方式。method 属性的值为GET 或POST ,默认为GET 。 (3)title属性设置表单的提示信息。当用户的鼠标在表单处停留时,浏览器用一个黄色的小浮标显示提示文本。 (4)enctype属性设置提交表单数据时的编码方式.enctype属性的位为multipart/form-data或application/x-www-urlencodded, 默认为”application/x-www-form-urlencoded”。当一个FORM 表单‘中存在文件上传框时,必须将enctype属性设置为multipart/form-data 编码方式。 (5) name属性为当前的FORM 表单命名。 2 .表单控件 (1)单行文本框(2)密码枢(3)多行文本枢(4)隐藏域(5)复选枢 (6)单选枢(7)文件上传框(8)下拉选择框 注意:表单控件嵌套在FORM 表单中才有意义,每个表单控件都要一个name属性进行标识。这是因为WEB 服务器将依据表单控件的name属性判断传递给服务器的每个值分别是由哪个表单控件产。为了确保数据的准确采集,需要为每个表单控件定义一个独一无二的名称(同为一个组的单选框以及在表单控件中使用数组两种情况除外)。 3.在表单控件中使用数组 在一个HTML页面中,有时并不清楚某种表单控件的具体个数。例如:在进行多文件上传时,并不能确定浏览器用户究竟选择多少个上传文件,更无法确定页面中需要多少个文件上传框。在表单控件中使用数组可以解决类似的问题。 在表单控件的name属性值后面加上方括号“[]”从而实现在表单控件中使用数组。使用表单控件数组后,当表单提交时,相同name属性的表单控件则以数组的方式向WEB服务器提交多个数据。 4.表单按钮 (1)提交按钮 (2)图像提交按钮 (3)重置按钮 (4)自定义按钮 表单综合应用 6-4 使用$_GET 和$_POST “采集”表单数据 当浏览器向WFB服务器某PHP 程序提交数据后,该PHP程序应该根据其“提交”方式决定使用何种数据“采集”方法。当浏览器以GET 方式提交的数据时,服务器端PHP 程序应当使用预定义变最$GET “采集”提交数据:当浏览器以POST方式提交的数据时,服务器端PHP程序应当使用预定义变量$_ POST “采集”提交数据;当以POST方式提交的请求数据中包含上传文件时,服务器端PHP 程序应当使用预定义变星$_FILES “采集“上传文件。 6-5上传文件的“数据采集” 1.与上传相关的配置 下面的配置选项保存在配置文件中,可以适当的修改这些的配置选项满足特定的文件上传需要。 file _uploads :配置了是否允许通过HTTP协议上传文件。默认值为On ,表示PHP 预处理器支持文件上传功能。典型配置示例:file_uploads=On。 post_ max_size:使用POST提交方式提交表单数据时,post _max_size 选项配置了PHP 预处理器能够接受的最大表单数据大小。默认值为8M,表示表单中所有数据(包括上传文件)大小之和必须小于8M 字节,否则PHP 程序将不能采集到 任何的表单数据。即当表单数据大小大:post_max_size 选项定义的值时,提交表单后,$_ GET 、$_ POST 和$ _ FILES 将为空数组。典型配置示例:post_ max _ size = 8M 。 文件上传流程 3.预定义变最$_FlLES 4.预定义变量$_FILES 文件上传的实现 6-6WEB 服务器端其它数据采集方法 复习及作业布置: 扩展学习参考: 课后反思: 教学过程: 复习导入,本章首先讲解浏览器端数据的提交方式,然后讲解如何创建FORM 表单实现浏览器端的数据采集,最后讲解PHP程序各种数据采集的方法,通过本章的学习,学生可以结合PHP数组实现功能复杂的“用户注册系统”。然后按以下内容讲解: (1)介绍浏览器端数据的提交方式 (2)详细讲解相对路径和绝对路径 (3)通过演示讲解使用FORM表单实现浏览器端的数据采集 (4)详细讲解使用$_GET和$_POST采集表单数据 最后对本次课内容进行总结 授课章节:第七章 PHP自定义函数 课时 4学时 教学目的:通过学习,学生可以了解PHP文件间相互引用的4个PHP语言结构,如何创建和调用用户自定义函数,创建具有文件上传功能的自定义函数,重构“用户注册系统”的代码,增强代码重用性。 教学重点:设计具有文件上传功能的自定义函数,重构“用户注册系统”的代码设计。 教学难点:static关键字以及global关键字的使用、return语言结构的使用、如何使用函数增强代码重用性。 教教学内容: 学7-1PHP文件间的引用 实语言结构 施 include语言结构的语法格式:mixed include(string resource) 过 include 语言结构的功能:incude语言结构将一个资源文件resource载入到当程前PHP程序。字符串参数:resource是一个资源文件的文件名,该资源可以是本地设WEB报务器上的资源,如图片、HTML页面、PHP页面等,也可以是互联网上的资源。 计 若找不到资源文件:语言结构返回FALSE;若找到资源文件:resource,且资源文件resource没有返回值,返回整数l ,否则返网资源文件resource的返回值。 2 .require与include语言结构的比较 require语言结构的语法格式及功能与include相同,只不过两者之间存在着细微的区别。在错误处理方便:使用include语言结构,如果被引用文件发生错误或不能找到被引用文件,引用文件将提示Waming信息然后继续执行下面的语句。使用require语言结构,如果被引用文件发生错误或不能找到被引用文件,引用文件将提示waming信息及Fatal error:致命错误信息然后终止程序运行。 和require_once语言结构 include_once和require_once 语言结构分别对应于include和require语言结构,使用include_once和require_once语言结构可以有效避免多次引用同一个PHP文件而引起函数或变量的重复定义问题的发生。 include_once语言结构的语法格式:mixed include_once(string resource) include_once语言结构功能:include_once语句将一个资源文件resource载入到当前PHP程序中。若找不到资源文件resource,include_once语句返回队FALSE 。若找到资源文件resource,且该资源文件第一次载入,include_once语句返可整数1;若找到资源文件resource,且该资源己经载入,include_once语句返 TRUE 。 7-2 函数概述 1.函数的概念 程序设计中,可以将经常使用的代码段独立出来,形成单独的子程序,这些子程序就是函数。函数只需要定义一次,之后便可以重复使用,故可以增强了代码的重用性。一般而言,函数的功能比较单一,因此函数的编写和维护比较容易。 2.函数的分类 PHP函数种类和变量种类的划分方法相似,PHP中有三种类型的函数:内置函数、自定义函数和变量函数。 内置函数类似了于预定义变举。PHP内置函数是PHP已预定义好的函数,这些函数在编程时无需定义,可以直接使用。 自定义函数类似于自定义变量,由程序员根据特定需要编写出来的代码段。和内置函数不同,自定义函数只有在定义之后才可以使用。 变量函数类似于可变变量,变量函数的函数名为一个变量。三种类型的函数都有一个共同特点:调用函数时,函数名大小写不敏感,例如:调用md5()函数和调用MD5 ()函数实质上是调用同一个函数。 7-3自定义函数 1.自定义函数的定义 在PHP中,定义自定义函数的语法格式为: function functionName($param1,$param2,$$paramn=defaultValue ) { 函数体; return 返回值; } 2.自定义函数的声明和调用 调用自定义函数时需要注意:应该先声明自定义函数,然后才可以在调用处使用如下方式调用自定义函数: functionName (paramlValue , param2Value , paramnValue) 当函数的定义和函数的调用位于不同的PHP文件时,需要使用include ( include _ once)或require语言结构(require _once)引用函数定义所在的PHP文件,这个过程称为函数的声明。当函数的定义和函数的调用位于几同一个PHP 文件时,此时无须函数的声明即可直接调用自定义函数。 3.自定义函数的参数赋值 和变晕赋值方法相同,自定义函数的参数赋值有两种方法:传值赋值和传地址赋值。 (1)传值赋值 默认情况下,自定义函数的参数是按传值赋值的方式为函数参数赋值,即将一个值 的“拷贝”赋值给函数的参数。 (2)传地址赋值 自定义函数的参数也可使用传地址赋值,即:将一个变量的“引用”传递给函数的参数。和变量传地址赋值的方式一样,在函数的参数名前追加一个“&”符实现传地址赋值。4.变量的作用域和global关键字 4.变量的作用域取决于变量在PHP程序的位置: ∅在函数内定义的变景(包括函数的参数)为局部变耸,局部变量在调用函数结束后被白动回收。 ∅在函数外定义的变量为全局变量,声明后的全局变量可以被PHP 程序中所有语句访问(函数内的PHP语句除外),当程序执行到程序末尾的时候,全局变量才被自动回收。全局变最也可以应用于include语句和require语句所引用的PHP 程序文件。 如果函数中的PHP 语句要访问全局变量,需要在函数内定义的变量名前加关键字global,此时函数内局部变量变为全局变量。 5.变量的生存周期和static关键字 函数内定义的变量生存周期是短暂的:每一次函数调用的开始到这一次函数调用的结束。有时希望函数中的变量能够从这次调用一直存活到下次调用,此时需要在该变量前加上static 关键字。static关键字一般在函数定义中使用,用于修饰局部变量。 6.变量函数 变量函数类似于可变变量,变量函数的函数名为变量。使用变量函数可以实现通过改变变量的值的方法调用不同的函数。变量函数的调用方法如下: $varName(paramlValue , param2Value , param3Valu3 ,… paramnValue ) 7-4自定义函数综合示例 文件上传功能的函数upload ()的制作 表单综合应用 function upload ($file,$filePath){ $error = $file[‘error’]; switch($error){ case 0: $fileName=$file[‘ nanle’]; $fileTemp = $file[‘tmp_name’]; $destination =$filePath.”/”.$fileName ; move_uploaded_file($fileTemp,$destination); return “文件上传成功!”; case 1: return “上传附件超过了中upload_max_filesize选项限制的值!” case 2: return “上传附件的大小超过了form表单MAX_FILE_SIZE选项指定的值!” case 3: return “附件只有部分被上传!” case 4: return “没有选择上传附件” } } > 复习及作业布置: 扩展学习参考: 课后反思: 教学过程: 复习导入: 本章一改先介绍PHP文件间相互引月!的4个PHP语言结构,然后重点介绍如何创建和调用用户白定义函数,通过本章的学习,学生可以创建具有文件上传功能的自定义函数,重构“用户注册系统”的代码,增强代码重用性。 讲解新课: (1)对上次课进行回顾并提问。 (2)通过例子详细讲解文件引用语句及各种语句之间的区别 (3)介绍函数的概念 (4)讲解自定义函数相关的语法及用法 (5)介绍return语言结构 (6)课堂总结。 授课章节:第八章 MySQL数据库 课时 4学时 教学目的:通过学习,学生可以了解数据库的功能、数据库常用的专业术语、常用的SQL语句。通过具体案例学生管理系统设计该系统的数据库,通过学习,学生具备简单数据库系统设计与开发的能力,为今后设计更为复杂的应用系统奠定坚实的基础。 教学重点:数据库的设计流程,如何设计E-R图,主键、外键、约束等专业术语在MySQL数据库中的实现,常用的存储引擎例如MyISAM存储引擎、InnoDB存储引擎,MySQL字符集的设置,MySQL数据库管理、表的管理、更新操作、查询操作。 教学难点:数据库的设计流程、开发流程,如何设计数据库表、如何选择数据库表的主键,如何防止中文乱码问题,Create语句、drop语句的使用,Select语句的使用、insert语句、update语句、delete语句的使用,如何实现分页,MySQL特殊字符序列。 教学内容: 8-1数据库概述 1.数据库 数据库是一种专门存储信息和维护信息的容器,严格地说数据库是“按照数据结构来组织、存储和管理信息的仓库”。 外观上,数据库中的二维表(简称数据库表)和电子表格Excel是相同的。数据库表是由列和行构成,数据库表中的一列称为一个字段,每个字段用于存储某种数据类型的数据:数据库表中的一行称为一条记录,每条记录包含表中的一条详细信息。 教数据库是一种专门存储信息和维护信的容器,严格地说数据库是“按照数据结学构来组织、存储和管理信息的仓库”。 实外观上,数据库中的二维表(简称数据库表)和电子表格Excel是相同的。数施 据库表是由列和行构成,数据库表中的一列称为一个字段,每个字段用于存储某种过数据类型的数据:数据库表中的一行称为一条记录,每条记录包含表中的一条详细程信息。 设2.关系数据库管理系统(RDBMS) 计 关系数据库管理系统(RDBMS 或relational database management system)就是管理关系数据库的软件系统。关系数据库管理系统主要功能就是创建关系数据库,并且在关系数据库中创建各种数据库对象(表、索引、视图、存储过程等)以及维护各个数据库对象.对于初学者而言,关系数据库管理系统最重要的功能莫过于创建数据库、创建数据库表以及完成数据库表记录的添加、修改、删除和查询等操作。 3.结构化查询语言SQL 结构化查询语言的英文全称是structured query language ,简称SQL 。SQL 是一种应用广泛的关系数据库语言,用于定义和管理关系数据库中的各种对象(表、索引、视图、存储过程等),也可以用于查询、修改和删除数据库表中的记录。 8-2数据库的设计 数据库的设计一般要从E-R模型开始,之后的步骤如下: (1)为每个实体建立一张表 (2)为每个表选择个主键(建议添加一个没有实际意义的字段作为土键) (3)增加外键以表示一对多关系 (4)建立新表表示多对多关系 (5)定义约束条件 (6)评价关系的质量,并进行必要的改进(关于范式等知识请参考其他数据库书籍) (7)为每个字段选择合适的数据类型和取值范围 模型 E-R(Entity-Relationship)模型即实体-关系模型主要用于定义数的存储需求,该模型己经泛用广用于关系数据库设计中。E-R模型由实体、属性和关系三个基本要素构成。 2.主键(Primary key) 数据库表要求表的中的每一行记录都必须是唯一的,即在同一张表中不允许出现完全相同的两条记录。在设计数据库时,为了保证记录的“唯一性”,最为书遍、最为推荐的做法是为表定义一个主键(primary key )。数据库表中主键有以下两个特征: (1)表的主键可以由一个字段构成,也可以由多个字段构成(这种情况称为义合主键)。(2)数据库表中主键的直具有唯一性且不能取空值(NULL ) ,当数据库表中的主键由多个字段构成时每个字段的值不能取NULL值。 3.实体间的关系与外键(Foreign key) 班级实体和班主任实体之间为一对一关系,班级实体和学生实体之间为一对多关系,学生实体和课程实体之问为多对多关系。实体间的关系可以通过外键来表示。如果表A 中的一个字段a 对应于表B 的土键b ,则字段a 称为表A 的外键。此时存储在表A 中字段a 的值,同时这个字段位也是表B主键b的值。 4.约束(constraint) 常用的约束条件有六种: 主键(primary key)约束 外键(foreign key)约束 唯一性(unique)约束 默认值(default)约束 非空 (not NULL)约束 检查(check)约束 8-3 MySQL 简介 服务器的启动 2.连接MysQL服务器 启动MySQL 服务器后,需要使用MySQL客户端成功打开一个MySQL服务器连接,才能实现与MySQL 数据库之间的交互,如图所示。MySQL 提供了MySQL console命令窗口客户端实现与MySQL 服务器之间的交互。 和InnoDB存储引擎 8-4 字符集 1.字符集简介 字符集 中的字符集转换过程 字符集的设置 脚本文件 8-5 MySQL数据库管理 1.创建数据库 2.选择当前操作的数据库 3.显示数据库结构 4.删除数据库 8-6数据库表的管理 1.数据类型 MySQL共有3种数据类型,分别是数值类型、字符串类型和日期类型。 数值类型之整数类型 数值类型之精确小数类型 符串类型之定长字符串类型 字符串类型之变长字符串类型 字符串类型之文木类型 日期类型之日期类型 日期类型之口期时间型 中的附加属性 MySQL 还提供了一些附加属性用于修饰数据类型,例如NULL和auto_increment。 MySQL提供了附加属性NULL, NULL的意义为“没有值”或“不确定的值”。 auto_increment 如果需要为某个表的某个字段进行唯一编号,以标识每条记录,在MySQL中可以将该字段设置为auto_increment(自动增长)。 3.创建数据库表 4.显示数据库表结构 5.删除数据库表 8-7表记录的更新操作 1.表记录的添加 2.表记录的修改 3.表记录的删除 复习及作业布置: 扩展学习参考: 课后反思: 教学过程:(1)对上次课进行回顾并提问 (2)介绍数据库相关的概念 (3)介绍数据库设计有关的知识 (4)简单介绍MySQL (5)详细介绍MySQL中字符集的概念(6)通过演示讲解MySQL的有关操作(7)介绍MySQL特殊字符序列(8)课堂总结 授课章节:第九章 PHP与MySQL数据库 课时 4学时 教学目的:结合学生管理系统数据库,通过学习,学生可以了解使用PHP函数实现PHP与MySQL数据库之间的交互过程,并以用户注册系统为例学习该系统的实现过程。通过学习,学生可以具备简单WEB应用系统设计与开发的能力。 教学重点:如何开启数据库连接、如何关闭数据库连接、关闭数据库连接的时机,字符集设置的方法,结果集遍历函数的使用,用户注册系统的实现。 教学难点:关闭数据库连接的时机,如何防止SQL注入问题。 教学内容: 教9-1 PHP中常用的MySQL操作函数 学1.连接MySQL服务器 实 PHP中连接MySQL数据库服务器最简单的函数是mysql_connect(),语法格式如施 下:resource mysql_connect (striing hostname, string username, string 过password) 程 函数功能:通过PHP程序连接MySql数据库服务器。如果成功连接MySQL服务设器,则返回忆个MySQL服务器连接标识(link_identifier),否则返网FALSE。 计 2.设置数据库字符集 调用PHP函数mysql_query(“set names ‘gbk’”)可以将 character_set_client、character_set_connection和character_set_ results的字符集设置为gbk字符集。 3.关闭MySQL服务器连接 mysql_close()函数的语法格式如下:bool mysql_close ([resource link_identifier]) 函数功能:mysq_close()函数关闭指定的连接标识所关联到的MySQL服务器的连接。如果没有指定link_identifier,则关闭上一个打开的连接。如果关闭成功则返回 TRUE , 失败则返回FALSE 。 4.选择当前操作的数据库 使用函数mysql_select_db()可以设置当前操作的数据库。该函数的语法格式如下:bool mysql_select_db(string database_name[,resource link_identifier]) 函数功能:如果没有指定MySQL服务器连接标识符,则使用上一个打开的MySQL 服务器连接。如果没有打开的连接,本函数将无参数调用mysql_connect()函数尝试打开一个新的MySQL服务器连接然后使用它。如果选择当前操作的数据库成功则返回TRUE , 否则返回FALSE 。 5.发送SQL语句或MySQL命令 mysql_query()函数的语法格式如下:{bool|resouce}mysql_query(string sql[,resource link_identifier]) 函数功能:如果没有指定MySQL服务器连接标识link_identifier,则使用已打开的连接。然后向数据库引擎发送sql字符串(SQL语句或MySQL命令)。当发送的sql字符串执行失败时,mysql_query函数返回FALSE :发送的sql字符串是insert语句、update语句或delete语句,并且sql语句成功执行时,mysql_query()函数返回TUR;发送的sql字符串是select语句,并且select语句成功执行时,mysql_query()函数返回结果集(result)类型数据(实际是resource类型的数据)。 使用PHP的mysql_query()函数向MySQL服务器引擎发送insert语句、update语句或delete语句后,可以使用mysq_affected_rows()函数查看该SQL语句影响到的表记录行数。mysql_affected_rows()函数的语法格式如下: int mysql_affected_rows([resource link_identifier]) mysql_affected_rows()函数功能:取得最近一次与link_identifier 关联insert、update或delete语句所影响的记录行数。 使用PHP的mysql_query()函数发送insert语句向某个数据库表中添加记录时,若该数据库表中的某个字段为auto_increment自增字段,可以使用mysql_insert_id()函数得到当前insert语句执行后的该字段值。mysql_insert _id ()函数的语法格式如下:int mysql_insert_id([resource link_identifier]) mysql_insert_id()函数功能:mysql_insert_id()函数返回给定的link_identifier中上一条insert语句产生的auto_increment的ID号 ;如果没有指定link_identifier,则使用上一个打开的连接。 mysql_query ()函数还可以向MySQL务器引擎发送select语句,此时mysql_query函数将返回一个结果集(result)数据,可以使用:mysql_num_rows()函数查看该select语句查询到的表记录行数。Mysql_num_rows()函数的语法格式如下:int mysql_num_rows(resource result) mysql_num_rows()语句功能:返回结果集result中记录的行数,该函数仅对select语句有效。 结果集(result)使用过后,应该尽快地将其占用的服务器内存资源释放,可以使用函数mysql_free_result()实现,mysql_free_result()函数的语法格式如下:bool mysql_free_result(resource result) mysql_free_result()函数功能:释放结果集result占用的服务器内存资源,若执行成功,返回TRUE,否则返回FALSE。 使用mysql_query()函数还可以向MySQL服务器引擎发送MySQL命令。例如PHP语句”mysql_query(“set names ‘gbk’”);”将 character_set_client、 character_set_connection和character_set_results的字符集设置为gbk。 6.遍历结果集中的数据 mysql_fetch_row()函数的语法格式:array mysql_fetch_row(resource result) mysql_fetch_row()函数功能:从结果集result中取得下一行记录,并将该记录生成一个数组,数组的元素的键为从零开始的整数,数组元素的值依次为select语句中“字段列表”的值。若结果集result中没有下一行记录,则函数返回FALSE。 mysql_fetch_array()函数的语法格式:array mysql_fetch_array(resource result) mysql_fetch_array()函数功能:该函数时mysql_fetch_row()函数的扩展版本,该函数的返回值中包括mysql_fetch_row()函数的返回值,还包括select居中“字段列表=>字段列表值”的数组元素。 复习及作业布置: 扩展学习参考: 课后反思: 教学过程: 复习导入: 本章结合注朋登录系统数据库讲解如何使用PHP函数实现PHP与MySql数据库之间的交互,然后以用户注册系统为例讲解该系统的实现过程,通过本章的学习,学生将具备简单WEB应用系统设计.与开发能力。 授课章节:第十章 新闻发布系统的开发 课时 4学时 教学目的:通过学习,学生可以了解传统的结构化方法开发MIS系统的方法、流程以及分页函数的制作过程,并具备复杂WEB应用系统设计与开发的能力。 教学重点:新闻发布系统系统编码实施,分页的原理以及实现。 教学难点:新闻发布系统系统编码实施,分页的实现以及分页函数的制作。 教学内容: 10-1用 phpmyadmin 建立数据库首先建立一个数据库 在这个数据库下建立一个数据表,名为 news 。下面进入一个重点,那就是在表 news 下建立各个字段。那么,什么叫字段呢通俗点,就是一类事物的总称。比如说,所有的新闻发表时间用一个名词来代表(从偶的经验来看,用 phpmyadmin 建立 字段可以用中文,但从习惯来说还是用英文,没办法,计算机美国最牛嘛)。偶们用“ time ”来表示。在字段 time 下可以有很多“发表时间”,那 么如何来区分这些时间呢,这个可以查询其它字段下的内容,比如偶们建立新闻的标题的字段为“ title ”, title 字段下的内容按照常理说来是 没有一样的。所以可以通过一个标题来查询这个发表时间。其实我们可以让每个 title 或 time 下的内容都对应一个编号,那就是字段——“ id ”:字段“ id ”是一个人们默认的首选字段,其它字段下的内容可以重复出现,但这个字段却是从 1 开始增大的阿拉伯数字。在设置这 个字段时,要设置主键、索引、唯一以及 auto-increment 。这个 auto-increment 就是自动增加的意思。教当任一字段增加内容 时,这个字段就自动增加 1 ,也就是说,任一字段都对应一个唯一的 id ,学比如 1 、 2 、 0 …… 实下面谈谈新闻部分字段的建立: 1. id :意义为每个新闻的编号,它是唯一的,类型为 tingint ,这个 tingint 类型无须指施 定长度,系统默为 4 ;在“额外”中选择 auto-increment ,并选择主键。 过2. author :意义为作者 (新闻发布人),设置类型为 varchar ,设置这个字段长度时,如程设果考虑作者均为中国人,则 8 个字节为上限( 4 个汉字),但如果考虑到作者 可能为外国人, 8 个字节显然太少了,对其它字段也存在同样的问题,在这里偶们把长度设置为 8 吧。 3. title :意义为新闻标题,类型为 varchar ,长度为 60 吧,属性为 primany key 。 计 4. content :意义为新闻的内容,类型为 text 。这个类型无须设置长度了。 5. source :意义为新闻的来源,类型为 varchar ,长为 60 。 6. date :意义为发表时间,类型为 datetime ,长度无须设置,属性为 primany key 。 下面补充以下字段类型的相关内容: 1 . date :时间和日期类型。时间和日期类型还包括以下: ⊕ datetime : 0000-00-00 00:00:00 ⊕ date: 0000-00-00 ⊕ timestamp: 00 ( 14 个 0 ,长度取决于显示尺寸) ⊕ time: 00:00:00 ⊕ year: 0000 2 . conten t 字段代表新闻内容,由于其容量可能会很大,因此采用 text 类型(最多支持 65535 字节) 3 . title 字段设置为 primany key ,如果不会有一条以的新闻具有相同的发表时间, date 字段也可以作为 primany key ,这样今后对新闻的排序和检索会更加方便。 4 . text 类型的字段虽然也属于一种字符类型,但其大小不能指定,如果设置长度,则系统会提示 SQL 语句出错。 10-2新闻程序的基础 我们添加、取出、修改、删除新闻都必须首先做一件事,那就是连接主机,选择数据库,向数据库发出请求。介绍三个重要的 MySQL 语句,分别是: mysql_pconnect( ) (连接主机), mysql_select_db( ) (选择数据 库), mysql_query() (向数据库发出请求)。 (一)连接数据库的基础 1 . mysql_pconnect( ) 它的作用是连接主机。 语法为: mysql_pconnect( “ 要登陆的主机 ”,” 登陆时的用户名 ”,” 密码 ”); 如 mysql_pconnect( “localhost”,”root”,””); 其中的“ localhost ”、“ root ”都是 phpmyadmin 默认下的主机名和用户名,并且密码为空。同功能的函数还有 mysql_connect( ) 。语法是一样的,区别在于前者开启一个长期连接,且无法使用 mysql_close() 函数关闭,而后者使用完后要用 mysql_close() 及时的关闭。对于一个网站来说,使用前者比后者好。这样可以减轻 MySQL 服务器处理连 接和关闭连接的负担。 这个函数成功连接后,会返回一个连接 ID 。因此,这个函数一般这样写: $link= mysql_pconnect( ); 说到这,补充一个函数 mysql_close() , 语法为: mysql_close(“ 要关闭的连接 ID”); 比如: mysql_close($link); 注:所有 ( ) 内都为字符串,有 $ 符号时就无须 ”” 了。 2 . mysql_select_db( ) 它的作用是选择一个数据库为当前数据库。以后的操作就都在这个数据库中进行了。这个函数如果执行成功,返回一个 true ,否则返回 false 。 语法为: mysql_select_db( “ 数据库名称 ”,” 连接的 ID”); 第二个参数可以省略,它会自动寻找并连接最后一个使用的连接 ID 。 在本程序中,这个语句偶们写成: mysql_select_db( “yayu”,$link); 3 . mysql_query() 它的作用是向服务器发出一个提出请求的字符串。 语法为: mysql_query(“ 提出问题的字符串 ”, 连接 ID); 其中第一个参数是一个完整的 MySQL 语句,第二个参数可以省略,偶一般是把它省略的。 在使用这个函数前应该先用 mysql_select_db( ) 指定要使用的数据库。 当提问的字符串是 update 、 insert 或 delete 时,函数返回的结果是 true 或 false ,表明查询是否成功,如果提问字符串是 select 语句则返回一个结果 ID ,如果 select 发生错误,则返回 false 。 (二)向数据库发出请求语句基础知识 ():向数据库插入数据 。 语法A: insert into 数据表名(字段1,字段2,……) values(“ 字段1 d 的内容 ”,” 字段的2内容 ” …… ) 语法B: insert into 数据表名 set 字段1 =” 字段1的内容 ”, 字段 2=” 字段 2 的内容 ”, …… 对A中,字段名可以省略,但后面的 values 部分的内容必须要和 phpmyadmin 中定义的字段顺序一样。 下面请看例子: A: insert into news(title,date,author,source,content) values($title,$date,$author,$source,$content) 注:上面的“ $ ……“代表了要添加字段的内容,定义时: $ …… = 内容 ; B: insert into news set title=$title,author=$author 注:如果内容是数字,则 ”” 可以省略。 ():删除数据表中的数据 语法: delete from 数据表名 where 指定地点 limit 数字 如果没有“ where 指定地点”则表中所有数据都没了。“ limit 数字”可以告诉服务器可以删除的最大行数。 例子: delete from news where id=$id limit 1 3. select () : 检索数据 语法: select 字段名1 , 字段2 , …… from 数据表名 where 地点 如果想列出所有记录中所有列的数据,可以使用“ * “代表字段名。 例子:A: select id,author from news where id=$id B: select * from news where id=$id ():更新数据 语法和 insert 几乎是完全一样的。 如: update news set author=$author,title=$title where id=$id 值得注意的是,使用 update 语句时,要注意使用 where 字句,否则可能会导致大量的数据丢失。比如: update news set author=” 芽雨 ” 10-3 新闻程序的算法 (一)添加新闻 添加新闻既是向数据库添加新的数据。 1. 标签为单行文本框 常用的属性有: name, type 。 name 属性指定了变量的名称,既这个名称代表了这个 中的内容。 type 属性指定了 中内容的性质。如果 type=text ,则为 一般性的文字。如果 type=password ,则这个“ ”中的内容在浏览器一律以黑点显示,这样可以在输入内容时不 会在无意中被他人见到而造成数据安全问题。 标签为多行文本框,常用属性为 name 。 在本程序中此段程序如下所示: 在“ name="author" ”中的 "author" 就代表了“ ”中的内容。同样的,这个 "author" 也可以是 "title" 或者其他,值得注意的是,这个 "author" 和字段 author 是不一样的。偶在这个地方提到 两个非常相似的概念:字段 author 和变量 $author (上面的 ”author” 实际上就是 $ author ,因为它代表了 “ ”中的内容)。虽然它们几乎是同名的,但可绝对不是一回事。 Author 是数据表 news 里的一个字段名, PHP 用它来有限定的访问 MySQL 中的数据,在程序中是不能用其它的字符替换的;而 $author 是本程序中用户自己设定的变量符号,其值由 “ ”中对应元素的 name 属性得到。既然它只是变量符号,偶们就可以使用任意字段,只要保证与表单中对应元素的 name 属性一致就可。之所以选择用与字段名相同的字符,是因为这样就不必再费力去多记一个变量名而已。 2. 标签 当偶们填好这些内容后,只要提交就可以了,那么这一过程又是如何实现的呢 下面偶们再来看以下的程序: 这里的 type="submit"/ type="reset" 分别代表提交和重写新闻。 value 属性的内容在此按钮上显示出来。 name=" reset"/ name="submit" 中的含义和上面所说的是一样的。 (二)新闻程序的算法 先在新闻首页上显示新闻的标题及其他附加内容(如发表时间),这可以用循环输出的办法输出所有的新闻的标题。要查看具体新闻的内容时,点击新闻标题的超级链接进入一个新的 页面查看这条新闻。在开始这程序之前,链接好数据库。当新闻很多时,偶们就要给新闻分页了,偶们设置好每页显示 10 条新闻。 具体的分页程序如下: $respage = mysql_query("SELECT COUNT(*) FROM news;"); " $echopage .= "".$pages." 页 "; 第一页 最后一页 ";
$echopage .= "
href=".$_SERVER["PHP_SELF"]."page=$next> 后一页
$echopage .= "
$echopage .= "";
对这段程序偶就不做详细的讲解了。因为很麻烦,再说这和新闻程序的算法不是一回事,呵呵。在用的时候,偶们在输出的新闻标题后面这样写就可以了:
echo "
放在后面是因为 $echopage. 里面包含了选择去第几页的程序。
偶们再来看以下程序:
1 : $sql="SELECT * FROM news order by id desc LIMIT $now,$recordnum";
这里的“ order by id desc ”意为驱除的记录是按编号由大到小的顺序输出的,换句话说就是新闻的输出总是新发表的在前面。 “ LIMIT $now,$recordnum ”限制了新闻输出的数目, id
的大小在 $now,$recordnum 之间,具体 $now,$recordnum 的数值请看上面的分页程序的讲解(粗黑体字部分)。
2 : $res=mysql_query($sql);
这条语句意思是向服务器发送请求,并将返回的结果保存在 $res 中。
3 : $rows=fetch_assoc($res);
这条语句意思是将查询结果 $res 的内容拆到一个数组 rows 中。如果 $res 中没有数据,函
数返回 false 值。 fetch_assoc( ) 函数的作用和 mysql_fetch_row() 是一样的。
4 : while($rows)
{
echo "
echo "
href='id=".$rows["id"]."'
target=_blank>".$rows["title"]."[".$rows["date"]."]
echo "
}
while($rows) 便是按 id 的由大到小的顺序输出新闻的。 $rows["title"] ,
$rows["author"] 就是数组形式的内容了。
10-4 新闻程序的算法
和查看新闻的程序一样,偶们要先列出所有的新闻标题,然后在选择具体的新闻进行修改、删除操作。在这里列出新闻标题时,比 的程序多了一条语句,那就是输出: href='id=".$rows["id"]."' target=_self> 修改
具体的程序如下:
if(@$_GET["id"])
{
$id = $_GET["id"];
$sql="SELECT * FROM news WHERE id=$id";
$res = mysql_query($sql);
$row=fetch_assoc($res);
$edit = "
";echo $edit;
}
复习及作业布置:
扩展学习参考:
课后反思:
教学过程:
新课讲解:
(1)用 phpmyadmin 建立数据库首先建立一个数据库 (2)新闻程序的基础
(3)新闻程序的算法 (4)新闻程序的算法
授课章节:第十一章 PHP会话控制
课时 4学时
教学目的:通过学习,学生可以掌握PHP页面间参数传递的所有方法,页面跳转的方法,使用Cookie和Session实现PHP会话控制的方法,结合“新闻发布系统”使用Cookie和Session实现该系统安全访问与权限控制。
版权声明:本文标题:PHP程序设计教案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1708692219h529463.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论