php+mysql怎么实现无限级别分类,数据库怎么设计?一条SQL语句读出数据然后生成数组

php+mysql怎么实现无限级别分类,数据库怎么设计?只用一条SQL语句读出数据,怎么解决
+新闻-
|—国际新闻
|—国内新闻
+体育-
|—篮球
|—NBA
|--CBA
表格呈现模式,怎样实现
我说的是树状的无限分类,你说的那种方法我会。
向这样的
新闻
|----国内新闻-
      |------ 体育新闻
            |------CBA新闻
            |-------足球新闻
                  |------八一队

第1个回答  2013-05-23
CREATE TABLE IF NOT EXISTS `sq_cat_id_name` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fid` int(11) NOT NULL,
`cat_name` varchar(128) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=24 ;

INSERT INTO `sq_cat_id_name` (`id`, `fid`, `cat_name`) VALUES
(1, 0, '私有'),
(2, 0, 'no2'),
(3, 1, 'sdf'),
(4, 1, '美媚'),
(5, 1, '好吧'),
(7, 1, '美女'),
(8, 1, '帅哥'),
(9, 2, '笑笑'),
(10, 2, '美女拉拉'),
(11, 2, '好好'),
(12, 2, '小小'),
(13, 5, '好呀'),
(14, 5, '媚美'),
(15, 5, '好S呀'),
(16, 5, '妖美'),
(17, 1, '好呀'),
(18, 12, '好吧'),
(19, 13, '是呀'),
(20, 12, 'okokok'),
(21, 13, '是虹蜡虹'),
(22, 2, '就是这样子'),
(23, 2, '是的吗');

<?php
$link = mysql_connect( '127.0.0.1', 'root', '123456' ) or die( mysql_error() );
mysql_select_db( 'qqsq' );
mysql_set_charset( 'utf8' );

$sql = "SELECT * FROM sq_cat_id_name";

$result = mysql_query( $sql );
$ss = array();
while( $row = mysql_fetch_assoc( $result ) )
{
$ss[$row['fid']][$row['id']] = $row['cat_name'];
}
unset( $row );

mysql_close( $link );

var_dump( $ss );

echo '-------------------------------------------' . "\n";

function for_category( $ss = array(), $a2 )
{
echo "<ul>";
foreach ( $ss as $k => $v )
{
if ( isset( $a2[$k] ) && is_array( $a2[$k] ) )
{ echo "<li>$k $v";
for_category( $a2[$k], $a2 );
echo "</li>";
}
else{
echo "<li>$k $v</li>";
}
}
echo "</ul>";
}

for_category( $ss[0], $ss );

如用疑问请联系 php.xlxz.org
第2个回答  2009-04-19
你说的无限级别,不是树状无限吧,只是说类别的个数无限,级别只有两级,对吧

一般大类不会很多,可以使用一个字符来表示,例如用A~Z进行编码,A为新闻、B为体育、……

新闻的类别可以设置为字符类型,第一位表示大累,后面的表示小类,例如A001国际新闻、A002国内新闻、B001篮球、……

建立两个表,一个是新闻大类表,两个字段:大类代码、大类名称;另外一个类别表,也是两个字段:类别代码、类别名称

在你的新闻表里面,只使用一个字符类型的类别字段就可以了。

要产生你那样的树状目录输出,起始非常简单,只要你的SQL语句按照类别进行排序就行了,程序检测每一条数据是否和上面的类别相同,以确定前面是显示+还是|,仅此而已。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网