无限分类的文章

 更新时间:2016年11月25日 15:17  点击:1730

这是类
<?php
/*========================================================
类名:catalog
功能:无限分级类
方法:
        树形显示分类
        catalog_show($id) //参数$id 递归调用
                流程:找到父分类为0所有根分类-> 一直递归取得所有分类并显示       
        添加分类
                catalog_add($uid,$name) //$uid 父id  //$name 分类名               
                流程:依据$uid,在此id下添加一个新子id
        删除分类
                catalog_del($uid)//参数 $uid 数要删除的分类
        修改分类
                catalog_set($id,$name) //参数 $id 要修改的分类  //参数 $name  新的分类名
变量:
        $config                                //数据库信息-> host,user,pass,dbname
        $catalog_dbname                //分类数据库名
数据库:
        catalog_id                        //分类的自然序号
        catalog_uid                        //分类的父分类
        catalog_name                //分类名
        catalog_path_number        //亲缘树数字形式  0:1:2
        catalog_path_char        //亲缘树字符形式  分类1:分类1.1:分类1.1.1
参照文章 [url]http://www.111cn.net/12823/viewspace_4468.html[/url]
========================================================*/
class catalog{
        var $config;
        var $catalog_dbname;
        var $links;
        private function connect(){
                $this->links = mysql_connect($this->config['host'],$this->config['user'],$this->config['pass']) or die("错误: 第".__LINE__."行<br>".mysql_error());
                mysql_select_db($this->config['dbname'],$this->links);
                mysql_query("SET NAMES gb2312");
        }
       
        function catalog_show($uid = 0){
                $this->connect();
                $sql = "SELECT * FROM ".$this->catalog_dbname. "
                                        WHERE catalog_uid = ". $uid ."
                                                 ORDER BY catalog_id ";
                $result = mysql_query($sql,$this->links) or die("错误: 第".__LINE__."行<br>".mysql_error());
               
                if(mysql_num_rows($result) > 0){
                        while ($row = mysql_fetch_assoc($result)){       
                                if($this->sun_catalog($row['catalog_id'])){//判断有没有子分类
                                        $cata_img = "<img id = 'img".$row['catalog_id']."' src='./img/last_node.jpg' onclick='click_catalog(".$row['catalog_id'].")'/>";
                                }else{
                                        $cata_img = "<img src='./img/sp.jpg'/>";
                                }
               
                                $path = explode(":",$row['catalog_path_number']);
                                if(count($path) > 1){
                                        for($i=1;$i<count($path);$i++){
                                                $path_img .= "<img src='./img/sp.jpg'/>";
                                        }
                                }
                                echo $path_img.$cata_img;
                                echo "<a class='menu' href = 'javascript:send_id(".$row['catalog_id'].")'>";
                                echo $row['catalog_name']."</a><br>";
                                $path_img = "";
                                if($this->sun_catalog($row['catalog_id'])){                                       
                                        $hidden_div  = "style='display:none'";                                               
                                        echo "<div id = 'div".$row['catalog_id']."' ".$hidden_div.">";                                       
                                        $this->catalog_show($row['catalog_id']);
                                        echo "</div>";
                                }                                               
                        }
                }               
        }
        private function sun_catalog($uid){//判断是否有子分类
                $sql = "SELECT * FROM ".$this->catalog_dbname. "
                                        WHERE catalog_uid = ". $uid ."
                                                 ORDER BY catalog_id ";
                $result = mysql_query($sql,$this->links) or die("错误: 第".__LINE__."行<br>".mysql_error());
                if(mysql_num_rows($result) > 0){
                        return true;
                }else{
                        return false;
                }
       
        }
        function catalog_add($uid,$name){
                //获取父id的亲缘树
                $this->connect();
                $sql = "SELECT * FROM ".$this->catalog_dbname."
                                         WHERE catalog_id = '".$uid."'";
                $result = mysql_query($sql,$this->links)
                                                or die("错误: 第".__LINE__."行<br>".mysql_error());
                $row = mysql_fetch_assoc($result);
                $fid_path_number = $row['catalog_path_number'];//id的数字亲缘树
                $fid_path_char = $row['catalog_path_char'];//id的字符亲缘树
                //插入数据 先插入行->再找到最新插入的id, 在依据这个id进行修改
                $sql = "INSERT INTO ".$this->catalog_dbname."(catalog_uid,catalog_name)
                                        VALUES(".$uid.",'".$name."')";
                $result = mysql_query($sql,$this->links)
                                                or die("错误: 第".__LINE__."行<br>".mysql_error());
                $catalog_id = mysql_insert_id();//获取自己的id
                $catalog_path_number = $fid_path_number.":".$catalog_id;//得到自己的数字亲缘数
                $catalog_path_char = $fid_path_char.":".$name;//得到自己的字符亲缘数
               
                $sql = "UPDATE '".$this->catalog_dbname."'
                                        SET
                                                catalog_path_number = '".$catalog_path_number."',
                                                catalog_path_char = '".$catalog_path_char."'
                                        WHERE
                                                catalog_id = ".$catalog_id;       
                mysql_query($sql,$this->links)
                                or die("错误: 第".__LINE__."行<br>".mysql_error());       
                       
        }
       
