科技行业企业网站设计 数据库设计
1.数据库概要说明
采用MySQL数据库,用来存储图书相关信息、新闻相关信息、管理员信息等,这里将数据库命名为db_project,其中包含了3张数据表,用于存储不同的信息。
2.数据库概念设计
通过系统功能结构的确定,规划出系统中使用的数据库实体对象及实体E-R图。企业网站系统的主要功能之一是PHP业界的新闻发布,因此需要规划新闻实体,包括新闻编号、新闻标题、新闻内容、发布时间和更新时间等属性。新闻实体E-R图如下:
图书开发相关信息同样要保存到数据库中。根据该需求规划图书实体,包括图书编号、图书类别、简述内容和新书名称等属性。图书实体E-R图如下:
管理员信息,包括管理员的用户名和密码属性
3.数据库逻辑设计
根据设计好的E-R图在数据库中创建数据表
- think_news (新闻信息表)
- think_book (图书信息表)
- think_admin (管理员信息表)
后台管理模块设计1.Framework框架技术
后台模块的设计理念是,将所有的操作都放置在同一页面中,么米有不同页面的跳转功能。然后根据不同数据层面之间,用控制器来控制哪些数据层面应该显示,哪些数据层面应该隐藏。这里需要一个Framework,即框架的理念。所有的功能体现,都交由控制器中Framework控制实现,然后指定单一的其他控制器类进行逻辑处理。也就是说,管理员看见的后台界面都是由Framework自动调配的。Framework框架关键代码如下:
public function framework(){
if(session('PHP') == 'phper_ym@163.com'){
$string = I('id');
switch($string){
case "addNews":
$this->assign('language_1',"block");
$this->display('adminIndex');
break;
case "updateNews":
$this->assign('language_2',"block");
$this->assign('language_1',"none");
$this->display('adminIndex');
break;
case 'viewUpdateNews':
$new = D("News");
$data = $new->s elect();
$count = $new->count();
$Page = new ThinkPage($count,3);
$show = $Page->show();
$list = $new->order('id')->limit($Page->firstRow.','.$Page->listRows)->s elect();
$this->assign('pc',$list);
$this->assign('page',$show);
$this->assign('language_3',"block");
$this->assign('language_1',"none");
$this->display('adminIndex');
break;
}
}else{
$this->assign('hint','您没有操作权限');
$this->assign('url','__URL__/admin');
$this->display('information');
}
}- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
2.更改密码和项目所需数据表的操作
更改密码关键代码如下:
public function change(){
if(session('PHP') == "phper_ym@163.com"){
$string = I('pwd');
$stringg = I('pwdd');
if($string == $stringg){
$pc = M('admin');
define(PHP,'_php');
$pc = $pc->where('id');
$data['pwd'] = md5($string."_php");
$pc = $pc->where('id=1')->data($data)->save();
$this->assign('hint','更改密码成功');
$this->assign('url','__URL__/adminIndex');
$this->assign('language_1',"block");
$this->display('informaton');
}else{
$this->assign('hint','两次密码输入不一致');
$this->assign('url','__URL__/adminIndex');
$this->assign('language_1',"block");
$this->display('information');
}
}else{
$this->assign('hint','您没有操作权限');
$this->assign('url','__URL__/admin');
$this->display('information');
}
}- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
在Framework中完成项目所需数据表,关键代码如下:
case "back":
$pc = M('project');
$pc = $pc->query('show tables');
$this->assign("type","block");
$this->assign('list',$pc);
break; 3.左侧功能菜单区
利用CSS+DIV技术结合HTML标签编写功能菜单布局和样式修订,将每个列表内容都用
<div class="left">
<div class="leftLi">增加新闻div>
<div class="liDiv">
<ul class="liDivUl">
<li>
<a href="__URL__/framework/id/addNews">单条增加新闻a>
li>
ul>
div>
<div class="leftLi">更新新闻div>
<div class="liDiv">
<ul class="liDivUl">
<li><a href="__URL__/framework/id/updateNews">操作代码式更新a>li>
<li><a class="aHref" href="__URL__/framework/id/viewUpdateNews">操作界面式更新a>li>
ul>
div>
<div class="leftLi">增加新书div>
<div class="liDiv">
<ul class="liDivUl">
<li><a href="__URL__/framework/id/addBook">单条增加新书a>li>
ul>
div>
<div class="leftLi">更新新书div>
<div class="liDiv">
<ul class="liDivUl">
<li>
<a href="__URL__/framework/id/updateNewbook">操作代码式更新a>
li>
<li>
<a href="__URL__/framework/id/viewUpdateNewbook">
操作界面式更新
a>
li>
ul>
div>
>
$(function(){
$(".liDiv:gt(0)").hide();
$(".leftLi").toggle(function(){
$(".liDiv").hide();
$(this).next('.liDiv').fadeIn("fast");
},function(){
$(this).next('.liDiv').hide();
$('.liDiv:not(:first)').hide();
$('.liDiv:first').fadeIn("fast");
});
});
>- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
4.右侧操作内容显示区
(1)当管理员单击某个功能链接时,右侧的操作内容显示区会自动切换到对应的操作界面中来。笔者以“操作界面式更新”的功能选项为例。当功能按钮被单击时,程序首先将指令传递到控制器中的framework方法中来。framework方法接收参数,利用switch语句比对case值,比对成功后,控制器再次将数据传递到view视图层,即模板文件。传递的最主要数据是指定将页面中定义的display属性值$language_3赋值为block,设置其显示,进而具有操作权限。此部分内容的核心代码如下:
<div class="right_3" style="display:{$language_3}">div>(2)当页面显示成功后就可以进行对应的修改和删除操作了。执行这两个步骤的操作主要是在ThinkPHP的控制器中完成的。View层的代码如下:
adminIndex.html关键代码如下:
<table align="center">
<volist name="pc" id="pList">
<tr>
<td style="border:1px solid white;" width="50px">
{$pList.id}
td>
<td style="border:1px solid white" width="500px">
{$pList.title|msubstr=0,30}...
td>
<td width="100px" style="border:1px solid white">
<a href="__URL__/update/newIdUpdate/{$pList.id}">编辑a>|
<a href="__URL__/delete/newIdDelet/{$pList.id}">删除a>
td>
tr>
volist>
<tr>
<td colspan="3">{$page}td>
tr>
table>- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
(3)当编辑按钮被单击时,程序会将指定的数据传递到控制器层的update方法中,并同时传递一条数据主键ID的值。
update方法关键代码如下:
public function update(){
$string = I('newIdUpdate');
$pc = M('news');
$pc = $pc->where('id='.$string)->s elect();
print_r($pc);
$this->assign('head',$pc[0]['id']);
$this->assign('title',$pc[0]['title']);
$this->assign('head',$string);
$this->assign('content',$pc[0]['content']);
$this->assign('time',$pc[0]['date_time']);
$this->assign('language_4','block');
$this->assign('language_3','none');
$this->assign('language_1','none');
$this->display('adminIndex');
}- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
(4)由于控制器完成这部分的操作后,隐藏了原有控制页面,显示了新的操作页面。也就是说,控制器此步骤的操作是将控制权重重新赋予到新模块页面,此模块为
标记中class属性值为”right_4”的模块。此模块的view层代码如下:
<div class="right_4" style="display:'{$language_4}'">
<form action="__URL__/adminUpdate" method="post">
<input type="hidden" name="head" value="{$head}" />
新闻标题:<input class="inputOne" type="text" name="title" value="{$title}" /><br />
新闻内容:<textarea name="textarea" class="inputTwo">{$content}textarea><br />
发布时间:<input type="text" class="inputOne" name="time" value="{$time}" />
<input type="submit" value="更新" />
form>
div>(5)当更新按钮被单击之后,程序又再次指向控制器的adminUpdate方法,从而执行更新操作。其控制器关键代码如下:
public function adminUpdate(){
$data['title'] = I('title');
$data['content'] = I('content');
$data['date_time'] = I('time');
$id = I('head');
$data['update_time'] = date('Y-m-d');
$pc = M('news');
$pc = $pc->where('id='.$id)->data($data)->save();
if($pc != false){
$this->assign('hint','更新成功');
$this->assign('url','__URL__/adminIndex');
$this->display('information');
}else{
$this->assign('hint','更新失败');
$this->assign('url','__URL__/adminIndex');
$this->display('information');
}
}- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
总结:
运用软件工程的设计思想中最流行的MVC设计理念,通过一个业界比较有名的国产框架编写而成。通过对这个项目的学习,可以了解到PHP网站程序的开发流程,并且了解ThinkPHP框架三层开发的具体事宜。