php无极分类

<?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 οnclick=\"alert('删除栏目ID: '+{$items['ID']})\">点击删除---<a οnclick=\"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 οnclick="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);
}

  

转载于:https://www.cnblogs.com/adtuu/p/4799903.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值