实验2 DATABASE SOFTWARE练习实验实验类别:验证性实验级别:必做开课单位:软件学院软件工程系实验时数:12学时一、实验目的:1、了解DBMS系统的功能、Web based数据库的软件组成及工具;2、掌握数据库软件的使用方法、3、掌握php+mysql的数据库操作方法。
二、实验要求:1、安装相关软件并浏览软件自带的帮助文件和功能菜单,2、掌握PHP构建网页以及连接数据库的方法。
3、掌握phpmyadmin创建数据库与数据表的方法;4、了解mysql的命令以及与php衔接的语句5、了解网页构造的原理6、掌握dreamweaver的基本操作;三、实验设备:计算机、数据库管理系统如DB2,mysql 等软件。
四、建议的实验步骤:1、下载相应的数据库软件与工具软件;appserv下载地址:/drpeng/tech/index.php 下载专区,appserv。
2 停止机器上的网页服务器操作;WINDOWS XP进行以下操作:进入控制面板-管理工具查看是否存在Internet 信息服务,若存在,点击计算机图标,在网站那里点击,进到“默认网站”在右边显示页面。
选中该图标,并右键点开菜单,选择停止。
或者在工具栏上按‘■’图标停止该网站。
注:(若不停止该网站服务,则会影响安装)3、对appserv进行解压,并点击安装。
选择用户的路径,也可默认安装完成后则自动弹出页面,显示如附件内容。
表明appserv内所有软件成功安装。
4、在安装目录下的www文件夹就是IE中http://localhost的链接根目录。
于是你所有制作的网页可以置于该处便可浏览,为了方便管理,可以建立自己的文件夹如”myfolder”,再放入所有制作的网页文档。
此时http://localhost/myfolder就可以访问你所创建的网页。
注意:如果本教程的集成安装环境AppServ在win7上面使用有问题的话(会和 IIS 有一定冲突), 建议使用WampServer,这个集成环境对内含的组件的配置做了比较大的优化。
免费下载如下:/en/5、用实验室已经安装好的dreamweaver制作网页,详见dreamweaver的说明文档。
并放入自建文件夹,查看效果。
6、网上查找php网页资料,练习一两个php网页的制作过程,并查看效果7、登陆:/drpeng/tech/index.php,查看php与Mysql教程,练习与该系统相关的操作。
8、练习利用phpMyadmin 管理数据库,包括数据库,数据表的建立,插入,修改,删除,数据导出等操作。
9、练习从实验室数据库环境转移到另外一台电脑的数据库环境的技巧。
导出数据表,记录数据库用户名和密码。
备份所有的网页及相关文件。
将文件和数据库导出文件转移到另外的电脑,并导入该电脑的数据库。
对相应的网页进行数据库用户名密码的修改,确保网页能在此电脑上运行。
10、完成思考题11、实验报告上交后,验证同学的代码可用性。
注:以上具体步骤可参见附件1以及或相关书籍和网络资源。
五、思考题1)建立一个php页面,打印出现在的时间,同时计算出与2015年国庆节相差的天数,用适当的方式显示2)建立一个用户界面,对用户输入的两行字符串进行比较,取出最长匹配字符串并显示出来。
注意用户界面的美观性3)建立集体项目相关的数据库,并用一个页面该数据库内显示所有的表,要求用户点击该表名显示出所有结果。
并完成插入纪录,删除纪录以及修改纪录的功能。
注:所有的思考题均要求网页代码和运行后的界面。
注意界面设计及美观性。
附件一php+mysql 实例教程本实验以实例的形式教大家学习使用PHP,MYSQL与相关的APACHE服务器.必需的软件包括:easyapm.exe(apm是php,mysql,apache首个字母组合,所以此软件包含了此三个软件.) Dreamweaver (用于网页制作,习惯用frontpage的也可以用它).此教程主要教大家用php+mysql, 教程以一个简单的新闻系统为例,这其中涉及到了数据的添加,更新,查询,删除.数据库的操作也就主要是这四种功能,学会了做个简单的新闻系统,如果有兴趣的平时再尝试着做其它系统功能,那么慢慢就会熟练的了.在这里大家只要按此教程步骤一步一步跟着学跟着做就基本学会的了.此实验要求对PHP,HTML有一些基本的了解,如语法等.因此建议大家先借些PHP, html 的书看看.,在实验过程中主要是给出文件代码,并在代码中以注释的形式给大家讲解.大家认真看代码与注释,最好是把代码复到Dreamweaver中看,并把文件保存在服务器中测试.一:服务器软件配置说明.必需软件:easyapm (php+mysql+apache),此类软件有很多(如greenamp,现在叫kiss了,),这里为方便就选用这个了,如果大家对PHP有兴趣的建议大家学学(LMAP配置:linux+mysql+apache+php),下载easyapm安装后如果使用默认路径的话[如你解压到D盘中安装,那么usr为该软件目录,该目录下的www为网站服务器,把你做的网站代码放到里面就行了.把开地址:http://localhost 或http://127.0.0.1].local目录下的mysql4目录里的data目录为网站数据库保存地址.Dreamweaver. 用于网页制作.二:实验过程.2.1用phpmyadmin创建数据库.:大家进入phpmyadmin (http://127.0.0.1/phpmyadmin/)后,会看到有"创建一个新的数据库"这一功能,如下图所示:在我们的PHP,MYSQL学习中会以一个简单的新闻系统为例,所以我们首先要创建一个保存新闻相关信息的数据库, 首先创建一个名为"TEST"的数据库.点击创建按钮后会进入一个页面,要求为该数据库创建一个表,这里我们就先建"NEWS"这个表,字段数为"4"吧,点击"确定"进入表的字段参数设置页面,这里第一个字段名为"id",其类型选"bigint",长度值填一数字,就20吧,属性就不用填了,NULL就选"NOT_NULL"行了,意思是在添加数据时这个字段为必填,如果没填则会出错;默认这里也留空行了,额外就选"auto_increment"意思是该字段为自增长型,在添加一项数据时不用填这个字段它都会自动填入一数字.接着在旁边的主键那里选择上它,让这个id字段作为主键,一般数据表都会创建"id"字段作业主键以方便以后的操作.Id字段设置如下两图所示:接着设置第二个字段,字段名为"title",作业新闻的标题,类型就选"V ARCHAR"吧,长度写一数值,意思是标题不能输入字的个数超过这个数值,但这个数据的最大值为255,在这我们就填200吧.其它不用理了; 接着设置第三个字段了,字段名为"add_time",用来存放新闻添加的时间,类型先"V ARCHAR"吧,为什么不选"DATE"作业类型呢?因为选"DA TE"类型号在以后的添加等操作中会很麻烦,而用V ARCHAR类型可以实现"DATE"类型的功能而且操作起来很简单,长度100行了.第四个字段名为"content",用来存放新闻的主要内容,类型选"TEXT",就是文本内型,这种类型可以存放较多的字,这种类型的长度是不用填的;到这里所有字段都设置好了,点"保存"就可以了.2.2用phpmyadmin操作数据库的其它一些说明大家在phpmyadmin的左边先选择要操作的数据库就可以对该数据库进行相关的操作.如:在下拉选项中选择我们已经建好的"TEST"数据库.在左边就会出现该数据库的所有表,点击你要操作的表名就可以对该表进行操作.如:点击"NEWS"这个表.那么右边就会显示文表的相关信息,并有一些操作功能.如要在该表中添加一个新的字段可以点击上面的"SQL"按钮,那么就会出现SQL命令输入框,如我们要在"NEWS"表中的"title"字段之后添加一个名为"reporter",类型为"varchar" ,长度为100的字段可以输入这个命令:alter table news add reporter varchar(100) after title; 点击执行就行了.2.3 PHP.连接MYSQL数据库的代码<?php$hostname = "localhost"; //主机名,可以用IP代替$database = "test"; //数据库名$username = "root"; //数据库用户名$password = "sa"; //数据库密码$conn = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error() ,E_USER_ERROR);mysql_select_db($database, $conn);$db = @mysql_select_db($database, $conn) or die(mysql_error());?>以后任何一个涉及到数据库操作的页面都要使用到这些代码,大家可以把这些代码单独存为一个文件,如建一个conn.php的文件保存这些代码,那么在以后要用到这些代码时只要include 这个页面就可以了.如add.php这个页面要要添加数据入数据库,那么在add.php里include"conn.php"; 就可以了.2.4 PHP网页向MYSQL数据库添加数据2.4.1这里要有一定的html知识,建议大家花半天时间到图书馆找几本html的书看看,先作初步的了解!以后用多了就熟的了.2.4.2创建add_news.php文件,让用户输入新闻信息用Dreamweaver 新建一个add_news.php文件,此页面作为用户输入欲添加的新闻内容.具体步骤如下:(1)打开Dreamweaver新一个php文件.把这个文件以:add_news.php为名保存在服务器上. .如我的easyapm安装在D盘,则保存在: D:\usr\www\tech ,这里的tech为新建的一目录用于保存该站的.打开Dreamweaver新建时要选动态页才能选文件类型为php.的.创建并以add_news.php保存好后就开始制作界面.大家可以选择”设计”方式:如下图:然后选菜单中的插入按钮插入表格先插入一表格,插入后可以在下面填定表格属性..在表格中输入提示用户输入新闻信息的内容”请填写要添加新闻的信息”接着再同理插入另一个表格用于给用户输入新闻标题与内容.在插入表格后,在该表格中插入表单,表单的插入与表格插入差不多,也是选菜单上面的插入按钮可以选择插入表单的/,插入的表单的方式选post,动作填save_news.php,意思是表单的内容会传到save_news.php 这个页面处理.接着大家可以在表单里嵌套表格(刚学这样会易理解点,以后大家用熟了就应该尽量少用嵌套表格方式).如这里就在表单里插入一个两行两列的表格,以输入新闻标题与内容,如下图所示:接着在新闻标题的右边那个表格上插入一输入框给用户输入新闻标题.选在那个位置.”插入”—“表单”—“文本域,”,如下图:按确定就行了.接着在底部设置其属性,文本域就为”title”,就是该输入框的名称.在save_news.php中就要以这个名称来接收传过来的新闻标题了,接着在新闻内容的右边格插入一文本输入区域给用户输入新闻内容.因为内容会较标题多,所以要插入”文本区域”而非”文本域”.属性中文本域的名为”content”. ,最后,换一行输入一提交按钮就可以了.按钮的插入与输入框插入一样,也在菜单中的”插入”表单中可选.最后看到的效果图如下:到这里新闻提交页面就做好了,其完整代码如下所示,其中作了一些小小的改动,如提交按钮值等,这些不会影响功能.至于网页的界面美工就不是学一天半天就可以做得很好看的,这需要一定的经验积累,而且单用设计的方式设计网页界面也不能做出很好看的页面,必需要较熟悉html代码,以及借鉴网上一些的优秀交果代码.add_news.php完整代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>添加新闻输入页面</title><style>form{padding:0px;margin:0px;}</style></head><body><table width="70%" height="30" border="0" align="center" cellpadding="0" cellspacing="0"> <tr><td align="center">请填写要添加新闻的信息</td></tr></table><form action="save_news.php" method="post"><!--这里是一个表单,意思是以post方式把下面输入的数据传到save_news.php页面. ,表单以</form>结束--><table width="70%" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td width="30%" align="right">新闻标题</td><td width="70%" align="left"><input type="text" name="title" size="30"/></td></tr><tr><td align="right">新闻内容</td><td align="left"><textarea name="content" cols="30" rows="5"></textarea></td></tr></table><table width="70%" height="30" border="0" align="center" cellpadding="0" cellspacing="0"> <tr><td align="center"><input type="submit" name="submit1" value="确定添加"/></td></tr></table></form></body></html>2.4.3创建save_news.php文件,接收用户输入新闻信息并添加进数据库save_news.php文件代码如下所示:////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<? include "conn.php" ?> <? //调用conn.php文件,用于连接到数据库?><?//下面先接收从add_news.php传过来的新闻标题与新闻内容.//PHP变量是以$开头的,如$a,$b 变量,与C,C++一样都是以";"分号结果一句子;注释也与C,C++一样.// 因为add_news.php表单定义的传输方式为POST所以这里要对应用POST接收,如果定义为GET则要用GET接收.$title=$_POST[title]; //这果申请一$title变量用于保存从add_news.php传过来的新闻标题title 值.$content=$_POST[content]; //同上,保存新闻内容值.//下面用一if语句检测系统的香港时区的时间,我们用的PHP一般以香港时间为准的,if(function_exists('date_default_timezone_set')) {date_default_timezone_set('Hongkong');//该函数为PHP5.1内置.}$add_time=date("Y-m-d");//这句话把获取到的系统当前时间赋给变量$add_time$sql = "INSERT INTO news (title,content,add_time) V ALUES ('$title','$content','$add_time')"; $result = @mysql_query($sql,$conn) or die(mysql_error()); //如果添加成功,返回真给$result ,否则为false.if($result){ echo "添加新闻成功,<a href='add_news.php'>返回继续</a>";}else{echo "添加新闻失败,<a href='add_news.php'>请返回</a>";}?>// 在此,通过以上两个页面就完成了数据的添加.2.5 PHP网页如何查询MYSQL数据2.5.1普通单条数据查询用Dreamweaver 新建一个read.php文件,在此页面写一条简单查询单条数据的语句. read.php 文件代码如下所示:<? include "conn.php" ?> <? // 注释:调用conn.php文件,用于连接到数据库?><?//下面为查询id=1的新闻数据.$query = "select * from news where id=1";//查询条件id类型为int 型所以直接写1就行了,如果是字符或字符串型则用"'",单引号引起$res = mysql_query($query, $conn) or die(mysql_error());$row = mysql_num_rows($res); //如果查询成功这里返回真否则为假if($row){$dbrow=mysql_fetch_array($res);$id=$dbrow['id']; //把数据库里的相应数据赋给变量$title=$dbrow['title'];$content=$dbrow['content'];$add_time=$dbrow['add_time'];echo $id; //PHP的输出用echo ,这里输出ID值.echo " ";echo $title."<br>"; //<br>为换行echo $add_time;echo "<br>";}else{echo "无相关数据";}?>2.5.2 结果不止一条数据的查询写法用Dreamweaver 新建一个read_2.php文件作测试,在此页面写一条查询条件,但查出的数据结果可能不唯一.read_2.php 文件代码如下所示:<? include "conn.php" ?> <? //调用conn.php文件,用于连接到数据库?><?echo "下面为查询标题中有信工学院四个字的的新闻数据.<br>";$query = "select * from news where title like '%信工学院%'"; //这样可能有很多标题包含有这四个字的新闻都会显示出来. 大家可以添加多几条新闻试试.还可以用OR 或AND 限制更多查询条件. $res = mysql_query($query, $conn) or die(mysql_error());$row = mysql_num_rows($res); //如果查询成功这里返回真否则为假if($row){for($i=0;$i<$row;$i++) //这里用一个FOR 语句查询显示多条结果{$dbrow=mysql_fetch_array($res);$id=$dbrow['id'];$title=$dbrow['title'];$content=$dbrow['content'];$add_time=$dbrow['add_time'];$content = str_replace("\r", "<br>", $content); //用替换函数把新闻内容中的空格与换行符换回html语法输出.$content= str_replace(" ", " ", $content);echo $id; //PHP的输出用echoecho " ";echo $title."<br>"; //<br>为换行echo $add_time;echo "<br>";echo $content;echo "<br>";echo "--------------------------------";echo "<br>";}}else{echo "无相关数据";}?>// 到此就结束了数据查询的学习.2.6 PHP网页如何更新MYSQL数据2.6.1 .第一步news.php文件,显示所有新闻让你选择修改一般的数据更新都是先显示出所有的数据,然后选中一条或多条数据更新的.所以这里我们也先显示出所有的新闻标题,再选择性地更新.新建一个名为:news.php的文件显示所有新闻标题,代码与read_2.php差不多,只是改了查询条件与显示方式.其具体代码如下所示:news.php<? include "conn.php" ?> <? //调用conn.php文件,用于连接到数据库?><?echo "下面所有新闻数据.<br>";$query = "select * from news ";$res = mysql_query($query, $conn) or die(mysql_error());$row = mysql_num_rows($res); //如果查询成功这里返回真否则为假if($row){for($i=0;$i<$row;$i++) //这里用一个FOR 语句查询显示多条结果{$dbrow=mysql_fetch_array($res);$id=$dbrow['id'];$title=$dbrow['title'];//$content=$dbrow['content']; 内容不用显示了.这里把它注释掉$add_time=$dbrow['add_time'];//$content = str_replace("\r", "<br>", $content); //用替换函数据新闻内容中的空格与换行符换回html语法输出.//$content= str_replace(" ", " ", $content);echo $id; //PHP的输出用echoecho " ";echo "<a href='edit_news.php?id=$id'>$title.</a>"; //这里意思是以GET方式把id这个变量传到edit_news.php这个页面.echo "<br>";}}else{echo "无相关数据";}?>//////////////////////////////////////////////////////////////////////////end news.php/////////////////////////////2.6.2 .第二步edit_news.php文件,显示具体改的那条新闻的信息并输入改修内容建立一个名为edit_news.php的PHP文件.这个文件用于接收从news.php传过来的id值,以id值确定要修改的新闻是那一条.其代码如下所<? include "conn.php" ?> <? //调用conn.php文件,用于连接到数据库?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>修改新闻</title><style>form{padding:0px;margin:0px;}</style></head><body><?$id=$_GET[id]; //先接收从news.php传过来的ID值以确定要修改的新闻//接着查出该新闻有关数据.$query = "select * from news where id=$id";$res = mysql_query($query, $conn) or die(mysql_error());$row = mysql_num_rows($res); //如果查询成功这里返回真否则为假$dbrow=mysql_fetch_array($res);$id=$dbrow['id'];$title=$dbrow['title'];$content=$dbrow['content'];$add_time=$dbrow['add_time'];?><table width="70%" height="30" border="0" align="center" cellpadding="0" cellspacing="0"> <tr><td align="center">请填写要修改新闻的信息</td></tr></table><form action="save_edit_news.php" method="post"> <!---把内容传到save_edit_news.php 保存--><table width="70%" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td width="30%" align="right">新闻标题</td><td width="70%" align="left"><input type="text" name="title" size="30" value="<? echo $title; ?>"/></td></tr><tr><td align="right">新闻内容</td><td align="left"><textarea name="content" cols="30" rows="5"><? echo $content; ?></textarea></td></tr></table><table width="70%" height="30" border="0" align="center" cellpadding="0" cellspacing="0"> <tr><td align="center"> <input type="hidden" name="id" value="<? echo $id; ?>" /> <!----这里很重要,以隐藏方式把ID值也传到save_edit_news.php文,以确定更新的具体是哪条新闻---><input type="submit" name="submit1" value="确定修改"/></td></tr></table></form></body></html>2.6.3第三步save_edit_news.php文件,用于把修改的内容更新到数据库建立一个名为save_edit_news.php的PHP文件.这个文件接收从edit_news.php传过来的数据,并把它们更新到相应的数据库中.其代码如下所示<? include "conn.php" ?> <? //调用conn.php文件,用于连接到数据库?><?//先接收传过来的数据.$id=$_POST[id];$title=$_POST[title];$content=$_POST[content];$query = "Update news set title='$title',content='$content' where id=$id";$res = mysql_query($query, $conn) or die(mysql_error());//echo "修改成功";if($res){?><script language=javascript>window.alert('修改成功,请返回');history.back(1);</script> <?}else{?><script language=javascript>window.alert('修改失败,请返回');history.back(1);</script><?}?>//////////////////////////////////////更新数据的教程到此结束////////////////////////////////////////////////2.7 PHP网页如何删除MYSQL数据2.7.1 第一步在news.php文件基础上修改,显示所有新闻让你选择删除一般的数据更新都是先显示出所有的数据,然后选中一条或多条数据更新的.所以这里我们也先显示出所有的新闻标题,再选择性地更新.新建一个名为:news.php的文件显示所有新闻标题,代码与read_2.php差不多,只是改了查询条件与显示方式.其具体代码如下所示:news.php<? include "conn.php" ?> <? //调用conn.php文件,用于连接到数据库?><?echo "下面所有新闻数据.<br>";$query = "select * from news ";$res = mysql_query($query, $conn) or die(mysql_error());$row = mysql_num_rows($res); //如果查询成功这里返回真否则为假if($row){for($i=0;$i<$row;$i++) //这里用一个FOR 语句查询显示多条结果{$dbrow=mysql_fetch_array($res);$id=$dbrow['id'];$title=$dbrow['title'];//$content=$dbrow['content']; 内容不用显示了.$add_time=$dbrow['add_time'];//$content = str_replace("\r", "<br>", $content); //用替换函数据新闻内容中的空格与换行符换回html语法输出.//$content= str_replace(" ", " ", $content);echo $id; //PHP的输出用echoecho " ";echo "$title"; echo " "; echo "<a href='del_news.php?id=$id'><font color='red'>删除</font></a>";//这里选择性删除,把id值传到del_news.php中,以确定具体是删那一条数据.echo "<br />"; }}else{echo "无相关数据";}?>2.7.2第二步del_news.php文件,用于操作删除数据建立一个名为del_news.php的PHP文件.这文件接收从news.php传过来的id值,再把数据库中id等于这个传过来的id值的数据删掉.其代码如下所示<? Include "conn.php" ?><?$id=$_GET[id];$sql = "delete from news where id=$id";$result1 = @mysql_query($sql,$conn) or die(mysql_error());if($result1){?><script language=javascript>window.alert('成功删除,请返回');history.back(1);</script> <?} //result1==true?>//////////////////////////////////////end code ////////////////////////////////////////////总结按上面的步骤认真学习就基本会用PHP MYSQL做动态网页了.至于页面效果要做得好看就要平时多积累!。