跟蹤管理文檔開發日記

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日 關於目錄樹的學習

我們想要一個什麼樣的目錄樹:

我們有一個根目錄:

根目錄下我們創建一級菜單,在每一個一級菜單,我們在創建一個子菜單,然後當我們點擊子菜單的時候,就可以在主界面主顯示在子目錄中的所有文檔.

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