您的位置:首页 > 其它

跟踪管理文档开发日记

2014-02-17 19:36 141 查看
2014年2月17号 星期一

一:关于manage document):今天之前有两个问题一直不明白:

1)怎样将一个数据库读出的记录文件(show.php)显示在主界面(main.php)恰当的位置上,主要是布局上的问题?

2)之前的(manage document)的main.php主界面还没有完善,使其主界面效果看起来更好?

今天,早上一来,就在构思怎样把界面弄得漂亮些,然后就先找些图片素材,感觉看起来舒服就采用.关于主界面设计:

采用了页眉,导航条,主显示区,尾页四部分. 对页眉,尾页各自写入top.php和bottom.php.导航条还需要进一步完善,主显示区应该随点击的菜单,显示不同的页面,所以主显示区的页面调用需要进步一研究.

关于第一个问题,今天解决了,主要是采用了table布局,在合适的位置调用其显示的部分.

关于第二个问题.今天也基本完善了!效果还挺好的!

二:明天来研究下怎样下载文件?

1)昨天主界面有个问题,就是界面列表菜单选择没有按照预期显示,只显示了<option value="0'">上海</option> ,显示了0[解决]

今天改了过来,<option value="上海'">上海</option> ,但是插不进数据库中,怎没能插不进去数据库呢?自己测试了下,发现是sql语句有问题,sql语句中数字可以不带单引号,而现在是字符串,所以就得带单引号了! 小小记录一下.

下载文件可以有两种方式,一种是普通文件下载方式(准备采用这种,简单,缺点就是不够安全),第二中用安全下载方式.

目前采用第一种方式,第二中有待学习

三:今天把删除文档操作搞了一下!基本可以大概实现其功能,有待完善.准备细化一下自己的知识点:

HTML中的超级链接:

超级链接可以是一个字,一个词,或者一组词,也可以是一副图像,您可以点击这些内容来跳转到新的文档或者当前前文档的某个部分.

在开发中页面之间的跳转一般都采用超级链接,超文本的连接的重要特性之一,使用者可以从一个页面直接跳转到其他页面,图形和服务器.一个连接的基本格式:

<a href="资源地址">链接文字</a>

标签<A>表示一个连接的开始,</A>表示连接的结束 属性href 定义连接所指的地方,通过点击链接文字可以达到指定的文件.

四:学习尝试用switch和include语句设计框架

其实现原理是:应用switch语句,根据超级链接中传递的变量进行判断,根据不同变量值应用include调用不同的子文件.

五:关于对onmousemove事件的学习:

定义和用法onmousemove事件是在鼠标移动时发生的,语法:onmousemove = "SomeJavascriptCode"; 参数和描述,javascript是必须的,规定该事件时执行javascript.

示例:

<img src="/i/eg_mouse2.jpg" alt="mouse"

onmousemove="alert('您的鼠标刚才经过了图片!')" />

六:关于超级链接传递参数值:

<a href="index.php?"res=<?php echo urlencode('明日科技');?></a>

这段代码是为超级链接设置一个参数res,设置参数值为'明日科技',通过urlencode()函数对参数值进行编码.

<?php

if(isset($_GET['link'])) /*通过isset()函数验证$_GET['res']是否存在*/

{

$link=$_GET['link'; /*如果存在则将该值赋给变量$res*/]

}

else{

$link="首页";

}

switch($link){

.......

终于把用超级链接调用文件弄出来了,其实很简单,就是自己第一次尝试,有时候$_GET[' ']写成了$GET,我檫,不仔细导致我的进度明显慢了好多!

七:关于对简单分页技术的理解

分页核心技术在于确定当前的页数,然后利用MySQL中的LIMIT关键字来指定输出的对应的记录数啊.

如当前第一页,就输出LIMIT 0,4(这里第一页只输出4条记录),如果想输出第二页就是LIMIT 4,4 ,第三页就是 LIMIT 8,4 ....第n也就是LIMIT(n-1)x4,4

采用超级链接获取参数$p,

八:关于查询功能开发:

1)方式采用时间段查询:

在SQL语句中,对指定范围内的数据进行查找可以有两种方式:

第一种通过关键字between ...and ...实现.语法格式如下:

select 要查找的字段 from 表名 where 字段名 between 初始值 and 终止值;

第二中方式是通过比较运算符实现.语法格式如下:

select 要查找的字段 from 表名 where 字段名 >初始值 and 字段名 <终止值;