        function catalog_del($id){
                $this->connect();
                $sql = "DELETE FROM ".$this->catalog_dbname."
                                        WHERE catalog_id = ".$id;
                mysql_query($sql,$this->links)
                                or die("错误: 第".__LINE__."行<br>".mysql_error());
        }
        function catalog_set($id,$name){
                $this->connect();
                $sql = "UPDATE ".$this->catalog_dbname."
                                        SET
                                                catalog_name = '".$name."'
                                        WHERE
                                                catalog_id = ".$id;       
                mysql_query($sql,$this->links)
                                or die("错误: 第".__LINE__."行<br>".mysql_error());
               
        }
       
       
}
?>

如何使用PHP获取网络上文件
<!-- generateindex.php -->
<?php
//设置我们将要使用的文件
$srcurl = "http://www.111cn.net/index.php";
$tname = "tindex.html";
$target_name = "index.html";
?>
<HTML>
<HEAD>
<TITLE>
Generating <?php echo("$target_name"); ?>
</TITLE>
</HEAD>
<BODY>
<P>Generating <?php echo("$target_name"); ?>...</P>
<?php
//首先删除上次操作可能遗留下来的临时文件。
//这个过程可能会提示错误,所以我们使用@以防止报错。
@unlink($tname);
//通过一个URL的请求装入动态版本。
//在我们接收到相关内容之前,Web服务器会对PHP进行处理
//(因为本质上我们是在模拟一个Web浏览器),
//所以我们将获得的是一个静态的HTML页面。
//'r'指出我们只要求对这个“文件”进行读操作。
$dpage = fopen($srcurl, 'r');
//处理错误
if (!$npage) {
echo("<P>不能打开静态页面".
"更新失败!</P>");
exit();
}
//将这个URL的内容读入到一个PHP变量中。
//指定我们将读取1MB的数据(超过这个数据量一般是意味着出错了)。
$html_data = fread($dpage, 1024*1024);
//当我们完成工作后,关闭到源“文件”的连接。
fclose($dage);
//打开临时文件(同时在这个过程中建立)以用来写入(注意'w'的用法).
$tempfile = fopen($tname, 'w');
//处理错误
if (!$tempfile) {
echo("<P>不能打开".
"($tname) 并写到静态文件且更新失败".
!</P>");
exit();
}
//将静态页面的数据写入到临时文件中
fwrite($tfile, $htmldata);
//完成写入后,关闭临时文件。
fclose($tfile);
//如果到了这里,我们应该已经成功地写好了一个临时文件,
//现在我们可以用它来覆盖原来的静态页面了。
$ok = copy($tname, $target_name);
//最后删除这个临时文件。
unlink($tname);
?>
<P>静态文件更新成功!</P>
</BODY>
</HTML>

以前写了十天学会ASP,十天学会ASP.NET什么的,现在想想再写个PHP吧,也算比较全了。 PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序。当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少。

  至于表单设计什么的,我这里也不想多说了,在《十天学会ASP》中已经有介绍。

  下面简单介绍一下PHP的语法。

  1、嵌入方法:

  类似ASP的<%,PHP可以是<?PHP或者是<?,结束符号是?>,当然您也可以自己指定。

  2、引用文件:

  引用文件的方法有两种:require 及 include。
  require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

  include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。

  3、注释方法:

  <?PHP
  echo "这是第一种例子。\n" ; // 本例是 C++ 语法的注释
  /* 本例采用多行的
  注释方式 */
  echo "这是第二种例子。\n" ;

echo "这是第三种例子。\n" ; # 本例使用 UNIX Shell 语法注释
  ?>

  4、变量类型:

  $mystring = "我是字符串" ;
  $NewLine = "换行了\n" ;
  $int1 = 38 ;
  $float1 = 1.732 ;
  $float2 = 1.4E+2 ;
  $MyArray1 = array( "子" , "丑" , "寅" , "卯" );

  这里引出两个问题,首先PHP变量以$开头,第二PHP语句以;结尾,可能ASP程序员会不适应。这两个遗漏也是程序上大多错误所在。

  5、运算符号:

  数学运算: 符号 意义 
  +  加法运算 
  -  减法运算 
  *  乘法运算 
  /  除法运算 
  %  取余数 
  ++  累加 
  --  递减 

  字符串运算:

  运算符号只有一个,就是英文的句号。它可以将字符串连接起来,变成合并的新字符串。类似ASP中的&
  <?

  $a = "PHP 4" ;
  $b = "功能强大" ;
  echo $a.$b;
  ?>
  这里也引出两个问题,首先PHP中输出语句是echo,第二类似ASP中的<%=变量%>,PHP中也可以<?=变量?    >。

  逻辑运算:

  符号 意义 
  <  小于 
  >  大于 
  <=  小于或等于 
  >=  大于或等于 
  ==  等于 
  !=  不等于 
  &&  而且 (And) 
  and  而且 (And) 
  ||  或者 (Or) 
  or  或者 (Or) 
  xor  异或 (Xor) 
  !  不 (Not) 

  今天就说到这里,明天说一下流程控制。

 

学习目的:掌握PHP的流程控制

  1、if..else 循环有三种结构
  第一种是只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:

  if (expr) { statement }

  其中的 expr 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。

  范例:本例省略大括号。

  <?PHP
  if ($state==1)echo "哈哈" ;
  ?>

  这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。

  范例:本例的执行部分有三行,不可省略大括号。

  <?PHP
  if ($state==1) {
  echo "哈哈 ;
  echo "<br>" ;
  }
  ?>


  第两种是除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下

if (expr) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。

  <?PHP
  if ($state==1) {
  echo "哈哈" ;
  echo "<br>";
  }
  else{
  echo "呵呵";
  echo "<br>";
  }
  ?>


  第三种就是递归的 if..else 循环,通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。

  直接看下面的例子

  <?PHP
  if ( $a > $b ) {
  echo "a 比 b 大" ;
  } elseif ( $a == $b ) {
  echo "a 等于 b" ;
  } else {
  echo "a 比 b 小" ;
  }
  ?>
上例只用二层的 if..else 循环,用来比较 a 和 b 两个变量。实际要使用这种递归 if..else 循环时,请小心使用,因为太多层的循环容易使设计的逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙的问题。

2、 for 循环就单纯只有一种,没有变化,它的语法如下


  for (expr1; expr2; expr3) { statement }

  其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。

  下例是用 for 循环写的的例子。

  <?PHP
  for ( $i = 1 ; $i <= 10 ; $i ++) {
  echo "这是第".$i."次循环<br>" ;
  }
  ?>

  3、 switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。

  语法如下

  switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; }

  其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
