PHP删除无限分类并同时删除它下面的所有子分类的方法

转帖:

今天晚上上Q的时候 ,一个以前的学员在网上问我,怎么删除一个无限分类的时候同时删除它下面的所有子分类。我把代码稍微整理了一下,发出来,放在php学员问答里面,方便以后的人查看 。

 

$act = isset ($_GET['act']) ? trim ($_GET['act']) : ";
if ($act == 'del')
{
$sort_id = isset ($_GET['id']) ? intval($_GET['id']) : '0' ;
$sort_ids = $sort_id;
$childrenIds = getChildrenIds ($sort_id);
if (!empty ($childrenIds))
{
$sort_ids .= $childrenIds;
}
$sql = “delete from `article_sort` WHERE `sort_id` in ({$sort_ids})";
$res = mysql_query ($sql);
if ($res)
{
alert ('删除成功');
exit;
}
else
{
alert ('删除失败');
exit;
}
}

 



 

getChildrenIds 这个函数以前已经给出来过,不清楚的请参考 自定义函数之获取无限分类ID下的子类ID集

自定义函数之获取无限分类ID下的子类ID集

/*—————————————————— */
//– 获取无限分类ID下面的子类ID集
//– $sort_id = $sort_id.getChildrenIds($sort_id);
//– $sql = " ….. where sort_id in ($sort_id)";
/*—————————————————— */
function getChildrenIds ($sort_id)
{
global $db;
$ids = ";
$sql = "SELECT * FROM ".$db->table('article_sort')." WHERE `parent_id` = '{$sort_id}'";
$res = $db->query ($sql);
if ($res)
{
while ($row = $db->fetch_assoc ($res))
{
$ids .= ','.$row['sort_id'];
$ids .= getChildrenIds ($row['sort_id']);
}
}
return $ids;
}

 



 

PHP获取IP的多种方式解析

转自:http://developer.51cto.com/art/200911/164514.htm

PHP获取IP的方法有许多种,我们今天向大家总结了六种方法,希望通过对这六种方法的学习,能够加深我们对PHP语言的进一步了解,巩固我们所掌握的知识。

PHP获取IP方法一:

<?php 
echo "<br>";  
?> 
 
<?php 
    
function GetIP()  
{  
if(!empty($_SERVER["HTTP_CLIENT_IP"]))  
   $cip = $_SERVER["HTTP_CLIENT_IP"];  
else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))  
   $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];  
else if(!empty($_SERVER["REMOTE_ADDR"]))  
   $cip = $_SERVER["REMOTE_ADDR"];  
else  
   $cip = "无法获取!";  
return $cip;  
}  
echo "<br>";  
?>

 



PHP获取IP方法二:

<?php 
echo "<br>";  
?> 
 
<? 
error_reporting (E_ERROR | E_WARNING | E_PARSE);  
if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])   
{                                                
       $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];  
        
}                                                
elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])      
{                                                
       $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];  
           
}                                                
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])         
{                                                
       $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];    
              
}                                                
elseif (getenv("HTTP_X_FORWARDED_FOR"))            
{                                                
       $ip = getenv("HTTP_X_FORWARDED_FOR");    
                 
}                                                
elseif (getenv("HTTP_CLIENT_IP"))                  
{                                                
       $ip = getenv("HTTP_CLIENT_IP");    
                       
}            
                                   
elseif (getenv("REMOTE_ADDR"))                     
{                                                
       $ip = getenv("REMOTE_ADDR");   
                          
}         
                                      
else                                             
{                                                
       $ip = "Unknown";      
                                   
}                                                
echo "你的IP地址是:".$ip."<br>";                              
?>

 



PHP获取IP方法三:

<?php 
echo "<br>";  
?> 
 
<? 
$iipp = $_SERVER["REMOTE_ADDR"];  
echo $iipp;  
echo "<br>";  
?>

 



PHP获取IP方法四:

<?php 
echo "<br>";  
?> 
 
<?php 
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];  
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];  
echo $user_IP."<br>";  
?>

 



PHP获取IP方法五:

<?php 
echo "<br>";  
?> 
 