2)关于模糊查询

$sql=mysql_query("select * from tb_jour where wznr like '%$keyword%' order by id desc limit 2");

$info=mysql_fetch_array($sql);

这里简单介绍下mysql_fetch_array()函数,

使用mysql_query()函数执行select 语句时,成功将返回查询结果集,返回结果集后,使用mysql_fetch_array()函数可以将查询结果集信息,并放入一个数组中.

3)关于模糊查询中的遇见的一个小问题:

也就是常用的do.{} while(); 和 while .() {}

$info=mysql_fetch_array($sql);

if($info==false)

{

echo "<br><div align=center>对不起,没有查找到您要查找的内容!</div>";

}

else

{

?>

<table width="100%" border="2" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF">

<tr align="left" valign="middle" class="style3" >

<td height="18"> <div align="center">资源名称</div></td>

<td>共享者</td>

<td height="18">关键字</td>

<td height="18">简单描述</td>

<td height="18">上传时间</td>

<td height="18">下载区域</td>

</tr>

<?php

do

{

?>

<tr align="center" valign="middle" class="style1">

<td height="15">

<div align="left"><span class="style2"><?php echo $info['filename'];?></span></div></td>

<td height="15">

<div align="left"><span class="style2"><?php echo $info['staff'];?></span></div></td>

<td height="15">

<div align="left"><span class="style2"><?php echo $info['tag'];?></span></div></td>

<td height="15">

<div align="left"><span class="style2"><?php echo $info['des'];?></span></div></td>

<td height="15">

<div align="left"><span class="style2"><?php echo $info['time'];?></span></div></td>

<td height="15">

<div align="left"><a href="../document/<?php echo $info['filename'];?>">点击下载</a></div></td>

</tr>

<?php

}while($info=mysql_fetch_array($sql));

}

刚开始以为可以用while(){}句型替换掉,测试发现后总是显示记录不全,查后发现第一条记录直接被忽视了!所以,采用do {} while ();还是比较好,第一条其实已将被读到数组中了采用这种方式,不需要判断条件,先读出录入的数据信息,然后再录入第二条! 采用while(){}句型,第一条直接被忽视了! ,其实整个代码可以被改造,采用while();句型也可以!小小的记录一下!

八:关于文件删除学习

PHP中文件删除函数unlink()

unlink()函数用于删除一个文件,如果成功,则返回true,否则返回false.

语法:bool unlink(string filename)

例子:

<?php unlink("test.txt"); ?>

示例:删除Doc目录下的所有文件.

PHP中的Del.php

<html>

<head>

<title>

删除示例

</title>

</head>

<body>

<form method="post" name="form1" action="CkDel.php" id="form1">

<input type="submit" value="删除" name="delbutton">

</form>

</body>

</html>

CkDel.php

<?php

$path="../DOC/";

if(is_dir($path))

{

echo"指定的文件夹存在";

if($dh=opendir($path))

{

while(($file=readdir($dh)))

{

if( $file!="." && $file!="..")

{

$fullpath="$path"."$file";

if(!is_dir($fullpath))

{

if(unlink("$fullpath"))

{

echo "已经成功删除$fullpath";

}

else

{

echo "删除失败!";

}

}

else

{

echo "$fullpath是一个目录";

}

}

}

}

closedir($dh);

}

else

{

echo "指定文件夹不存在";

}

?>

效果:删除文件加DOC目录下的所有文件.使DOC为空文件.

<今天终于把删除功能写出来了>

//删除文件函数delfile($path,$file) ,参数给出目录路径和要删除的文件名.

/*

输入参数为$path; 文件存储路径 $path="../document/";

输入参数为$file; 删除文件名称

*/

function delfile($path,$file)

{

//先判断指定的文件夹是否存在

if(is_dir($path))

{

//指定文件夹存在,那就打开指定目录

if(opendir($path))

{

//文件全路径

$fullpath="$path"."$file";

// echo "$fullpath";

if(!is_dir($fullpath)) //判断文件是子目录还是子文件,如果是子文件,就删除

{

if(unlink("$fullpath"))

{

echo "$fullpath文件已经成功删除";

}

else

{

echo "删除文件失败!";

}

}

else

{

echo "不能直接删除目录操作!";

}

}

else

{

echo "打开指定目录出错!";

}

}

else

{

echo "指定的文件夹目录$path不存在";

}

}



