<?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);
}