php 批量删除目录下所有文件与文件夹
//方法一
$dir="test";
function defiles( $dir )
{
$handle=opendir($dir);
while (($file=readdir($handle))<>"") {
if(is_file($file))
unlink($file);
}
closedir($handle);
}
//方法二
function dir_clear($dir) {
$directory = dir($dir);
while($entry = $directory->read()) {
$filename = $dir.'/'.$entry;
if(is_file($filename)) {
@unlink($filename);
}
}
$directory->close();
result();
}
//用方法
$dir ="www.111cn.net/";
defiles($dir);
//用方法二删除目录所有文件
dir_clear($dir);
//方法一
function deltree($dirList){
chdir($dirList);
$handle=opendir('.');
while (($file=readdir($handle))<>"") {
if(is_file($file))
unlink($file);
if(is_dir($file) && $file<>"." && $file<>".."){
deltree($file);
chdir('..');
rmdir($file);
}
}
closedir($handle);
}
deltree('test');
//方法二
function deldir($dirList)
{
if(is_dir($dirList))
{
$rdirList = $dirList;
if($dirListlist = scandir($rdirList))
{
array_shift($dirListlist);
array_shift($dirListlist);
foreach($dirListlist as $d){
$rd = $rdirList.'/'.$d;
if(isset($d) && is_file($rd)){
unlink($rd);
}else{
$this->deldir($rd);
}
}
rmdir($rdirList);
}else{
return false;
}
}
return true;
}
}
用了递归方法。
//来看二个实例
$dirList="www.111cn.net/"; //指定目录
deltree($dirList);
deldir($dirList);
*/
$cn = mysql教程_connect('127.0.0.1','root','root') or die('database connect fail');
mysql_select_db('test',$cn);
mysql_query("set names 'gbk'");
/*
创建数据库教程
CREATE DATABASE `test` ;
创建数据表 test1
CREATE TABLE `test`.`test1` (
`id` INT( 4 ) NOT NULL AUTO_INCREMENT ,
`title` VARCHAR( 40 ) NULL DEFAULT '0',
`litpic` VARCHAR( 100 ) NULL DEFAULT '0',
PRIMARY KEY ( `id` )
) ENGINE = MYISAM
*/
$sql = "Select * from test1 ";
$query = mysql_query( $sql ) or die($sql);
if( mysql_num_rows( $query ) )
{
while( $rs = mysql_fetch_array( $query ) )
{
$sql = "Delete from test1 where id=".$rs['id'];
if( mysql_query( $sql ) )
{
if( defile( $rs['litpic'] ))
{
echo '删除图片文件失败';
}
else
{
echo '记录删除成功,并且删除了记录与相对应的图片或文件';
}
}
else
{
echo '记录不存删除数据与图片失败';
}
}
}
else
{
echo '没有记录';
}
/*
@pare return
#$url string
删除文件
*/
function delfile($url)
{
if( file_exists($url) && is_file( $url ) )
{
if( unlink( $url ) )
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
/*
本文章原创于www.111cn.net转载注明出处
创建数据库教程以及表:
CREATE DATABASE `sortclass`DEFAULT CHARSET utf8;
CREATE TABLE IF NOT EXISTS `class` (
`cid` mediumint(8) unsigned NOT NULL auto_increment,
`pid` mediumint(8) unsigned NOT NULL,
`cname` varchar(50) NOT NULL,
PRIMARY KEY (`cid`),
KEY `pid` (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
处理文件示例:
<?php
header("Content-type: text/html; charset=utf-8");
//连接数据库
$link = mysql教程_connect('localhost','root','eric') or die(mysql_error());
mysql_select_db('sortclass',$link);
//无限分类类库
class SortClass{
var $data = array();
var $child = array(-1=>array());
var $layer = array(-1=>-1);
var $parent = array();
var $link;
var $table;
function SortClass($link, $table){
$this->setNode(0, -1, '顶极节点');
$this->link = $link;
$this->table = $table;
$node = array();
$results = mysql_query('select * from '.$this->table.'',$this->link);
while($node = mysql_fetch_assoc($results)){
$this->setNode($node['cid'],$node['pid'],$node['cname']);
}
}
function setNode ($id, $parent, $value){
$parent = $parent?$parent:0;
$this->data[$id] = $value;
$this->child[$id] = array();
$this->child[$parent][] = $id;
$this->parent[$id] = $parent;
$this->layer[$id] = !isset($this->layer[$parent])? 0 : $this->layer[$parent] + 1;
}
function getList (&$tree, $root= 0){
foreach ($this->child[$root] as $key=>$id){
$tree[] = $id;
if ($this->child[$id]) $this->getList($tree, $id);
}
}
function getValue ($id){return $this->data[$id];}
function getLayer ($id, $space = false){
return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
}
function getParent ($id){return $this->parent[$id];}
function getParents ($id){
while ($this->parent[$id] != -1){
$id = $parent[$this->layer[$id]] = $this->parent[$id];
}
ksort($parent);
reset($parent);
return $parent;
}
function getChild ($id){return $this->child[$id];}
function getChilds ($id = 0){
$child = array($id);
$this->getList($child, $id);
return $child;
}
function addNode($name,$pid){
mysql_query("insert into $this->table (`pid`,`cname`) values ('$pid','$name')",$this->link);
}
function modNode($cid, $newName){
mysql_query("update $this->table set `cname`='$newName' where `cid` = $cid",$this->link);
}
function delNode($cid){
$allChilds = $this->getChilds($cid);
$sql ='';
if(empty($allChilds)){
$sql = "delete from $this->table where `cid` = $cid";
}else{
$sql = 'delete from '.$this->table.' where `cid` in ('.implode(',',$allChilds).','.$cid.')';
}
mysql_query($sql,$this->link);
}
function moveNode($cid, $topid){
mysql_query("update $this->table set `pid`=$topid where `cid` = $cid", $this->link);
}
}
//函数
function back(){
echo '<script language="javascript教程">window.location.href="test.php?"+new Date().getTime();</script>';
exit;
}
//声成select
function makeSelect($array,$formName){
global $tree;
$select = '<select name="'.$formName.'">';
foreach ($array as $id){
$select.='<option value="'.$id.'">'.$tree->getLayer($id, '|-').$tree->getValue($id)."</option>";
}
return $select.'</select>';
}
$tree = new SortClass($link,'`class`');
$op = !empty($_POST['op']) ? $_POST['op'] : $_GET['op'];
if(!empty($op)){
if($op=='add'){
$tree->addNode($_POST['cname'],$_POST['pid']);
back();
}
if($op=='mod'){
$tree->modNode($_POST['cid'],$_POST['cname']);
back();
}
if($op=='del'){
$tree->delNode($_GET['cid']);
back();
}
if($op=='move'){
$tree->moveNode($_POST['who'],$_POST['to']);
back();
}
}
$category = $tree->getChilds();
?>
<style type="text/css教程">
body{font-size:12px;}
ul{list-style:none;}
a{cursor:pointer;}
</style>
<script language="javascript">
function $(e){return document.getElementById(e);}
function mod(cid){
$('cid').value=cid;
$('op').value='mod';
$('name').style.border='1px solid red';
}
</script>
<form action="test.php" method="post">
名称:<input type="text" id="name" name="cname" /> 添加到:<?=makeSelect($category,'pid')?><br />
<input type="hidden" id="op" name="op" value="add" />
<input type="hidden" id="cid" name="cid" />
<input type="submit" value="Submit" />
</form>
<h3>移动分类</h3>
<form action="test.php" method="post">
<?=makeSelect($category,'who')?>移动到:<?=makeSelect($category,'to')?>
<input type="hidden" id="op" name="op" value="move" />
<input type="submit" value="Submit" />
</form>
<ul>
<?php
foreach ($category as $id){
echo '<li>'.$tree->getLayer($id, '|- ').$tree->getValue($id).' <a href="test.php?op=del&cid='.$id.'">Del</a> <a onclick="mod('.$id.')">Edit</a> </li>';
}
?>
</ul>
简单的通过递归查询加目录path字段的无限分类
缺点:查询数据库次数太多,不方便其他操作,比如删除节点。添加节点,移动节点
2,左右值无限分类,预排序二叉树
缺点:操作繁琐,数据库冗余,且添加删除修改都要进行左右值更新
用递归无无限分页类的枋心算法
function cate_arr($arr,&$arr2=array(),$per_id=0,$lv=0){
static $i=0; //从0开始
if ((bool)$arr) {
foreach ($arr as $value) {
if ($value['per_id']==$per_id) {
$value['lv']=$lv;
$arr2[$i]=$value;
$i++;
$lv++;
cate_arr($arr,$arr2,$value['cate_id'],$lv--);
}
}
}
}
数据结构如
array(
0=>array(
'cate_id'=11,
'per_id'=0,
'cate_name'='a'
),
1=>array(
'cate_id'=12,
'per_id'=0,
'cate_name'='b'
),
2=>array(
'cate_id'=13,
'per_id'=11,
'cate_name'='a10'
),
....);
再来看一个简单的与mysqli直接连接的无限分类
header("Content-type:text/html;charset=utf-8"); $db=new mysqli("localhost","root","","news_php100") ; //实例化一个数据库连接。使用这个前一定要确保已经加载了mysqli类库,或者用mysql_connect这个方式连接。 if(mysqli_connect_errno()){ echo "链接失败:".mysqli_connect_error(); exit(); } $db->query("set names utf8"); $result=$db->query("select name from class where f_id=0"); //查找f_id=0的分类,也就是查找每一个大类。 while($row=$result->fetch_assoc()){ echo $row['name']."< br>"; //这样就把每个大类循环出来了。 } //同样我们可以把新闻的子类循环出来。 $result=$db->query("select * from class where f_id=1"); //查找f_id=1的分类,也就是查找‘新闻’的子类。 while($row=$result->fetch_assoc()){ echo $row['name']." "; //这样就把‘新闻’的子类循环出来了。注意:只是子类,不包括孙子类。 } //写到这里,我们会发现一个问题,如果这个分类是10级分类,难道我们要写10个循环把它每个子类循环出来?如果是更多级分类呢,这样写显然是不现实的。 //那又有什么办法解决呢?我们可以写一个递归的函数,把f_id作为参数传入,不断循环每一个f_id的值,也就是说把每一个f_id值的子类循环出来。 //首先我们把各个分类的值保存在一个二维数组中,在下面的递归函数里有用。 $result=$db->query("select * from class"); while($row=$result->fetch_assoc()){ $arr[]=array($row[id],$row[f_id],$row[name]); //每一行保存一个分类的id,f_id,name的信息。 } function fenlei($f_id=0){ //$f_id初始化为0,也就是从最大分类开始循环. global $arr; //声明$arr为全局变量才可在函数里引用。 for($i=0;$i< count($arr);$i++){ //对每个分类进行循环。 if($arr[$i][1]==$f_id){ //$arr[$i][1]表示第$i+1个分类的f_id的值。开始$f_id=0,也就是把f_id=0的分类输出来。 echo $arr[$i][2]."< br>"; //$arr[$i][1]表示第$i+1个分类的name的值。 fenlei($arr[$i][0]); //$arr[$i][1]表示第$i+1个分类的id的值。进行递归,也就是把自己的id作为f_id参数把自己的子类再循环出来。 } } } fenlei(); //使用这个函数.
本分类方法的优势:
1,数据库结构简单,只有 cid parentid name 三个字段,无任何冗余字段
2,不使用递归查询,所有操作只需一条sql语句
3,所有数据在读取一次数据库后,在数组内进行分析处理,节省数据库服务器资源
ignore_user_abort(true);
set_time_limit(0);
function test(){
echo "不要迷恋哥,哥只是个定时器!";
echo date('h:i:s') . "<br>";
}
function just_do_it(){
test();
usleep(2000000);
}
ob_end_clean();
ob_start();
while(1){
echo str_repeat(" ",1024);
ob_flush();
flush();
just_do_it();
}
相关文章
- 下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
- php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
- 复制代码 代码如下: <td> <a href="/member/life/edit_ppt/<?php echo $v->id;?>" class="btn">编辑</a> <a href="javascript:;" onclick="if(confirm('您确定删除这条记录?')){location.href='/member/life/d...2014-06-07
- 最近由于项目的需要,需要动态的添加和删除table中的tr,感觉用JS可以实现,但是在网上找了一下,单纯的自己写JS,感觉太麻烦,而且也不好维护。于是想到了最近学的jQuery。这篇文章给大家用实例介绍了jQuery动态添加与删除tr行的方法,有需要的朋友们可以参考借鉴。...2016-10-20
- 伪造跨站请求介绍伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。...2013-10-01
Centos中彻底删除Mysql(rpm、yum安装的情况)
我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15- 数据库中的数据删除会分为两种:物理删除 和 逻辑删除,接下来通过本文给大家介绍MyBatis-Plus的物理删除和逻辑删除使用场景分析,感兴趣的朋友一起看看吧...2021-09-25
- 这篇文章主要为大家详细介绍了js实现上传文件添加和删除文件选择框 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-25
- 这篇文章主要介绍了mybatis-plus getOne和逻辑删除,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-26
- 这篇文章主要介绍了C# 复制与删除文件的实现方法的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了C#删除UL LI中指定标签里文字的方法,涉及C#针对页面HTML元素进行正则匹配与替换的相关操作技巧,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了MybatisPlus实现逻辑删除功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-25
- 这篇文章主要介绍了C++递归删除一个目录的实现方法,涉及到目录的操作及递归算法的应用,需要的朋友可以参考下...2020-04-25
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
这篇文章主要介绍了JQuery EasyUI datagrid 添加、修改、删除操作的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-07-25C#使用FolderBrowserDialog类实现选择打开文件夹方法详解
这篇文章主要介绍了C#选择文件夹/打开文件夹/浏览文件夹等代码方法,大家参考使用...2020-06-25- 这篇文章主要介绍了jQuery中DOM节点的删除方法,文中介绍的很相信,内容包括empty()的基本用法、remove()的有参用法和无参用法、empty和remove区别、保留数据的删除操作detach()以及detach()和remove()区别,需要的朋友可以参考借鉴。...2017-01-26
- 这篇文章主要介绍了解决IDEA target文件夹越来越大的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 本文实例讲述了MySQL查看、创建和删除索引的方法。分享给大家供大家参考。具体如下:1.索引作用在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询...2015-10-21
- 这篇文章主要介绍了微信小程序 向左滑动删除功能的实现的相关资料,需要的朋友可以参考下...2017-03-13
- 在本篇文章里小编给大家分享了关于C#删除Excel中的图片的实例代码内容,有兴趣的朋友们参考学习下。...2020-06-25