做删除功能今天调试遇到一个需要注意的问题: 我们通过提交的关键字id来得到要删除的文件名称集,我们应该先删除文件后,然后再删除数据库中的记录!前后关系必须懂!今天就是因为把数据库中的记录都删除了,然后在获取删除的文件名,可想而知,这是不可能的!记录已经被删了,怎没还能读出来呢! 记录下自己的过失!

<?php

include_once("../Conn/Conn.php"); //包含数据库文件

//文件存储路径

$path="../document/";

if($_POST['conn_id']!=""){

for($i=0;$i<count($_POST['conn_id']);$i++)

{

//获取数据库的文件名称记录

$dbfile=mysql_query("select * from tb_document where id='".$_POST['conn_id'][$i]."'",$conn);

if($info=mysql_fetch_array($dbfile))

{

//获取记录的文件名称

$delfile=$info['filename'];

// echo "filename";

}

//调用删除函数

delfile($path,$delfile);

//删除数据库中的数据

$result=mysql_query("delete from tb_document where id='".$_POST['conn_id'][$i]."'",$conn);

if($result)

{

echo "<script>alert('删除数据库文件记录成功!');window.location.href='delfile.php';</script>";

}

else

{

echo "删除数据库文件记录失败!";

}

}

}

//删除文件函数

/*

输入参数为$path; 文件存储路径 $path="../document/";

输入参数为$file; 删除文件名称

*/

function delfile($path,$file)

{

//先判断指定的文件夹是否存在

if(is_dir($path))

{

//指定文件夹存在,那就打开指定目录

if(opendir($path))

{

//文件全路径

$fullpath="$path"."$file";

// echo "$fullpath";

if(!is_dir($fullpath)) //判断文件是子目录还是子文件,如果是子文件,就删除

{

if(unlink("$fullpath"))

{

echo "$fullpath文件已经成功删除";

}

else

{

echo "删除文件失败!";

}

}

else

{

echo "不能直接删除目录操作!";

}

}

else

{

echo "打开指定目录出错!";

}

}

else

{

echo "指定的文件夹目录$path不存在";

}

}

?>

2014年03月10日:

case 1:简单描述如果少于10个字,跳转页面就会出现异常!

这个case上传数据库时,就已经对传入的字符进行判断,如果小于10,就会跳出提示框! 此次操作原因是<script> </script>少了一个斜杠!

case 2:上传文档的大小,怎样获取其小数2位数,如果文件比较大,就用MB作单位,如果文件比较小,就如KB作单位.

例如:数字结果为3.1415926 ,结果应该是3.14.需要用到这个函数floor.该函数是舍去取整.如floor(3.664544) ,结果就是4.

我们可以采用先乘以100,然后再取整,然后再除以一百,

例如 $a=floor((3.1415926*100))/100 .就可以得到3.14.

经常用到小数点后取几位,但不能进位的情况。比如3.149569 取小数点后两位,最后两位不能四舍五入。结果应该是3.14。需要用到这个函数floor。该函数是舍去取整。如floor(4.66456) 结果:4 。 floor(9.1254) 结果9 。所以要去小数点后两位,需要先乘以100,然后舍去取整,在除以100 $a=floor(3.149569*100)/100

2014年4月1号:今天学习下Session 管理

Session(会话)是指在用户访问web站点上的时期内存储的用户操作的一些动作.

Session的生命周期是从用户访问页面开始,到断开与网站的连接为止,形成Session的生命周期.

Session在Web技术中占有非常重要的地位.由于网页是一种无状态的连接程序,无法记录用户的浏览状态,因此必须通过Session记录用户的有关信息,以供用户再次以此身份对Web服务器提供要求时确认.

php中会话启动的方式有两种:一种是应用session_start()函数;另一种是应用session_register()函数为会话登录一个变量来隐含地启动会话.

Cookie与Session的比较:

Sessions是将信息保存在服务器上,并通过一个Session ID来传递客户端的信息,服务器在接收到Session ID后根据这个ID来提供相关的Session信息资源;

而Cookie是所有的信息以文本文件的形式保存在客户端,并由浏览器进行管理和维护.

由于Session为服务器存储,远程用户没有办法修改Session文件内容;而Cookie为客户端存储,所有Session要比Cookie安全的多.当然是用Session还有很多优点,如控制容易,可以按照用户定义存储(存储于数据库中)等.

2014年04月04日:

还需要解决一些验证问题:

例如注册时,绑定手机时,看手机格式是否正确,邮箱格式时候正确!

