網盤檔案目錄功能
1,編輯html頁面
新netdisk_html.php檔案:
設計網路磁碟前端頁面,程式碼如下:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/2 0002 * Time: 上午 10:07 */ ?> <h2>在线网盘</h2> <!--目录列表--> <div> 您的位置:主目录 </div> <!--文件列表--> <table border="1" cellpadding="3" cellspacing="0" width="100%"> <tr bgcolor="skyblue"><th>文件名</th><th>大小</th><th width="30%">上传时间</th><th>操作</th></tr> <!--目录列表--> <tr> <td>目录1</td> <td>-</td> <td>2018-03-02 15:57:56</td> <td align="center"> <a href="">打开</a> |<a href="">复制</a> |<a href="">删除</a> </td> </tr> <tr> <td>目录2</td> <td>-</td> <td>2018-03-02 15:58:00</td> <td align="center"> <a href="">打开</a> |<a href="">复制</a> |<a href="">删除</a> </td> </tr> <!--文件列表--> <tr> <td>1.jpg</td> <td>3KB</td> <td>2018-03-02 16:06:12</td> <td align="center"> <a href="">下载</a> |<a href="">复制</a> |<a href="">删除</a> </td> </tr> </table> <form method="post"> 新建文件夹:<input type="text" name="newfolder"> <input type="submit" value="创建"> </form> <form method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form>
2,建立資料庫連接
#基本展示頁面顯示了,資料是隨便寫的,接下來應該是建立與資料庫的連結,把資料庫裡的資訊遍歷然後展示到前端頁面,由於後面用到很多操作查詢與連接,所有我們寫一個工具類以方便與後的資料庫操作,新建public_sql.php檔:
程式碼如下:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/2 0002 * Time: 上午 9:42 */ //初始化数据库连接 function dbInit(){ $link=mysql_connect('localhost','root','root'); if(!$link){ die('lian连接数据库失败'.mysql_error()); } //设置字符集,选择数据库 mysql_query('set names utf8'); mysql_query('use php'); } //查询数据库显示错误信息 function query($sql){ if($result=mysql_query($sql)){ //执行成功 return $result; }else{ //执行失败,显示错误信息以便于调试程序 echo 'sql执行失败:<br>'; echo '错误的sql为:',$sql,'<br>'; echo '错误的代码为:',mysql_errno(),'<br>'; echo '错误的信息为:',mysql_error(),'<br>'; die(); } } //查询所有数据并返回结果集 function fetchAll($sql){ //执行query()函数 if($result=query($sql)){ //执行成功 //遍历结果集 $rows=array(); while($row=mysql_fetch_array($result,MYSQL_ASSOC)){ $rows[]=$row; } //释放结果集资源 mysql_free_result($result); return $rows; }else{ //执行失败 return false; } } //查询单条数据并返回结果集 function fetchRow($sql){ //执行query()函数 if($result=query($sql)){ //从结果集取得依次数据即可 $row=mysql_fetch_array($result,MYSQL_ASSOC); return $row; }else{ return false; } }
#3,遍歷資料庫資料展示到前端頁面
資料庫連接公共類別寫好了接下來就進行查詢資料庫進行遍歷展示目錄檔案,同時根據$folder_id
可以對應遍歷出對應的不同目錄:
新index.php檔:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/2 0002 * Time: 上午 9:39 */ header("Content-Type:text/html;charset=utf-8"); //载入数据库操作文件 require("./public_sql.php"); //初始化连接数据库操作 dbInit(); //获取当前目录的id $folder_id=isset($_GET['folder'])?intval($_GET['folder']):0; //网盘文件列表 //请求目录不是根目录时,获取当前访问目录的信息 $path=array(); if($folder_id!=0){ //根据当前目录ID查询目录列表 $sql="select folder_name,folder_path from netdisk_folder where folder_id=$folder_id"; $current_folder=fetchRow($sql); $file_ids=$current_folder['folder_path']; //根据ID路径查询所有父级目录的信息 if($file_ids!=""){ $sql="select folder_id,folder_name from netdisk_folder where folder_id in($file_ids)"; $path=fetchAll($sql); //将当期目录追加到路劲数组的末尾 $path[]=array( 'folder_id'=>$folder_id, 'folder_name'=>$current_folder['folder_name'] ); } } //获取指定目录下的所有文件夹 $sql="select folder_id,folder_name,folder_time from netdisk_folder where folder_pid=$folder_id"; $folder=fetchAll($sql); //获取指定目录下的所有文件 $sql="select file_id,file_name,file_save,file_size,file_time from netdisk_file where folder_id=$folder_id "; $file=fetchAll($sql); //echo "<pre>"; //print_r($folder); //echo "</pre>"; //引进html页面 require('netdisk_html.php');
以上程式碼得到一個$folder和一個$file,分別代表目錄和檔案並且都是一個二維數組存好了資料庫裡的資訊
透過require('netdisk_html.php')引進了前端檔案,接下來只需要遍歷出$folder和$file展示在table表格裡即可
在netdisk_html.php的檔案清單和目錄清單內容加上遍歷資料的程式碼:
<?php <!--文件列表--> <table border="1" cellpadding="3" cellspacing="0" width="60%"> <tr bgcolor="skyblue"><th>文件名</th><th>大小</th><th>上传时间</th><th>操作</th></tr> <!--目录列表--> <?php foreach ($folder as $v): ?> <tr> <td><?php echo $v['folder_name']?></td> <td>-</td> <td><?php echo $v['folder_time']?></td> <td align="center"> <a href="">打开</a> |<a href="">复制</a> |<a href="">删除</a> </td> </tr> <?php endforeach;?> <!--文件列表--> <?php foreach ($file as $v):?> <tr> <td> <?php echo $v['file_name'] ?> </td> <td><?php echo round($v['file_size']/1024) ?>KB</td> <td><?php echo $v['file_time'] ?></td> <td align="center"><a href="">下载</a>| <a href="">复制</a>| <a href="">删除</a></td> </tr> <?php endforeach;?> </table>
#4,頁面展示
如下:
##5,開啟目錄功能
只需要在開啟按鈕加上以下程式碼即可
<?php <a href="?folder=<?php echo $v['folder_id']?>">打开</a>##########