<? 
function get_real_ip()  
{  
       $ip=false;  
       if(!empty($_SERVER["HTTP_CLIENT_IP"]))  
       {  
            $ip = $_SERVER["HTTP_CLIENT_IP"];  
       }  
       if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))  
       {  
            $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);  
            if ($ip)  
            {  
                     array_unshift($ips, $ip); $ip = FALSE;  
            }  
            for ($i = 0; $i < count($ips); $i++)  
            {  
                     if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i]))  
                     {  
                               $ip = $ips[$i];  
                               break;  
                     }  
            }  
       }  
       return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);  
}  
echo get_real_ip();  
echo "<br>";  
?>

 



PHP获取IP方法六:

<?php 
echo "<br>";  
?> 
 
<? 
if(getenv('HTTP_CLIENT_IP'))  
{  
       $onlineip = getenv('HTTP_CLIENT_IP');  
}  
elseif(getenv('HTTP_X_FORWARDED_FOR'))  
{  
       $onlineip = getenv('HTTP_X_FORWARDED_FOR');  
}  
elseif(getenv('REMOTE_ADDR'))  
{  
       $onlineip = getenv('REMOTE_ADDR');  
}  
else  
{  
       $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];  
}  
echo $onlineip;  
echo "<br>";  
?>

 



 

Javascript trim()函数实现

在JavaScript中我们需要用到trim的地方很多,但是JavaScript又没有独立的trim函数或者方法可以使用,所以我们需要自己写个trim函数来实现我们的目的。

     方案一:

以原型方式调用,即obj.trim()形式,此方式简单且使用方面广泛,定义方式如下:

<script language=”javascript”>
/**
* 删除左右两端的空格
*/
String.prototype.trim=function()
{
     return this.replace(/(^\s*)|(\s*$)/g, ”);
}
/**
* 删除左边的空格
*/
String.prototype.ltrim=function()
{
     return this.replace(/(^\s*)/g,”);
}
/**
* 删除右边的空格
*/
String.prototype.rtrim=function()
{
     return this.replace(/(\s*$)/g,”);
}
</script>

 



使用示例如下:

<script type=”text/javascript”>
alert(document.getElementById(’abc’).value.trim());
alert(document.getElementById(’abc’).value.ltrim());
alert(document.getElementById(’abc’).value.rtrim());
</script>

 

方案二:

以工具方式调用,即trim(obj)的形式,此方式可以用于特殊处理需要,定义方式如下:

<script type=”text/javascript”>
/**
* 删除左右两端的空格
*/
function trim(str)
{
     return str.replace(/(^\s*)|(\s*$)/g, ”);
}
/**
* 删除左边的空格
*/
function ltrim(str)
{
     return str.replace(/(^\s*)/g,”);
}
/**
* 删除右边的空格
*/
function rtrim(str)
{
     return str.replace(/(\s*$)/g,”);
}
</script>

 



使用示例如下:

<script type=”text/javascript”>
alert(trim(document.getElementById(’abc’).value));
alert(ltrim(document.getElementById(’abc’).value));
alert(rtrim(document.getElementById(’abc’).value));
</script>

 



 

PHP只下载不打开文件

转自:http://hi.baidu.com/ssfnadn/blog/item/b57b3394eeec0117d21b7018.html

由于现在的浏览器已经可以识别格式为txt的文档格式,所以如果只是给txt文档做一个文字链接的话,可能只是打开一个新窗口显示txt文件的内容,并不能实现点击下载的目的。

当然这个问题的解决办法也可以是你将你的txt文件改名为浏览器不认识的文件,比如rar,这样的话点击,浏览器不认识就只好让用户下载了。

下面这个文件就是通过设置header设置文档的格式来实现点击下载的目的,上个页面传来了两个变量’file’和’filename’将上个页面传递过来的文件点击可以下载。

<?php
$file = $_GET['file'];   //要下载的文件(含文件的目录)
$filename = $_GET['filename']; //这个只是文件的名字

header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".($filename)); 
readfile($file);

?>

 



首先:设置Content-Type的值为application/force-download,强制下载

接着第二个header函数设置了要下载的文件,注意这里filename是不包含路径的文件名,这个filename的值将来就是点击下载后弹出对话框里面的文件名.

最后就是readfile,将文件流输出到浏览器,这样就实现了文件的下载。

 

日期选择控件-date_input

一款jquery插件date_input

 

<script language="javascript" src="../../jquery-1.4.2.js"> </script>
<script type="text/javascript" src="jquery.date_input.js"> </script>