浏览器的兼容性问题也得解决!

2014年0408日:

昨天空闲时间把注册的一些小问题解决掉了!在没有登录之前,非法进入主页面也解决掉了!

做下小记录!

还需要把登出小功能做了!(注销)

2014年0411日:

怎样添加验证码功能!

2014年0425:

又要扩展下这个东西,今天主要任务:怎样实现多文件上传:

HTML <form>标签的enctype属性

定义和用法

enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。

默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。

语法

<form enctype="value">

属性值

值 描述


application/x-www-form-urlencoded 在发送前编码所有字符(默认)

multipart/form-data 不对字符编码。

在使用包含文件上传控件的表单时,必须使用该值。

text/plain 空格转换为 "+" 加号,但不对特殊字符编码。

2014年04月28号

昨天实现了多文件上传,后面要实现需要创建目录,然后将文档上传到固定的目录中!

文档分类:

创建分类目录,目的上让不同的文档传入到不同改的分类目录中,

然后将创建的分类,放入到数据库中,做记录.

在多文件上传的界面,显示不同的分类.

2014年05月13号

今天上传大文件报错如下:

Warning: POST Content-Length of 23373902bytes exceeds the limitof 8388608bytes in Unknown on line 0

现在解答:

我们使用POST请求提交的数据大小超过了服务器的最大限制数(8388608字节=8MB)

出现上述错误的原因是,在PHP的配置文件php.ini中,默认存在如下配置信息(在php.ini中,行首的分号”;”表示当前行是注释,不会生效):

;脚本解析输入数据(类似 POST
和 GET)允许的最大时间,单位是秒。它从接收所有数据到开始执行脚本进行测量的。

max_input_time = 60

;允许客户端单个POST请求发送的最大数据

post_max_size = 8M

;是否开启文件上传功能

file_uploads = On

;文件上传的临时存放目录(如果不指定,使用系统默认的临时目录)

;upload_tmp_dir =

;允许单个请求上传的最大文件大小

upload_max_filesize =
2M

;允许单个POST请求同时上传的最大文件数量

max_file_uploads =
20

从上面的配置信息中我们可以看出,PHP的默认配置信息就是导致PHP文件上传时提示文件大小超出限制的“罪魁祸首”。上述配置信息中给出了各个指令选项对应的中文注释信息,大家可以根据自己的实际需求情况对php.ini配置文件进行相应的修改

2014年5月26号:

今天主要是实现创建根目录,以便于在根目录中再次创建子目录.

这里先对几个函数的理解:

dirname 返回路劲中的目录部分,string dirname(string path) 返回 path的父目录

mkdir 创建文件目录,只能创建一级目录.

is_dir 用于判断文件名给出的目录是否是有效目录

[需求]创建多及目录!例如:$dir="../document/renyao";

<?php

$path_dir="../document/renyaobin";

mkdirs($path_dir);

function mkdirs($dir, $mode=0777)

{

if(is_dir($dir) || @mkdir($dir,$mode)) return TRUE;

if(!mkdirs(dirname($dir),$mode)) return FALSE;

return @mkdir($dir,$mode);

}

?>

2014年5月28号 今天实现下用PHP代码实现文件安全下载,我们一般实现下载都是调用url来下载,但是遇到ie能识别打开的文件就不能用这种方式了,比如下载图片,html网页等,这时就需要编程来实现,下来我们用PHP代码来解决此问题:

<?php

//我们需要下载../document/renyb/Learning Python_4.pdf

//文件下载路径

$file_path="../document/renyb/Learning Python_4.pdf";

$filename="Learning Python_4.pdf";

//首先检查文件是否存在

if(!file_exists($file_path))

{

echo "文件找不到";

}

else

{

//打开指定文件

$file =fopen($file_path,"r");

header("Content-type:application/octet-stream"); //输出MIME类型

header("Accept-ranges:bytes"); //可接受的范围

header("Accept-length:".filesize($file_path)); //文件长度

header("Content-Disposition:attachment;filename=".$filename); //默认的文件保存对话框中的文件名称

//输出文件内容

echo fread($file,filesize($file_path));

fclose($file);

}

?>

2014年5月29日 关于目录树的学习

我们想要一个什么样的目录树:

我们有一个根目录:

根目录下我们创建一级菜单,在每一个一级菜单,我们在创建一个子菜单,然后当我们点击子菜单的时候,就可以在主界面主显示在子目录中的所有文档.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: