100分求一思路 相同的信息字段相同,各异的信息都放在一个字段里如content,里面放的是序列化后的数组,如 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但是如果每个分类都新建立一个附加表的话,我认为不太合理这样没什么问题,你写的是cms,每个分类可看作是一个相对独立的模块了,独立表是正常的,如果一个表数据多,同样的分类拆成几个表也是可能的 大概意思是这样:Name field1 field2 field3 type房屋 var1 var1 var1 hourse汽车 var1 var1 var1 car自行车 var1 var1 var1 bike通过type取得不同的结果,二每个字段的类型通过业务层去进行转化,conver函数再说的简单些,你让数据库的数据类型是若类型,好比javascript,通过对业务对象处理来编程强类型即可当然,你要保证字段足够,当然这要看你程序而定了,我说的是大概思路,明白即可! 100多个字段,那就再多加一个字段了,大概意思是这样:Name val type fileName房屋 var1 var1 房子大小房屋 var2 var1 房子面积房屋 var3 var1 房子其他汽车 var11 var1 汽车大小汽车 var11 var1 汽车价格……………… 第一:我感觉楼主的各个类别之间没有直接联系,可以分成独立表。第二:如果楼主想通过一个主表来调用其它的附加表就必须添加private key,然后调用。 T_1:分类共有字段。id,title,description等等。T_2:分类附加字段。id,class_id,name,type[input,textarea.....] //T_2.class_id<--T_1.id T_1,T_2之间可以做个表连接他们,那样就可以让附加字段属于多个分类。T_3:内容附加字段数据表。article_id,extra_id,value //T_3.extra_id<--T_2.id 数据多了可以分表嘛要不你看看php168的内容分类系统。 <?php//无限分类类class sortClass{ /* getTree();返回排序好的节点数组,每个节点的深度已经整理好了 getList($root,$self);//获取指定节点下面的子节点,$root指节点id,self指是否包括自身节点id,0为不包括,默认为1 getList(0,0)获取所有节点,不包括“顶级节点”,因为顶级节点没有存放到lineRs数组当中去,一般也用不到 其它情况正常使用 getPosition($id,$self=1);返回当前位置,默认包括自己 getRootFid($id)//获取当前分类的最顶级分类id */ public $child = array(); public $parent = array(); public $name = array(); public $lineRs = array();//行记录 function __construct($sql)//构造函数 { global $db; $this->setNode(0, -1, '顶极节点'); $result = $db->query($sql); foreach($result as $val) { $this->lineRs[$val["id"]] = $val; $this->setNode($val["id"],$val["fid"]); } $this->initDepth(); } function getTree() { return $this->lineRs;//构造函数返回初始化好的节点数组 } function setNode($id,$parent) { $this->child[$parent][] = $id; $this->parent[$id] = $parent; } function initDepth($root=0,$depth=0)//初始化节点深度 { if (!isset($this->child[$root])) return; foreach ($this->child[$root] as $key=>$id) { $this->lineRs[$id]["depth"] = $depth; if (isset($this->child[$id])) { if ($this->child[$id]) $this->initDepth($id,$depth+1); } } } function getList($root=0,$self=1) { $tree = array(); if($self == 1) { $tree[] = $root; } $this->getList_1($root,$tree); return $tree; } function getList_1($root,&$tree) { if (!isset($this->child[$root])) return; foreach ($this->child[$root] as $key=>$id) { $tree[] = $id; if (isset($this->child[$id])) { $this->getList_1($id,$tree); } } } function getPosition($id,$self=1) { $position = array(); if($self == 1) { $position[] = $id; } while($this->parent[$id] != 0) { $id = $this->parent[$id]; $position[] = $id; } //return implode(array_reverse($position)," → "); return array_reverse($position); } function getRootFid($id) { while($this->parent[$id] != 0) { $id = $this->parent[$id]; } return $id; }}//使用方法//include("include.php");//$sql = "select * from aa order by orderId asc,id asc";//$sort = new sortClass($sql);//$tree = $sort->getTree();//$childes = $sort->getList(0,0);//foreach($childes as $key=>$id)//{// echo str_repeat("-",$tree[$id]["depth"]) . $tree[$id]["name"] . "<br>";//}//echo "<hr>";//$postion = $sort->getPosition(5);//foreach($postion as $key=>$id)//{// echo $tree[$id]["name"] . " -> ";//}?> 像这种微博指数、微博价值测试的网站他是怎么弄的.www.weibozhishu.com它不但能测试sina,qq ,sohu,求教 低学历是否适合学习PHP?求帮助! 点击smarty模板文件tpl文件问什么会出现下载 正则表达式研究——匹配重复标签和嵌套标签 在web开发领域,你认为自己处于哪个级别? 讨论一下我纠结了两天的网页编码问题。。。。 在mysql里大家都用什么类型保存money字段? 求助,关于取得MySql自增字段。 关与安全问题!请大家进来讨论一下! ecshop这个url重写哪里出错了 php 能不能做浏览器 看到过好多网站有这样的功能不知道是不是免费的啊?
Name field1 field2 field3 type
房屋 var1 var1 var1 hourse
汽车 var1 var1 var1 car
自行车 var1 var1 var1 bike通过type取得不同的结果,二每个字段的类型通过业务层去进行转化,conver函数再说的简单些,你让数据库的数据类型是若类型,好比javascript,通过对业务对象处理来编程强类型即可当然,你要保证字段足够,当然这要看你程序而定了,我说的是大概思路,明白即可!
Name val type fileName
房屋 var1 var1 房子大小
房屋 var2 var1 房子面积
房屋 var3 var1 房子其他
汽车 var11 var1 汽车大小
汽车 var11 var1 汽车价格
………………
第二:如果楼主想通过一个主表来调用其它的附加表就必须添加private key,然后调用。
T_1:分类共有字段。id,title,description等等。
T_2:分类附加字段。id,class_id,name,type[input,textarea.....] //T_2.class_id<--T_1.id T_1,T_2之间可以做个表连接他们,那样就可以让附加字段属于多个分类。
T_3:内容附加字段数据表。article_id,extra_id,value //T_3.extra_id<--T_2.id 数据多了可以分表嘛要不你看看php168的内容分类系统。
//无限分类类
class sortClass
{
/*
getTree();返回排序好的节点数组,每个节点的深度已经整理好了
getList($root,$self);//获取指定节点下面的子节点,$root指节点id,self指是否包括自身节点id,0为不包括,默认为1
getList(0,0)获取所有节点,不包括“顶级节点”,因为顶级节点没有存放到lineRs数组当中去,一般也用不到
其它情况正常使用
getPosition($id,$self=1);返回当前位置,默认包括自己
getRootFid($id)//获取当前分类的最顶级分类id
*/
public $child = array();
public $parent = array();
public $name = array();
public $lineRs = array();//行记录
function __construct($sql)//构造函数
{
global $db;
$this->setNode(0, -1, '顶极节点');
$result = $db->query($sql);
foreach($result as $val)
{
$this->lineRs[$val["id"]] = $val;
$this->setNode($val["id"],$val["fid"]);
}
$this->initDepth();
}
function getTree()
{
return $this->lineRs;//构造函数返回初始化好的节点数组
}
function setNode($id,$parent)
{
$this->child[$parent][] = $id;
$this->parent[$id] = $parent;
}
function initDepth($root=0,$depth=0)//初始化节点深度
{
if (!isset($this->child[$root])) return;
foreach ($this->child[$root] as $key=>$id)
{
$this->lineRs[$id]["depth"] = $depth;
if (isset($this->child[$id]))
{
if ($this->child[$id]) $this->initDepth($id,$depth+1);
}
}
}
function getList($root=0,$self=1)
{
$tree = array();
if($self == 1)
{
$tree[] = $root;
}
$this->getList_1($root,$tree);
return $tree;
}
function getList_1($root,&$tree)
{
if (!isset($this->child[$root])) return;
foreach ($this->child[$root] as $key=>$id)
{
$tree[] = $id;
if (isset($this->child[$id]))
{
$this->getList_1($id,$tree);
}
}
}
function getPosition($id,$self=1)
{
$position = array();
if($self == 1)
{
$position[] = $id;
}
while($this->parent[$id] != 0)
{
$id = $this->parent[$id];
$position[] = $id;
}
//return implode(array_reverse($position)," → ");
return array_reverse($position);
}
function getRootFid($id)
{
while($this->parent[$id] != 0)
{
$id = $this->parent[$id];
}
return $id;
}
}
//使用方法
//include("include.php");
//$sql = "select * from aa order by orderId asc,id asc";
//$sort = new sortClass($sql);
//$tree = $sort->getTree();
//$childes = $sort->getList(0,0);
//foreach($childes as $key=>$id)
//{
// echo str_repeat("-",$tree[$id]["depth"]) . $tree[$id]["name"] . "<br>";
//}
//echo "<hr>";
//$postion = $sort->getPosition(5);
//foreach($postion as $key=>$id)
//{
// echo $tree[$id]["name"] . " -> ";
//}
?>