车库管理课题设计要实现的是:1、车辆进入车库时登记车辆的车牌号码、车辆类型(大、小型车)和进入车库的时间;2、车辆驶离车库时登记驶离时间,计算停车时间,并按车型收取停车费用。

需实现的功能明确后,现在可以着手设计数据库,为有针对性的解决问题,车库管理员登录和管理等不在本文赘述。

演示预览

源码下载

数据表结构如下:

CREATE TABLE `garage` (
	`id` int(6) NOT NULL auto_increment,
	`number` varchar(8) NOT NULL,
	`type` tinyint(1) NOT NULL,
	`in` datetime NOT NULL,
	`out` datetime default NULL,
	`fees` decimal(6,2) default NULL,
	PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

说明:

id:记录自动编号,主键

number:车牌号码。

type:车型。0为小型车,1为大型车

in:车辆驶入时间

out:车辆驶离时间

fees:实收停车费

页面设计

在dreamweaver(下称“dw”)中新建页面并建立数据库连接,为避免中文出现乱码,请用手工修改连接php文件的代码,在“?>”前一行插入代码:“mysql_query(“set names ‘utf8′”); ”,如果你的数据库使用的不是utf8中文字符集,请根据数据库做相应修改。

1、车辆入库

新建文件:in.php

车辆入库的实际上和我们上课学习的留言本中的“我要留言”一样,是在数据表中添加一条记录。我们需要添加哪些内容呢?id、number、type和in这四个字段是入库时需要记录的。id和in可以通过系统自动获取,number和type需要车库管理员手工录入。

dw的插入记录表单向导为我们提供了便捷的新增数据表记录功能。

插入记录表单

id、in、out、fees显示为“隐藏域”,in的默认值:<?php echo date(‘Y-m-d H:i:s’); ?>,即in的默认值是当前时间。number默认值为“浙A”;type显示为“菜单”,并进入菜单属性设置如下图:

菜单属性

完成向导后,dw设计区显示如下图:

f3

最简单的车辆入库功能至此已实现,页面布局和美化不在本文讲述。

小技巧

在插入记录和修改记录时,能够通过设定默认值来获取数据的、暂不需要数值以及不需要更新的字段一般通过设定隐藏域的方法减少手工输入量,保持界面的简洁。

2、车库信息浏览

新建文件:list.php

在dw中,数据表信息的浏览、搜索等都是通过建立数据集,并将记录集绑定到网页上实现的。

(1)新建记录集

f7

按驶入时间降序排列记录集结果。

(2)绑定数据

  • 插入表格
  • 点击“绑定”中的RecordSet
  • 将各字段拖放到表格相应单元格

绑定数据

(3)重复区域

完成第(2)步后,此时网页只能显示一条记录,为了能够使所有记录都能够显示,dw服务器行为的重复区域提供了此功能。

选择表格的第二行。

操作要点:

点击表格上的任何一根边框以选择整个表格,然后将鼠标移到表格第2行最左边的边缘,但鼠标变成向右的实心黑色箭头时按下鼠标。

新建重复区域,显示所有记录。

(4)显示车型

现在,车库信息浏览基本完成,但是测试结果显示的车型是数字“0”和“1”,我们希望能够显示“小型车”或“大型车”。本文通过定义数组的方式来实现。当然,我们可以通过建立一个车型数据表,并通过表和表之间的关系连接来实现,这些留给有兴趣的同学自行去研究、挖掘。

转到dw的代码窗口,在第二行插入代码:<?php $carType=array(‘小型车’,'大型车’); ?>。定义后,数组$carType[0]的值为“小型车”,$carType[1]的值为“大型车”。

用dw的查找和替换功能将“$row_Recordset1['type']”替换为“$carType[$row_Recordset1['type']]

现在,车库信息浏览已全部完成。

小技巧

对于数量不多、且无需改变的一些数据,可以通过数组来设定,如在二手房中房屋朝向“东、南、……、东南……”等。

(5)为下一步做准备

新建php文件,命名为out.php。

在表格的第2行第6列输入“出库”,并选择文字,依下图操作:

a. 点击属性窗口中选择文字的连接文件,并选择out.php

链接文件浏览

b. 点击“参数”按钮,在参数窗口中“名称”下输入“id”(你可以自由命名,不是非得用“id”);点击“值”下“闪电”图标,选择动态数据中的“id”。

选择连接文件和动态参数

3、车辆出库

打开文件:out.php

车辆出库的本质是修改一条记录,需要修改out和fees这两个字段。out字段因可以通过设定默认值获取数值,因此是一个隐藏域,fees是实收停车费,因此我们需要根据不同的车型和停车时间来计算应收停车费。不同车型的单价与上文一样,可以通过数组的方式来实现,同样在第二行插入代码:

<?php
    $price = array(5, 10);
    $now = time();
?>

代表小型车5元/小时、大型车10元/小时,同时定义了一个当前时间的变量now。

dw的更新记录表单向导提供记录更新的功能。在执行向导前,需要首先建立记录集。

我们在上文已经为车辆出库做了一些准备工作,在车库信息浏览页面中,我们通过点击“出库”链接到out.php页面,并传递了一个变量id,这个变量的值是车库表中id字段的值,也就是对应了需要出库的那一条记录。因此,记录集需要进行筛选,如下图:

执行更新记录表单向导。除fees字段外,其他字段均为隐藏域,如图:

更新记录表单向导

out默认值:<?php echo date(‘Y-m-d H:i:s’,$now); ?>

fees默认值:<?php echo $passedtime * $price[$row_Recordset1['type']]; ?>

在fees的默认值中,出现了一个没有定义过的变量:$passedtime ,这个变量是计算得到的停车时间,但它是如何计算的呢?下文将进行讲解:

转到dw的代码窗口,在<body>下一行插入代码:

<?php
	$passedtime = round(($now - strtotime($row_Recordset1['in']))/3600);   //计算停车时间的小时数,并进行四舍五入运算
	if ($passedtime < 1) {   //不足一小时的,按一小时计算
		$passedtime = 1
	}
?>

以上代码的意思是,将现在的时间与驶入时间相减,得到停车时间的秒数,除以3600秒得到停车的小时数,然后进行四舍五入计算。并对停车时间$passedtime进行判断,如果停车时间小于1小时,按1小时计算。

现在,车辆出库的基本功能已经实现,为了使页面更加直观,需要在页面上显示车牌号码,驶入时间等等,请同学们自行绑定记录集的相关字段到页面上。

思考:

如何在页面上显示实际停车时间、计费停车时间等?请实现之。

4、搜索

新建文件:search.php

(1)根据车牌号码搜索某一辆车

在dw设计区插入表单、文本域和按钮。

搜索表单

文本域命名为:key。当然,也可以用别的变量名。

文本域属性

(2)获得搜索结果

搜索是如何实现的呢?搜索实际上是对数据表中的数据按照一定条件进行筛选,在dw中,我们可以通过记录集来实现。

新建记录集

通过表单变量key对字段number进行筛选,并按照驶入时间的降序对筛选结果进行排列。

(3)搜索结果显示

与车库信息浏览一节类似,详见该节(2)—(4)。

最后,制作首页,并把相关文件链接到首页,编辑和删除功能请自行完成。

5、总结

用dw制作php+mysql进行数据操作的网页,主要掌握dw的三项服务器行为功能:插入记录、更新记录和删除记录,其中插入记录和更新记录还可以通过向导来制作。我们学习过的留言本也应用了这三项主要功能。

理解了以上功能的含义后,就可以举一反三运用到其他网页的设计,比如新闻发布、简历、订餐等等。如:

插入记录:新增新闻、新建简历、新建订单

更新记录:修改新闻和简历、修改订餐信息

删除记录:删除新闻、简历和订单

实现这些基本功能后,剩下的工作只是网页的美化了。