首个项目已经结束了两周多了,把前几天自己的项目感受翻出来看了看,发现好多的语句不通还有好多错字,今天又整理了一下发出来跟兄弟们分享和共勉。
在项目的开发过程中学 习 巩固了很多知识,也学到了很多解决问题的有效方法。为了能把剩下的课程学好,让下一个项目更好更快的完成, 同时让自己把学过的知识记得更牢固 我把这一次收获的经验总结一下 ,跟各位兄弟分享下 。
1,做好项目需求策划。
任何一个项目不会是无需求的,只有把需求确定好 、 理解透 , 才能确定需要哪些功能模块,莫名的冲动,会让你奔向邪恶或者陷入麻烦。
2,一定要去要规划流程,画出流程图,确定功能模块。
如果没有流程规划,你做着做着就会发现某个做完的模块跟另一个模块好像重复或者无法衔接,或者逻辑上有些矛盾,如此 会让 你陷入反复修改 中, 时间是那么的有限,不规划流程就是在浪费生命。
3,命名规则及数据库规划
要确定一套有效的避免重复和易理解的命名规则,特别是变量,函数,字段的命名上;
如果随意命名的话,会造成变量赋值后丢失值,某些字段值读取后莫名的改变,名字臃肿繁琐不易识别 。建议 按照模块和 用途 分类去规划,比如关于USER模块的函数名统一以user开头,如:usesrReg,userLogin,userInfo,userResult等既易识别,又很容确定是属于哪个功能模块的。数据表规划是根据流程规划完后,确定了功能及具体实现方式置后才能确定。字段命名一定要注意,避免 使用保留 关键字,否则会遇到SQL语句语法很正确就是没结果 的恶梦 。
4,项目开发中常遇到的哪些让人郁闷的错误。
1,单双引号是初学者数据库开发过程中必然会遇到的错误,如:
Select * from bbs_user where username=jack 应该是username='jack'
"Select * from bbs_user where username=$jack" 应该是username='$jack'
注:引号应用双引号中可以插入单引号,单引号中的变量可以被解析,并返回单引号。还有一种情况是:
"select * from bbs_user where username='md5(addselashes(trim($_POST['password'])))'";
看着是想省事连写,觉得似乎很正确呀,但还是报错 了 。建议这样去写就OK了。
$username=md5(addselashes(trim($_POST['password'])));
"select * from bbs_user where username='$username'";
在函数应用中也会出现类似的单双引号错误,解决办法一样。
2,在读取插入数据时常见的几个错误
在显示位置要调用某字段却发现明明数据库中有改字段却没有结果
"Select uid,username from user"; Echo $result['useremail'];
//是因为你没有读取此字段"useremail",通常会发生在你开始没想读取此字段,后来
你突然又想让某位置显示此字段,却忘记在SQL语句中添加读取此字段。
"select u.username,u.userage,u.id,m.id,m.title,m.username from user as u,message as me where m.id=u.id";
当你得到结果,echo $result['id']可能不是你想要的值,看看SQL语句中是不是两个id,
最好把其中一个id改 个 别名,如:m.id as mid $result['id'],$result['mid']就都可以得到 正确 的值。
再需要 注意的是 : 逻辑错误,检查难度很 不容易超找,检查难度大 。还有 :在 引用变量函数,可变变量的 是要特别注意 ,特别是在和session赋值操作上,很容易造成session混乱,而且 特别 不容易检查 出来 。 其实 有些时候不是你想用可变变量,而是你手误多敲了一个$或者&符号。
3,既然还没有学面向对象,那么 建议 多次使用的代码,写成函数吧,节约时间和精力。
多次使用的功能,写成函数,既让前台 代码 更 有条理 ,同时也 大大 减少了工作量,节约了时间。如我的数据操作公用函数 文件 db.function.php ,我把具体的数据库连接、增、删、改、查,计数等方法一函数方式写在同一个文件中,并标注好注释。
<?php
/**
* 数据库链接函数
* @函数总涉及的全局变量在config.php中直接定义
*/
function connect(){
...
}
/**
* 原态sql语句执行函数
* @param sql
* @example $sql="select * from table where field='value'";
* @example $result=quer($sql)
*/
function query($sql){
...
}
/**
* 插入数据
* @param $table string 表名
* @param $fvalues array('字段名'=>'值');
*/
function insert($table,$fvalues){
...
}
/**
* SELECT 查询函数
* @param string $table表名
* @param string $fields='field1,field2,field3';字段名
* @orderby string $orderby='id DESC/ASC';排序方式
* @groupby string $groupby='type';分组方式
* @limit int $limit=5; 查询记录数量
* @page int $page=2;当前页码
* @pagesize int $pagesize=5;单页面显示的记录条数
* @example select('user','username,password','id desc','***','',4,10);
* @attation 如果用分页功能,请将$limit参数设为空'';
*/
function select($table,$fields='*',$where='',$order='',$groupby='',$limit='',$page=0,$pagesize=10){
...
}
/**
* 数据表数据更新
* @param string 表名 例:$table='bbs_user';
* @param string where语句:$where="username='zhangcheng' and uid=28";
* @param string 更新的自对和对应的值为*$fvalues="username='name',userpsw='password'";
* @param $fvalues=array(key=>value)
* @example update('user',$_POST,'id=2');
*/
function update($table,$fvalues,$where){
}
/**
*删除数据方法
* @pramar string $table 数据表名
* @pramar string $where 条件语句$where="userid=12 and username='jack'";
* @example delet('user',"username='xiaohuihui'");
*/
function delete($table,$where){
...
}
/**
* 根据 sql语句 统计数据条数
* @param string SQL语句 $sql='select * from user';
*/
function countrows($sql){
...
}
/**
* 根据 table,where 条件 统计数据条数
* @param string table表名
*@param string where条件
*
*/
function sumrows($table,$where){
...
}
/**
* table,where统计数据条数
* @param string table表名
*@param string where条件
*/
function sumfields($table,$fields,$where){
...
}
/**
* 释放(关闭数据库)数据库链接
* @param source 数据库资源类型 $connect=mysql_connect('localhost','root','123456')
* */
function free_db($connect){
...
}
?>
5,别忘了完善的注释,让团队的成员都看的明白
C ss,前台页面代码块,函数方法说明,这些位置最好 也 都加上注释,检查错误的时候
能够迅速定位,条理更清楚。
例:
样式 文件内 :
/*主体样式*/
#main{
width:960px;
border:1px solide #dcdcdc;
}
/*导航样式*/
.guidenav{
width:960px;
height:40px;
float:left;
background:url(../images/guidenavbgcenter2.jpg) repeat-x top;
}
前台页面 代码块:
<!--导航开始-->
<div class="mainmenu">
<ul>
<?php
//导航数据查询
$remenu=select('menu');
if($remenu){
while(list($key,$menu)=each($remenu)){
?>
<li>
<a href="<?php echo $menu['url']?>" target="<?php echo $menu['target'] ?>">
<?php echo $menu['title']?>
</li>
<?php
}
}
?>
</ul>
</div>
<!--导航结束-->
公用函数 部分注释 :
/**
* SELECT 数据库查询SELECT方法函数
* @param string $table表名
* @param string $fields字段名'field1,field2,field3';
* @orderby string $orderby排序方式'id DESC/ASC';
* @groupby string$groupby分组方式;
* @limit int $limit查询记录数量;
* @page int $page当前页码
* @pagesize int $pagesize单页面显示的记录条数;
* @example select('user','username,password','id desc','***','',4,10);
* @attation 如果用分页功能,请将$limit参数设为空'';
*@return array 结果集数组$rows
*/
Function select($table,$fields='*',$where='',$order='',$groupby='',$limit='',$page=0,$pagesize=10){
if(!is_resource($connect)) {
$connect=connect();
}
$sql='';
$table=$table==''?'':DB_PREFIX.$table;
if(is_array($fields)){
$fields=$fields==''?'*':implode(',',$fields);
}else{
$fields=$fields==''?'*':$fields;
}
$where=$where==''?'':' WHERE '.$where;
$order = $order == '' ? '' : ' ORDER BY '.$order;
$group = $group == '' ? '' : ' GROUP BY '.$group;
$pagesize=$pagesize==''? '' :$pagesize;
if($page!=''){
$page=(int)$page;
$pagesize=(int)$pagesize;
$start=(int)(($page)-1)*$pagesize;
$limit=' LIMIT '.$start.','.$pagesize;
}else{
$limit = $limit == '' ? '' : ' LIMIT '.$limit;
}
$sql='SELECT ' .$fields.' FROM ' .$table.$where.$group.$order.$limit;
$re=query($sql);
$rows=array();
if($re&&mysql_affected_rows()){
while($row=mysql_fetch_array($re,MYSQL_ASSOC)){
$rows[]=$row;
}
return $rows;
}else{
return 0;
}
}
同样的道理:
用户的操作 也都 写成函数:
注册 user reg();
检查用户名是否已被注册checkreg();
检查是否登录checklogin();
注销logout();
加分addmoney();
设置头像setheadpic();
帖子的相关操作也可以这样做,这里只抛砖引玉,开动脑筋,多思考逻辑上的东西, 好像 变得越来越简单 了,对吧?
6,代码一样可以很美
页面 代码写的时候一定要注意层次关系,合理缩进和空行;以提高代码清晰性和可读性。否则你自己检查的时候看着毫无规则的代码阵,心里好烦。
( 引用 细说php : 145 页 )一个源文件的两个代码段之间使 用两个空行作为间隔 ;两个函数声明之间 ; 局部变量和函数 声明之间 ; 块注释或单行注释之前 ; 一个函数体内的两个逻辑代码段之间使用 一个空行间隔 。
7,用户是上帝,所以要注重用户体验哦
页面设计效果就不用说了,说说用操作方面。用户的每一步怎需考虑用户操作便捷,给予引导,规划,提示,同时给他(她)以附加值 和惊喜 等。
比如:注册时输入字符不符合要求,让输入框改变颜色,以表示提醒。
尽可能简化注册步骤,并在页面显示提示相关步骤和信息。
注册完成后不是返回重新登录而是,注册完成即为登录状态。
发帖后醒目提示给予奖励分值并鼓励多发贴。
类似的用户体验的东西,你可以 花一点时间和 精力去 分析,可以 让你的网站更 受 用户喜爱(网站用户体验提示需要从运营和整个项目战略层次综合考虑在此仅从本次项目页面功能上考虑,点到为止。文凯老师上课的时候讲的很多 客户体验 方面的 知识 ,可以总结一下综合运用)。
顺便提一下,发布帖子可以做成可方便SEO的,如后台管理帖子可以设置关键词,标题,页面描述等信息,写到数据库字段里(title,keywords,description),在前台页面head内读取。连接,图片也要加上相关的标题或说明。有利于网页被收录哟,不要堆积太多关键词哦,会被搜索引擎关禁闭的。
8, 做好时间管理
把项目周期时间规划做好, 可以使用每日工作计划,时间管理里书面写下。 每天的工作量要量化严格执行,才能保证你的项目顺利完成;并且有足够的时间去测试调整。先完成要求的部分在去做扩展的,切莫因为20分丢掉100分。
9,收获的是自己的
要坚持独立完成,哪怕会比别人慢一点;因为你不是要给老师交作业,而是给自己
一个 检验 结果。
都是说是夏天了,女生的裙子,应该越*越好.
我觉得项目总结也应该是这样,那我就写到这吧,不多写了。
在这里希望更多的兄弟分享你们的收获。请大家多多指教!
原文地址:http://bbs.lampbrother.net/read-htm-tid-118790.html
阅读(37) | 评论(0) | 转发(0) |
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
在项目的开发过程中学 习 巩固了很多知识,也学到了很多解决问题的有效方法。为了能把剩下的课程学好,让下一个项目更好更快的完成, 同时让自己把学过的知识记得更牢固 我把这一次收获的经验总结一下 ,跟各位兄弟分享下 。
1,做好项目需求策划。
任何一个项目不会是无需求的,只有把需求确定好 、 理解透 , 才能确定需要哪些功能模块,莫名的冲动,会让你奔向邪恶或者陷入麻烦。
2,一定要去要规划流程,画出流程图,确定功能模块。
如果没有流程规划,你做着做着就会发现某个做完的模块跟另一个模块好像重复或者无法衔接,或者逻辑上有些矛盾,如此 会让 你陷入反复修改 中, 时间是那么的有限,不规划流程就是在浪费生命。
3,命名规则及数据库规划
要确定一套有效的避免重复和易理解的命名规则,特别是变量,函数,字段的命名上;
如果随意命名的话,会造成变量赋值后丢失值,某些字段值读取后莫名的改变,名字臃肿繁琐不易识别 。建议 按照模块和 用途 分类去规划,比如关于USER模块的函数名统一以user开头,如:usesrReg,userLogin,userInfo,userResult等既易识别,又很容确定是属于哪个功能模块的。数据表规划是根据流程规划完后,确定了功能及具体实现方式置后才能确定。字段命名一定要注意,避免 使用保留 关键字,否则会遇到SQL语句语法很正确就是没结果 的恶梦 。
4,项目开发中常遇到的哪些让人郁闷的错误。
1,单双引号是初学者数据库开发过程中必然会遇到的错误,如:
Select * from bbs_user where username=jack 应该是username='jack'
"Select * from bbs_user where username=$jack" 应该是username='$jack'
注:引号应用双引号中可以插入单引号,单引号中的变量可以被解析,并返回单引号。还有一种情况是:
"select * from bbs_user where username='md5(addselashes(trim($_POST['password'])))'";
看着是想省事连写,觉得似乎很正确呀,但还是报错 了 。建议这样去写就OK了。
$username=md5(addselashes(trim($_POST['password'])));
"select * from bbs_user where username='$username'";
在函数应用中也会出现类似的单双引号错误,解决办法一样。
2,在读取插入数据时常见的几个错误
在显示位置要调用某字段却发现明明数据库中有改字段却没有结果
"Select uid,username from user"; Echo $result['useremail'];
//是因为你没有读取此字段"useremail",通常会发生在你开始没想读取此字段,后来
你突然又想让某位置显示此字段,却忘记在SQL语句中添加读取此字段。
"select u.username,u.userage,u.id,m.id,m.title,m.username from user as u,message as me where m.id=u.id";
当你得到结果,echo $result['id']可能不是你想要的值,看看SQL语句中是不是两个id,
最好把其中一个id改 个 别名,如:m.id as mid $result['id'],$result['mid']就都可以得到 正确 的值。
再需要 注意的是 : 逻辑错误,检查难度很 不容易超找,检查难度大 。还有 :在 引用变量函数,可变变量的 是要特别注意 ,特别是在和session赋值操作上,很容易造成session混乱,而且 特别 不容易检查 出来 。 其实 有些时候不是你想用可变变量,而是你手误多敲了一个$或者&符号。
3,既然还没有学面向对象,那么 建议 多次使用的代码,写成函数吧,节约时间和精力。
多次使用的功能,写成函数,既让前台 代码 更 有条理 ,同时也 大大 减少了工作量,节约了时间。如我的数据操作公用函数 文件 db.function.php ,我把具体的数据库连接、增、删、改、查,计数等方法一函数方式写在同一个文件中,并标注好注释。
<?php
/**
* 数据库链接函数
* @函数总涉及的全局变量在config.php中直接定义
*/
function connect(){
...
}
/**
* 原态sql语句执行函数
* @param sql
* @example $sql="select * from table where field='value'";
* @example $result=quer($sql)
*/
function query($sql){
...
}
/**
* 插入数据
* @param $table string 表名
* @param $fvalues array('字段名'=>'值');
*/
function insert($table,$fvalues){
...
}
/**
* SELECT 查询函数
* @param string $table表名
* @param string $fields='field1,field2,field3';字段名
* @orderby string $orderby='id DESC/ASC';排序方式
* @groupby string $groupby='type';分组方式
* @limit int $limit=5; 查询记录数量
* @page int $page=2;当前页码
* @pagesize int $pagesize=5;单页面显示的记录条数
* @example select('user','username,password','id desc','***','',4,10);
* @attation 如果用分页功能,请将$limit参数设为空'';
*/
function select($table,$fields='*',$where='',$order='',$groupby='',$limit='',$page=0,$pagesize=10){
...
}
/**
* 数据表数据更新
* @param string 表名 例:$table='bbs_user';
* @param string where语句:$where="username='zhangcheng' and uid=28";
* @param string 更新的自对和对应的值为*$fvalues="username='name',userpsw='password'";
* @param $fvalues=array(key=>value)
* @example update('user',$_POST,'id=2');
*/
function update($table,$fvalues,$where){
}
/**
*删除数据方法
* @pramar string $table 数据表名
* @pramar string $where 条件语句$where="userid=12 and username='jack'";
* @example delet('user',"username='xiaohuihui'");
*/
function delete($table,$where){
...
}
/**
* 根据 sql语句 统计数据条数
* @param string SQL语句 $sql='select * from user';
*/
function countrows($sql){
...
}
/**
* 根据 table,where 条件 统计数据条数
* @param string table表名
*@param string where条件
*
*/
function sumrows($table,$where){
...
}
/**
* table,where统计数据条数
* @param string table表名
*@param string where条件
*/
function sumfields($table,$fields,$where){
...
}
/**
* 释放(关闭数据库)数据库链接
* @param source 数据库资源类型 $connect=mysql_connect('localhost','root','123456')
* */
function free_db($connect){
...
}
?>
5,别忘了完善的注释,让团队的成员都看的明白
C ss,前台页面代码块,函数方法说明,这些位置最好 也 都加上注释,检查错误的时候
能够迅速定位,条理更清楚。
例:
样式 文件内 :
/*主体样式*/
#main{
width:960px;
border:1px solide #dcdcdc;
}
/*导航样式*/
.guidenav{
width:960px;
height:40px;
float:left;
background:url(../images/guidenavbgcenter2.jpg) repeat-x top;
}
前台页面 代码块:
<!--导航开始-->
<div class="mainmenu">
<ul>
<?php
//导航数据查询
$remenu=select('menu');
if($remenu){
while(list($key,$menu)=each($remenu)){
?>
<li>
<a href="<?php echo $menu['url']?>" target="<?php echo $menu['target'] ?>">
<?php echo $menu['title']?>
</li>
<?php
}
}
?>
</ul>
</div>
<!--导航结束-->
公用函数 部分注释 :
/**
* SELECT 数据库查询SELECT方法函数
* @param string $table表名
* @param string $fields字段名'field1,field2,field3';
* @orderby string $orderby排序方式'id DESC/ASC';
* @groupby string$groupby分组方式;
* @limit int $limit查询记录数量;
* @page int $page当前页码
* @pagesize int $pagesize单页面显示的记录条数;
* @example select('user','username,password','id desc','***','',4,10);
* @attation 如果用分页功能,请将$limit参数设为空'';
*@return array 结果集数组$rows
*/
Function select($table,$fields='*',$where='',$order='',$groupby='',$limit='',$page=0,$pagesize=10){
if(!is_resource($connect)) {
$connect=connect();
}
$sql='';
$table=$table==''?'':DB_PREFIX.$table;
if(is_array($fields)){
$fields=$fields==''?'*':implode(',',$fields);
}else{
$fields=$fields==''?'*':$fields;
}
$where=$where==''?'':' WHERE '.$where;
$order = $order == '' ? '' : ' ORDER BY '.$order;
$group = $group == '' ? '' : ' GROUP BY '.$group;
$pagesize=$pagesize==''? '' :$pagesize;
if($page!=''){
$page=(int)$page;
$pagesize=(int)$pagesize;
$start=(int)(($page)-1)*$pagesize;
$limit=' LIMIT '.$start.','.$pagesize;
}else{
$limit = $limit == '' ? '' : ' LIMIT '.$limit;
}
$sql='SELECT ' .$fields.' FROM ' .$table.$where.$group.$order.$limit;
$re=query($sql);
$rows=array();
if($re&&mysql_affected_rows()){
while($row=mysql_fetch_array($re,MYSQL_ASSOC)){
$rows[]=$row;
}
return $rows;
}else{
return 0;
}
}
同样的道理:
用户的操作 也都 写成函数:
注册 user reg();
检查用户名是否已被注册checkreg();
检查是否登录checklogin();
注销logout();
加分addmoney();
设置头像setheadpic();
帖子的相关操作也可以这样做,这里只抛砖引玉,开动脑筋,多思考逻辑上的东西, 好像 变得越来越简单 了,对吧?
6,代码一样可以很美
页面 代码写的时候一定要注意层次关系,合理缩进和空行;以提高代码清晰性和可读性。否则你自己检查的时候看着毫无规则的代码阵,心里好烦。
( 引用 细说php : 145 页 )一个源文件的两个代码段之间使 用两个空行作为间隔 ;两个函数声明之间 ; 局部变量和函数 声明之间 ; 块注释或单行注释之前 ; 一个函数体内的两个逻辑代码段之间使用 一个空行间隔 。
7,用户是上帝,所以要注重用户体验哦
页面设计效果就不用说了,说说用操作方面。用户的每一步怎需考虑用户操作便捷,给予引导,规划,提示,同时给他(她)以附加值 和惊喜 等。
比如:注册时输入字符不符合要求,让输入框改变颜色,以表示提醒。
尽可能简化注册步骤,并在页面显示提示相关步骤和信息。
注册完成后不是返回重新登录而是,注册完成即为登录状态。
发帖后醒目提示给予奖励分值并鼓励多发贴。
类似的用户体验的东西,你可以 花一点时间和 精力去 分析,可以 让你的网站更 受 用户喜爱(网站用户体验提示需要从运营和整个项目战略层次综合考虑在此仅从本次项目页面功能上考虑,点到为止。文凯老师上课的时候讲的很多 客户体验 方面的 知识 ,可以总结一下综合运用)。
顺便提一下,发布帖子可以做成可方便SEO的,如后台管理帖子可以设置关键词,标题,页面描述等信息,写到数据库字段里(title,keywords,description),在前台页面head内读取。连接,图片也要加上相关的标题或说明。有利于网页被收录哟,不要堆积太多关键词哦,会被搜索引擎关禁闭的。
8, 做好时间管理
把项目周期时间规划做好, 可以使用每日工作计划,时间管理里书面写下。 每天的工作量要量化严格执行,才能保证你的项目顺利完成;并且有足够的时间去测试调整。先完成要求的部分在去做扩展的,切莫因为20分丢掉100分。
9,收获的是自己的
要坚持独立完成,哪怕会比别人慢一点;因为你不是要给老师交作业,而是给自己
一个 检验 结果。
都是说是夏天了,女生的裙子,应该越*越好.
我觉得项目总结也应该是这样,那我就写到这吧,不多写了。
在这里希望更多的兄弟分享你们的收获。请大家多多指教!
原文地址:http://bbs.lampbrother.net/read-htm-tid-118790.html
相关热门文章
给主人留下些什么吧!~~
评论热议