请朋友帮我想一个这样的算法如何写 这个表,肯定不能形成树了!加上parent 和 child 字段! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同一级别的可能有点难度,有SQL高手的告诉。我想应该要把低级的作为字段,这样好一些。 fid 就是parent 了child 不是必须的你这种结构网上面有很多 class处理只是字段名不同搜一下就能找到了 目的就是展示目录树么?函数加javascript可以实现 <?php/*sortClass 无限分类类*/class sortClass{ //构造函数 public $tree = array();//分类数组 public $option = "";//下拉列表option集合 function __construct($tableName) { global $db; $tempArr = array(); $result = $db->query("select * from $tableName order by orderId asc,id asc"); foreach($result as $key=>$val) { $tempArr[$key] = $val; } $this->init($tempArr); } function init($tempArr,&$sonArr="",$fid="")//初始化tree { foreach($tempArr as $val) { if($val["fid"] == 0 && $sonArr == "" && $fid == "") { $this->tree[$val["id"]]["id"] = $val["id"]; $this->tree[$val["id"]]["fid"] = $val["fid"]; $this->tree[$val["id"]]["orderId"] = $val["orderId"]; $this->tree[$val["id"]]["name"] = $val["name"]; $this->tree[$val["id"]]["son"] = array(); $this->init($tempArr,$this->tree[$val["id"]]["son"],$val["id"]); } elseif(is_array($sonArr) && $val["fid"] == $fid) { $sonArr[$val["id"]]["id"] = $val["id"]; $sonArr[$val["id"]]["fid"] = $val["fid"]; $sonArr[$val["id"]]["orderId"] = $val["orderId"]; $sonArr[$val["id"]]["name"] = $val["name"]; $sonArr[$val["id"]]["son"] = array(); $this->init($tempArr,$sonArr[$val["id"]]["son"],$val["id"]); } } } function getPosition($id)//获取当前位置 { $id = 15; } function getSort()//获取树 { return $this->tree; } function getOption()//获取option { $this->getoptionloop(); return $this->option; } function getoptionloop($tree="",$repeat=0)//获取option循环 { $tree = $tree=="" ? $this->tree : $tree; foreach($tree as $val) { if($repeat == 0) { $this->option .= "<option style='background:#D4D0C8;' value=". $val["id"] .">├" . str_repeat("─",$repeat) . $val["name"] . "</option>"; } else { $this->option .= "<option value=" . $val["id"] . ">├" . str_repeat("─",$repeat) . $val["name"] . "</option>"; } if($val["son"]) { $this->getoptionloop($val["son"],$repeat+1); } } }}?> <?php/*sortClass 无限分类类*/class sortClass{ //构造函数 public $tree = array();//分类数组 public $option = "";//下拉列表option集合 function __construct($tableName) { global $db; $tempArr = array(); $result = $db->query("select * from $tableName order by orderId asc,id asc"); foreach($result as $key=>$val) { $tempArr[$key] = $val; } $this->init($tempArr); } function init($tempArr,&$sonArr="",$fid="")//初始化tree { foreach($tempArr as $val) { if($val["fid"] == 0 && $sonArr == "" && $fid == "") { $this->tree[$val["id"]]["id"] = $val["id"]; $this->tree[$val["id"]]["fid"] = $val["fid"]; $this->tree[$val["id"]]["orderId"] = $val["orderId"]; $this->tree[$val["id"]]["name"] = $val["name"]; $this->tree[$val["id"]]["son"] = array(); $this->init($tempArr,$this->tree[$val["id"]]["son"],$val["id"]); } elseif(is_array($sonArr) && $val["fid"] == $fid) { $sonArr[$val["id"]]["id"] = $val["id"]; $sonArr[$val["id"]]["fid"] = $val["fid"]; $sonArr[$val["id"]]["orderId"] = $val["orderId"]; $sonArr[$val["id"]]["name"] = $val["name"]; $sonArr[$val["id"]]["son"] = array(); $this->init($tempArr,$sonArr[$val["id"]]["son"],$val["id"]); } } } function getPosition($id)//获取当前位置 { $id = 15; } function getSort()//获取树 { return $this->tree; } function getOption()//获取option { $this->getoptionloop(); return $this->option; } function getoptionloop($tree="",$repeat=0)//获取option循环 { $tree = $tree=="" ? $this->tree : $tree; foreach($tree as $val) { if($repeat == 0) { $this->option .= "<option style='background:#D4D0C8;' value=". $val["id"] .">├" . str_repeat("─",$repeat) . $val["name"] . "</option>"; } else { $this->option .= "<option value=" . $val["id"] . ">├" . str_repeat("─",$repeat) . $val["name"] . "</option>"; } if($val["son"]) { $this->getoptionloop($val["son"],$repeat+1); } } }}?> 如果fid是parent的话,楼主貌似是把fid指向id了! php数组差集问题,高级篇,有经验的指点啊?!~! 求一段伪静态规则写法 服务器由iis转换为apache出现字符被截断! 一个表二十几个字段 php文件挂马,在线等 二级域名绑定栏目的实现 已经定义hint=0为啥还要if(hint=0..) 为什么php在iis6中运行后没有任何反应 呢? 如何在自己的网站实现登陆到另外一个网站和得到那个网站的某些内容。在线等答案。 php能实现数据库连接池吗 联动菜单的问题 100分请求实现PHP进行简单文件改名等操作的功能(已经有初步代码).
同一级别的可能有点难度,有SQL高手的告诉。我想应该要把低级的作为字段,这样好一些。
fid 就是parent 了
child 不是必须的你这种结构网上面有很多 class处理
只是字段名不同
搜一下就能找到了
<?php
/*
sortClass 无限分类类
*/
class sortClass
{
//构造函数
public $tree = array();//分类数组
public $option = "";//下拉列表option集合
function __construct($tableName)
{
global $db;
$tempArr = array();
$result = $db->query("select * from $tableName order by orderId asc,id asc");
foreach($result as $key=>$val)
{
$tempArr[$key] = $val;
}
$this->init($tempArr);
}
function init($tempArr,&$sonArr="",$fid="")//初始化tree
{
foreach($tempArr as $val)
{
if($val["fid"] == 0 && $sonArr == "" && $fid == "")
{
$this->tree[$val["id"]]["id"] = $val["id"];
$this->tree[$val["id"]]["fid"] = $val["fid"];
$this->tree[$val["id"]]["orderId"] = $val["orderId"];
$this->tree[$val["id"]]["name"] = $val["name"];
$this->tree[$val["id"]]["son"] = array();
$this->init($tempArr,$this->tree[$val["id"]]["son"],$val["id"]);
}
elseif(is_array($sonArr) && $val["fid"] == $fid)
{
$sonArr[$val["id"]]["id"] = $val["id"];
$sonArr[$val["id"]]["fid"] = $val["fid"];
$sonArr[$val["id"]]["orderId"] = $val["orderId"];
$sonArr[$val["id"]]["name"] = $val["name"];
$sonArr[$val["id"]]["son"] = array();
$this->init($tempArr,$sonArr[$val["id"]]["son"],$val["id"]);
}
}
}
function getPosition($id)//获取当前位置
{
$id = 15;
}
function getSort()//获取树
{
return $this->tree;
}
function getOption()//获取option
{
$this->getoptionloop();
return $this->option;
}
function getoptionloop($tree="",$repeat=0)//获取option循环
{
$tree = $tree=="" ? $this->tree : $tree;
foreach($tree as $val)
{
if($repeat == 0)
{
$this->option .= "<option style='background:#D4D0C8;' value=". $val["id"] .">├" . str_repeat("─",$repeat) . $val["name"] . "</option>";
}
else
{
$this->option .= "<option value=" . $val["id"] . ">├" . str_repeat("─",$repeat) . $val["name"] . "</option>";
}
if($val["son"])
{
$this->getoptionloop($val["son"],$repeat+1);
}
}
}
}
?>
/*
sortClass 无限分类类
*/
class sortClass
{
//构造函数
public $tree = array();//分类数组
public $option = "";//下拉列表option集合
function __construct($tableName)
{
global $db;
$tempArr = array();
$result = $db->query("select * from $tableName order by orderId asc,id asc");
foreach($result as $key=>$val)
{
$tempArr[$key] = $val;
}
$this->init($tempArr);
}
function init($tempArr,&$sonArr="",$fid="")//初始化tree
{
foreach($tempArr as $val)
{
if($val["fid"] == 0 && $sonArr == "" && $fid == "")
{
$this->tree[$val["id"]]["id"] = $val["id"];
$this->tree[$val["id"]]["fid"] = $val["fid"];
$this->tree[$val["id"]]["orderId"] = $val["orderId"];
$this->tree[$val["id"]]["name"] = $val["name"];
$this->tree[$val["id"]]["son"] = array();
$this->init($tempArr,$this->tree[$val["id"]]["son"],$val["id"]);
}
elseif(is_array($sonArr) && $val["fid"] == $fid)
{
$sonArr[$val["id"]]["id"] = $val["id"];
$sonArr[$val["id"]]["fid"] = $val["fid"];
$sonArr[$val["id"]]["orderId"] = $val["orderId"];
$sonArr[$val["id"]]["name"] = $val["name"];
$sonArr[$val["id"]]["son"] = array();
$this->init($tempArr,$sonArr[$val["id"]]["son"],$val["id"]);
}
}
}
function getPosition($id)//获取当前位置
{
$id = 15;
}
function getSort()//获取树
{
return $this->tree;
}
function getOption()//获取option
{
$this->getoptionloop();
return $this->option;
}
function getoptionloop($tree="",$repeat=0)//获取option循环
{
$tree = $tree=="" ? $this->tree : $tree;
foreach($tree as $val)
{
if($repeat == 0)
{
$this->option .= "<option style='background:#D4D0C8;' value=". $val["id"] .">├" . str_repeat("─",$repeat) . $val["name"] . "</option>";
}
else
{
$this->option .= "<option value=" . $val["id"] . ">├" . str_repeat("─",$repeat) . $val["name"] . "</option>";
}
if($val["son"])
{
$this->getoptionloop($val["son"],$repeat+1);
}
}
}
}
?>
如果fid是parent的话,楼主貌似是把fid指向id了!