当前位置: 首页 > 网页教程

网页教程

PHP数据库动态获取部门信息

PHP数据库动态获取部门信息

一、案例描述

1、 考核知识点

SQL的连表查询

2、 练习目标

Ø 熟练掌握连表查询,能够根据需求修改现有代码以实现功能

3、 需求分析

在添加员工信息时,一般员工所属部门是不允许用户手动输入的,而是通过动态查询数据库,获取到部门表数据,以下拉菜单的形式展示到表单中,以供选择。下面就在【案例3-1】的基础上,完成员工添加及修改时动态获取部门信息的功能。

4、 设计思路

1) 修改showList.php文件的SQL语句,使用连接查询完成数据获取。

2) 在显示添加表单前获取部门表数据。

3) 在添加员工页面中以下拉菜单来展现部门数据。

4) 修改empAdd.php文件中保存合法字段的$fields变量。

5) 在显示修改表单前获取到部门数据。

6) 在修改员工页面中以下拉菜单来展现部门数据。

7) 修改empUpdate.php文件中保存合法字段的$fields变量。

二、案例实现

1修改empAdd.php文件,在显示添加表单前需要获取部门表数据,具体代码如下:

……

//没有表单提交时,显示员工添加页面,从部门表获取部门信息

//编写SQL语句,用于查询部门表数据

$sql = 'select * from emp_dept';

//调用fetchAll()函数,执行SQL并进行数据处理,把处理后的部门数据赋值给$emp_dept

$emp_dept = fetchAll($sql);

//显示员工添加页面

define('APP', 'itcast');

require './add_html.php';

上述代码中,在展示添加员工表单前,先通过执行select * from emp_dept”获取到了部门信息,然后再载入员工添加页面add_html.php

3修改add_html.php文件,在添加员工页面中以下拉菜单来展现部门数据,关键部分代码如下:

……

<th>所属部门:</th>

<td>

<!--以下为select下拉框的关键代码-->

<select name="d_id">

<?php foreach ($emp_dept as $row) { ?>

<option value="<?php echo $row['d_id']; ?>"><?php echo $row['d_name']; ?></option>

<?php } ?>

</select>

<!select下拉框结束-->

</td>

……

在上述代码中,主要将原本部门的输入文本框变为了下拉菜单,在其中使用foreach将保存部门信息的数组进行遍历,放入到<option>标签中。需要注意的是,<option>标签的value值需要保存的是部门ID,而非部门名称,表单实际提交的将会是部门ID

此时访问showList.php文件,并点击“添加员工”链接,跳转到员工添加页面,运行结果如下图所示。

php网页制作作业

从上图可以看到,员工所属部门已经全部获取并显示到了下拉菜单中。

4、由于表示员工所属部门的表单元素的name属性不再是e_dept,而变成了d_id。因此需要修改empAdd.php文件中保存合法字段的$fields变量,修改代码如下:

//声明变量$value,用来保存字段信息

$fields = array('e_name', 'd_id', 'date_of_birth', 'date_of_entry');

完成上述修改后,动态获取部门信息并添加员工数据的功能就可以实现了。

5、修改empUpdate.php文件,与员工添加类似,在显示修改表单前先获取到部门数据,具体代码如下:

……

//当没有表单提交时,查询当前要编辑的员工信息,展示到页面中

//编写SQL语句,查询相应ID的员工数据

$sql = "select * from `emp_info` where `e_id` = $e_id";

//使用fetchRow()函数处理数据

$emp_info = fetchRow($sql);

//编写SQL语句,查询所有部门信息数据

$sql = 'select * from emp_dept';

$emp_dept = fetchAll($sql);

//显示员工修改页面

define('APP', 'itcast');

require './update_html.php';

上述代码中,在展示修改员工表单前,先通过执行select * from emp_dept”获取到了部门信息,然后再载入员工添加页面update_html.php

6、修改update_html.php文件,与员工添加页面类似,需要修改表单以显示部门信息,关键部分代码如下:

……

<th>所属部门:</th>

<td>

<!下拉菜单开始-->

<select name="d_id">

<?php foreach ($emp_dept as $row) { ?>

<!在输出每个部门信息时,判断是否为该员工当前所属部门,如果是设置为默认-->

<option value="<?php echo $row['d_id']; ?>" <?php if ($emp_info['d_id'] == $row['d_id']) echo "selected='selected'"; ?>><?php echo $row['d_name']; ?></option>

<?php } ?>

</select>

<!下拉菜单结束-->

</td>

……

上述代码,显示部门信息的过程与员工添加基本一致。唯一不同的是,需要在遍历部门信息时,与员工所属部门ID进行比较,以便将员工当前所属的部门设置为下拉菜单的默认项。

7、由于表示员工所属部门的表单元素的name属性不再是e_dept,而变成了d_id。因此需要修改empUpdate.php文件中保存合法字段的$fields变量,修改代码如下:

//声明变量$value,用来保存字段信息

$fields = array('e_name', 'd_id', 'date_of_birth', 'date_of_entry');

至此就完成了在添加和修改员工时,动态获取部门信息的功能。

三、案例总结

1、在select下拉菜单中,option的值表示员工所属的部门,而员工表中保存的部门信息是其部门id,因此option的值也是部门id

  2、在添加和修改员工信息时,都需要经过字段合法性验证。而在修改表结构后,员工表字段发生了变化,因此需要修改保存合法字段的变量数组。