<?PHP
  switch ( date ( "D" )) {
  case "Mon" :
  echo "今天星期一" ;
  break;
  case "Tue" :
  echo "今天星期二" ;
  break;
  case "Wed" :
  echo "今天星期三" ;
  break;
  case "Thu" :
  echo "今天星期四" ;
  break;
  case "Fri" :
  echo "今天星期五" ;
  break;
  default:
  echo "今天放假" ;
  break;
  }
  ?>

  这里需要注意的是break;别遗漏了,default,省略是可以的。


  很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。

  今天就说到这里,明天开始说数据库的使用。

 

学习目的:学会构建数据库

  在ASP中,如果是ACCESS数据库你可以直接打开ACCESS来编辑MDB文件,如果是SQL SERVER你可以打开企业管理器来编辑SQL Server数据库,但是在PHP中,MY SQL的命令行编辑可能会令初学者感到很麻烦,不要紧,你下载一个PHPMYADMIN安装一下,以后建立编辑数据库可以靠它了。

  下面说一下它的使用。
  进入了PHPmyadmin后,我们首先需要建立一个数据库,Language (*) 这里选择中文简体,然后在左边的 创建一个新的数据库 这里填写数据库名字,点击创建即可。

  然后在左边下拉菜单中选择那个已经创建的数据库。在下面的

  在数据库 shop 中创建一个新表 :
  名字 :
  字段数 :

  中填写表名字和大致你认为的字段数(不够或者多了都不要紧,以后可以再添加或者缺省),按执行。
  然后就可以开始建立表了。
  第一栏是字段的名字;第二栏选择字段类型:
  我们常用的是以下几个:
  1)VARCHAR,文本类型
  2)INT,整数类型
