<?php
date_default_timezone_set('PRC'); header('Content-type:text/html;charset=UTF-8');
/*
$a_list = array( 1=>array('ID'=>1, 'PARENT'=>0, 'NAME'=>'祖父'), 2=>array('ID'=>2, 'PARENT'=>1, 'NAME'=>'父亲'), 3=>array('ID'=>3, 'PARENT'=>1, 'NAME'=>'叔伯'), 4=>array('ID'=>4, 'PARENT'=>2, 'NAME'=>'自己'), 5=>array('ID'=>5, 'PARENT'=>4, 'NAME'=>'儿子'), 6=>array('ID'=>6, 'PARENT'=>5, 'NAME'=>'孙子'), 7=>array('ID'=>7, 'PARENT'=>2, 'NAME'=>'姐妹'), 8=>array('ID'=>8, 'PARENT'=>3, 'NAME'=>'表亲'), 9=>array('ID'=>9, 'PARENT'=>7, 'NAME'=>'甥儿'), 10=>array('ID'=>10, 'PARENT'=>4, 'NAME'=>'女儿'), 11=>array('ID'=>11, 'PARENT'=>10, 'NAME'=>'外孙'), 12=>array('ID'=>12, 'PARENT'=>5, 'NAME'=>'孙女'),
13=>array('ID'=>13, 'PARENT'=>0, 'NAME'=>'祖父的哥'),
14=>array('ID'=>14, 'PARENT'=>13, 'NAME'=>'祖父的哥的儿子'), );
$str = '';
function tree($tree,$id,$lev='|--'){
$str = '';
foreach ($tree as $key=>$items)
{
if($items['PARENT']==$id){
$newid=$items['ID'];
//$str .= '<dd style="background-color:#CCC; line-height:2em; border:1px solid #CCC; margin-top:3px;">'.$lev.$items['NAME']."---<a onclick=\"alert('删除栏目ID: '+{$items['ID']})\">点击删除---<a onclick=\"alert('insert into (id,{$items['ID']},{$items['NAME']}下级)')\">增加子栏目</a></dd>";
$str .= '<dd>'.$lev.$items['NAME'].'</dd>';
$str .= tree($tree,$newid," ".$lev); }
}
return $str;
}
foreach ($a_list as $key=>$items){
if($items['PARENT']==0)
{
$str .= sprintf('<dt onclick="alert(\'insert into (id,%d,顶级的下级)\')">%s<dt>',$items['PARENT'],$items['NAME']);
$str .= tree($a_list,$items['ID']);
} }
//显示树型.
echo '<dl>';
echo $str;
echo '</dl>'; //删除ID做法.
foreach ($a_list as $id => $item){
if ($item['PARENT']){
unset($a_list[$id]['PARENT'],$a_list[$id]['NAME']);
$a_list[$item['PARENT']][$item['ID']] = &$a_list[$id];
}
}
//获得自己的全部子孙,自己的ID为4
function array_($_list){
static $deleid;
foreach ($_list as $key => $val){
if(is_array($val))
array_($val);
if($key === 'ID')
$deleid[] = $_list[$key];
}
return $deleid;
}
//让GET提交一个删除ID过来.获得数组, 然后用 delete in();
$arr = array_($a_list[1]);
echo '这就是你所需要删除的ID 及其下的子ID;<br>';
print_r($arr); exit;
*/ /*
CREATE TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL DEFAULT '0',
`cname` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
**/
mysql_connect('localhost', 'root', '') or die('Cannot connected to mysql server');
mysql_select_db('security');
mysql_query('set names utf8'); $sql = 'select * from category';
$rs = mysql_query($sql);
/*
function c($id) {
global $rs;
while ($row = mysql_fetch_assoc($rs)) {
if($row['pid'] == $id) {
$result[$row['id']] = $row;
$index[$row['id']] =& $result[$row['id']];
}else {
$index[$row['pid']][$row['id']] = $row;
$index[$row['id']] =& $index[$row['pid']][$row['id']];
}
} return $result;
} $v = c(0);
var_dump($v);
exit;
*/ $categories = array();
while ($row = mysql_fetch_assoc($rs)) {
$categories[] = $row;
} /*
foreach ($categories as &$r) {
if ($r['pid']) { // 如果有父类
foreach ($categories as &$r2) { // 循环 找到父类 移到父类下
if ($r['pid'] == $r2['id']) {
$r2['children'][] = &$r;
}
}
//unset($categories[$k]);
}
} foreach ($categories as $k=>$v) {
if ($v['pid']) {
unset($categories[$k]);
}
}
var_dump($categories);
exit;
*/ //$arr = get_comment($categories);
//echo get_tree($arr); /*
function pt($arr, $pid = 0) {
$tree = array();
foreach ($arr as $value) {
if ($value['pid'] == $pid) {
$value['son'] = pt($arr, $value['id']);
$tree[] = $value;
}
}
return $tree;
} $tree_arr = pt($categories);
exit;
*/ echo '<select>';
treew($categories);
echo '</select>'; function treew($arr, $pid = 0, $n = 0){
$s = str_pad('',$n,'-');
$s = str_replace('-', '  ', $s); for ($i=0; $i < count($arr); $i++) {
if ($pid == $arr[$i]['pid']) {
echo '<option>' . $s .$arr[$i]['cname']. "</option>\n";
treew($arr, $arr[$i]['id'], $n+1);
}
}
} function get_comment($categories, $pid = 0) {
$array = array();
foreach ($categories as $key => $value) {
if ($pid == $value['pid']) {
$value['son'] = get_comment($categories, $value['id']);
$array[] = $value;
}
} return $array;
} function get_tree($arr) {
$html = '';
foreach ($arr as $key => $value) {
if (empty($value['son'])) {
$html .= $value['cname'] . '<br/>';
} else {
$html .= $value['cname'] . get_tree($value['son']) . '<br/>';
}
}
return $html; } exit; $SQL = 'SELECT * FROM sql_in WHERE id = ? LIMIT ?'; echo compile_binds($SQL, array(5,2,3)); function compile_binds($sql, $binds, $bind_marker = '?') { if (strpos($sql, $bind_marker) === FALSE) {
return $sql;
} if ( ! is_array($binds)) {
$binds = array($binds);
} $segments = explode($bind_marker, $sql); if (count($binds) >= count($segments)) {
$binds = array_slice($binds, 0, count($segments)-1);
} $result = $segments[0];
$i = 0; foreach ($binds as $bind)
{
$result .= _escape($bind);
$result .= $segments[++$i];
} return $result;
} function _escape($escape_obj) {
/*
if ($like === TRUE) {
$str = str_replace(array('%', '_'), array('\\%', '\\_'), $str);
}
*/ if (is_array($escape_obj)) {
foreach ($escape_obj as $key => $value) {
$escape_obj[$key] = _escape($value);
} return $escape_obj;
} return addslashes($escape_obj);
}

  

