跟踪管理文档开发日记

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"
οnmοusemοve="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日 关于目录树的学习

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

我们有一个根目录:

根目录下我们创建一级菜单,在每一个一级菜单,我们在创建一个子菜单,然后当我们点击子菜单的时候,就可以在主界面主显示在子目录中的所有文档.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章