3)FLOAT,浮点数类型
  4)DATE,日期型
  5)大家或许会问,自动添加的ID在哪里?这个只要选择INT类型,在后面的额外中选择 auto_increment 就可以了。

  建立了表以后,可以在左边看到你建立的表,点击以后,你可以:
  1)按右边的结构:查看修改表结构
  2)按右边的浏览:查看表中的数据
  3)按右边的SQL:运行SQL语句
  4)按右边的插入:插入一行记录
  5)按右边的清空:删除表中所有记录
  6)按右边的删除:删除表

  还有一个很重要的功能就是导入和导出,当我们本机做好了程序和数据库的时候,需要在服务器上也有一个本地镜像,如果是ASP的ACCESS简单了,直接上传MDB文件即可,如果是SQL Server也可以连接远端服务器进行导入。那么MY SQL中你可以导出所有的SQL语句,到了远端服务器的PHPMYADMIN上,创建数据库后按SQL,粘帖你刚才复制下来的所有本级生成的SQL语句即可。

  今天就说到这里,明天继续说数据库操作。

 

[!--infotagslink--]

相关文章

  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • PHP实现递归无限级分类

    在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。 递归,简单的说就是一段程序代码的重复调用,当把...2015-10-23
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
  • php无限分类使用concat如何实现

    一、数据库设计 -- -- Table structure for table `category` -- CREATE TABLE `category` ( `id` int(11) NOT NULL auto_increment, `catpath` varchar(255) default NULL, `name` varchar(255) default NULL...2015-11-08
  • Python深度学习之简单实现猫狗图像分类

    这篇文章主要介绍了Python深度学习之简单实现猫狗图像分类,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-29
  • winform树形菜单无限级分类实例

    本文介绍了“winform树形菜单无限级分类实例”,需要的朋友可以参考一下...2020-06-25
  • PHP无限分类(树形类)

    复制代码 代码如下:<?php//模拟PHP无限分类查询结果return array( array( 'id'=>1, 'pid'=>0, 'name'=>'主页' ), array( 'id'=>2, 'pid'=>0, 'name...2013-10-04
  • 帝国CMS最高效的几种随机文章的写法

    /*解决代码高亮太长不换行*/ .syntaxhighlighter{word-break:break-all;} uParse('#newstext', {rootPath: '/e/extend/ueditor/'}) php随机文章 方法1、WC写的高效随...2017-07-06
  • Bootstrap框架动态生成Web页面文章内目录的方法

    这篇文章主要介绍了Bootstrap框架动态生成Web页面文章内目录的方法,利用Bootstrap中的Affix和ScrollSpy插件便可以实现,需要的朋友可以参考下...2016-05-14
  • C#TreeView 无限级别分类实现方法

    C#TreeView 无限级别分类实现方法...2020-06-25
  • 一篇入门的 Class 文章

    刚在大略浏览了一下首页更新的那篇有关Class的文章(指PHPE的那篇 http://www.phpe.net/articles/389.shtml ),很不错,建议看看。 对类的摸索~~俺用了半年时间才大概理解类的...2016-11-25
  • thinkphp实现无限分类(使用递归)

    这篇文章主要介绍了在使用递归的情况下thinkphp实现无限分类,感兴趣的小伙伴们可以参考一下...2015-12-21
  • 使用TensorFlow-Slim进行图像分类的实现

    这篇文章主要介绍了使用TensorFlow-Slim进行图像分类的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-06
  • 使用pygame实现垃圾分类小游戏功能(已获校级二等奖)

    这篇文章主要介绍了使用pygame实现垃圾分类小游戏功能(已获校级二等奖),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-24
  • 长文章分页代码

    <? $pieces = explode("<HR>", $news['content']);//以<HR>水平线分隔 $page=count($pieces); if(empty($move)){$move=0;}else{$move=$move;} echo $pieces[$move...2016-11-25
  • php 无限级分类 获取顶级分类ID

    这篇文章主要介绍了php 无限级分类 获取顶级分类ID的相关代码,需要的朋友可以参考下...2016-03-15
  • 详解WordPress中分类函数wp_list_categories的使用

    这篇文章主要介绍了详解WordPress中分类函数wp_list_categories的使用,文中罗列其主要参数的功能和写法,需要的朋友可以参考下...2016-01-07
  • php 无限分类实现原理详解

    在php中无限分类是我们在实际开发中经常用到的一种数据结构,一般我们称之为树形结构,像我网站的分类php教程有php入门,正则等等分类,这种是二级不是无限级了,如果是无限级...2016-11-25
  • Jquery+Ajax+PHP+MySQL实现分类列表管理(下)

    在上篇中,我们详细讲解了如何实现列表管理的新增和删除操作,可以看出,前端页面通过ajax与后台通信,根据后台处理结果响应前端页面交互操作,这是一个很典型的Ajax和JSON应用的例子。 本文将继续上篇文中的示例,完成编辑操作...2015-10-30