<link rel="stylesheet" href="date_input.css" type="text/css">
<script language="javascript">
$(function() {
  $("#my_specific_input").date_input();
  $(".button,.prev").css("cursor","hand").css("cursor","pointer");
  $(".button,.next").css("cursor","hand").css("cursor","pointer");
});

</script>

<input type="text" id="my_specific_input" />

 

美观大方,十分方便。

项目经历2-电子台账系统

电子台账系统:

开发日期:2010-10-10至2010-10-18

主要是设计以下几个方面:

1、无限分类数据库设计

2、数据库与文档系统的同步,通过数据库数据读取文件地址,获得文件路径,目录等

3、超级管理员,二级管理员,普通用户的用户管理

4、涉及搜索功能,关键字,分类等搜索的文件管理功能

5、登陆日志的记录与管理

通 过上一个选课系统,这次的开发发现非常的快速,也得到了老大的赏识,感觉非常的棒,每天像选课系统那样的起早贪黑,不过很充实,在学生阶段,我没有虚度, 我沉迷于程序的逻辑与界面的美观设计之中,不知道是不是值得,不知道简单的WEB开发,值不值得我这么去做,不过我想,程序都是相通的,我要一直做下去, 既赚了小钱,更重要的是,以后是我的经历,为我的人生添彩。

感谢女朋友对我的支持,她没有怨言,没有怨我陪她的时间少了

感谢老大对我的关照,给了我这个系统,让我又一次体会到了CODING的乐趣,我很满足,老大还给我钱,数目不算少,我非常开心

感谢宿舍的兄弟们,每天我都忙到2点以后,有时候没注意的就把键盘敲很大声,有空一定请他们吃个饭,陪下罪。

感谢王老师,感谢樊老师,他们给我的选课系统,让我真正在项目开发上面有了质的提升,没有他们给我的机会,就没有这次神速的完工。

呵呵,好像是我自己做完了,不过乙方可能很不满意,这个不好,那个要改,我不怕哦,让我改什么,我就改呗,毕竟一个星期收你这么多钱,也得给你做点实事是不,也谢谢你们,有需求,我才有动力。

呵呵,研一了,发现大家和本科不一样了,大家都有个心思,就是要学习,要实践,要做项目,而不能像本科一样浑浑噩噩的过日子,即使很累,但一定要有收获,一定要有经历。

删除记录之前-切记要检查是不是存在该记录

 如题,删除一条记录时,一定要先检查该记录是不是存在,如果为空值,可能会删掉整个表

 

2010-11-04大教训,用户因为网速慢,点了三次同一个删除按钮,结果我数据库一个表被清空了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 

原因是第一次删掉后,第二次数据库中已经不存在该值,结果就把整个表删了。。。。。。。。。。。。。。

 

代码写的如此不严谨,检讨

 

phpmyadmin无法加载mcrypt的解决方法

无法加载 mcrypt (外链,英语) 扩展,请检查您的 PHP 配置:很多朋友在运行phpmyadmin程序都会见到这样的提示,”无法加载 mcrypt (外链,英语) 扩展,请检查您的 PHP 配置”,那么遇到这样的问题应当怎么解决呢?下面我们就一点一点把这个问题解决掉:

无法载入 mcrypt 扩展,请检查 PHP 配置
继续阅读phpmyadmin无法加载mcrypt的解决方法

AJAX中文乱码PHP完美解决(IE和Firefox兼容)

最近在做一个项目,遇到AJAX中文乱码问题,经过一个下午的努力终于完美解决,现将心得写下来,希望对那些还困绕在这个问题而头痛不已的人们有所帮助。

众所周知,使用AJAX传送和接收中文参数时,如果不在客户端和服务器做相应的处理就会出现乱码问题,在网上相应的文章也不少,但是有的情况下很难从中找 到符合自己理想的答案,我今天就是在网上找了很多,但是都差不多,讲ASP和JSP的比较多(我是用的PHP),所以到最后都没找到自己满意的答案。 继续阅读AJAX中文乱码PHP完美解决(IE和Firefox兼容)

java环境变量配置

  1. 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\java\jdk1.5.0_08;
  2. 安装完成后,右击“我的电脑”,点击“属性”;
  3. 选择“高级”选项卡,点击“环境变量”;
  4. 在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”;
  5. JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:\java\jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依*此变量);
    Path使得系统可以在任何路径下识别java命令,设为: 继续阅读java环境变量配置