php无极分类的更多相关文章

  1. ASP.MVC EASY UI 入门之 —— Tree & ComboTree

    1.常规的EASY UI的tree和comboTree代码基本是官方的DEMO都有的,虽然很简单,但是还是要实践的做一次,才能更清晰的了解和使用它!先上效果图 因为用的是code first,所以数据 ...

  2. 神经网络、logistic回归等分类算法简单实现

    最近在github上看到一个很有趣的项目,通过文本训练可以让计算机写出特定风格的文章,有人就专门写了一个小项目生成汪峰风格的歌词.看完后有一些自己的小想法,也想做一个玩儿一玩儿.用到的原理是深度学习里 ...

  3. 开源 iOS 项目分类索引大全 - 待整理

    开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...

  4. Atitit 图像处理和计算机视觉的分类 三部分 图像处理 图像分析 计算机视觉

    Atitit 图像处理和计算机视觉的分类 三部分 图像处理 图像分析 计算机视觉 1.1. 按照当前流行的分类方法,可以分为以下三部分:三部分 图像处理 图像分析 计算机视觉1 1.2. 图像处理需要 ...

  5. Atitit 知识管理的重要方法 数据来源,聚合,分类,备份,发布 搜索

    Atitit 知识管理的重要方法 数据来源,聚合,分类,备份,发布 搜索 1.1. Rss 简易信息聚合(也叫聚合内容 Really Simple Syndication1 1.1. Rss 简易信息 ...

  6. 8.SVM用于多分类

    从前面SVM学习中可以看出来,SVM是一种典型的两类分类器.而现实中要解决的问题,往往是多类的问题.如何由两类分类器得到多类分类器,就是一个值得研究的问题. 以文本分类为例,现成的方法有很多,其中一劳 ...

  7. SVM分类与回归

    SVM(支撑向量机模型)是二(多)分类问题中经常使用的方法,思想比较简单,但是具体实现与求解细节对工程人员来说比较复杂,如需了解SVM的入门知识和中级进阶可点此下载.本文从应用的角度出发,使用Libs ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(43)-工作流设计-字段分类设计

    系列目录 建立好42节的表之后,每个字段英文表示都是有意义的说明.先建立,就知道表的关系和用处了,当然,我的设计只是一个参考,你可能有很多改进的地方. 我们的工作流具体细节流程是这样的: 最终我们的模 ...

  9. 从零开始编写自己的C#框架(21)——添加分类类型页面

    页面权限与页面控件权限经过简单的调试后,终于启用起来了,以后大家添加新页面时,就必须按照本章介绍的方法,将你新增的页面注册到系统中,这样才能访问与进行相关操作. 下面讲讲如何创建一个分类类型的页面. ...

随机推荐

  1. CISCO 双线接入MAP配置详解

      随着我国宽带技术的普及,各个公司都会有一至二条Internet接入线路,这些线路可能由电信.网通.长宽.联通等不同的IS提供,尽管他们在局端采用的技术可能有不同,但对客户而言都是同样接入方式,以太 ...

  2. python中文处理之encode/decode函数

    python中文处理相信迷惑过不少同学.下面说说python2/3的encode和decode函数. python2中,使用decode()和encode()来进行解码和编码,以unicode类型作为 ...

  3. C# 之 Stream 和 byte[] 的相关转换

    1.二进制转换为图片 MemoryStream ms = new MemoryStream(bytes); ms.Position = ; Image img = Image.FromStream(m ...

  4. How to update FVDI Commander driver to latest V2015.6.2

    As FVDI Commander products are upgraded to new versions, I often receive emails from customers askin ...

  5. Java设计模式13:常用设计模式之桥接模式(结构型模式)

    1. Java之桥接模式(Bridge Pattern) (1)概述: 首先我们说一个生活中的例子:       就拿汽车在路上行驶的来说.即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也 ...

  6. Visual studio 2013 添加 GitHub

  7. python(6)-shutil模块

    高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中: #源码 def copyfileobj(fsr ...

  8. 属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter

    属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter 一.普通的get 和set 属性. 一般的get 和set 属 ...

  9. jboss部署出现MarshalOutputStream找不到错误

    在jboss EAP 6.3上部署一个war时,项目使用oracle coherence做为缓存,出现如下错误 Caused by: java.lang.NoClassDefFoundError: s ...

  10. MSP430常见问题之LCD 显示驱动类

    Q1:晶体一般都是接32768,然后使用液晶很正常.我打算将晶体接6M的替换32768,那么液晶还能正常显示吗A1:看你所用的LCM 模块时序极限是多少HZ,然后看6M情况下,MSP430去驱动LCM ...