您的位置:首页 > 编程语言 > PHP开发

PHP生成表格

2015-11-04 15:46 176 查看
<?php
/*

DROP TABLE IF EXISTS `art`;

CREATE TABLE `art` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL DEFAULT '0',
`cate` char(10) NOT NULL,
`path` char(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

LOCK TABLES `art` WRITE;

INSERT INTO `art` (`id`, `pid`, `cate`, `path`)
VALUES
(1,0,'a1','4'),
(2,1,'b1','2'),
(3,1,'b2','2'),
(4,3,'c3',''),
(5,3,'c2',''),
(6,2,'c1',''),
(7,2,'c4',''),
(8,0,'A2','5'),
(9,8,'A2-B1','3'),
(10,9,'A2-B1-C1',''),
(11,9,'A2-B1-C2',''),
(13,9,'A2-B1-C3',''),
(14,8,'A2-B2','1'),
(15,14,'A2-B2-C1',''),
(16,8,'A2-B3','1'),
(17,16,'A2-B3-C1',''),
(18,0,'A3','1'),
(19,18,'A3-B1','1'),
(20,19,'A3-B1-C1','');

UNLOCK TABLES;

*/
header('Content-type:text/html;charset=utf-8');
$connect = mysqli_connect('localhost', 'root', 'newpass', 'security');
$connect->query('set names utf8');

$query = $connect->prepare('select * from art');

$query->execute();
$query->bind_result($id, $pid, $cate, $path);

$arr = [];
while ($query->fetch()) {
// printf("%s %s\n", $id, $text);
// echo "id: {$id} - text: {$text} <br />";
// echo "id: {$id} - text: " . _escape_string($text) . " <br /> \n";
// echo "id: {$id} - text: " . $cate . " <br /> \n";
$arr[] = [
'id'   => $id,
'pid'  => $pid,
'cate' => $cate,
'path' => $path // 每一个大分类中考核总数
];
}

function tree($pid = 0, $arr) {
$tree = '';
foreach($arr as $cate) {
if ($pid == $cate['pid']) {
$cate['son'] = tree($cate['id'], $arr);
$tree[] = $cate;
}
}

return $tree;
}

$data = tree(0, $arr);

echo "<table border='1'>\n";

foreach($data as $row) {
//var_dump($row);continue;
// 一级分类、二级分类第一行以及三级分类第一行
echo "<tr>\n";
echo "<td rowspan='{$row['path']}'>{$row['cate']}</td>\n";
echo "<td rowspan='{$row['path']}'>10</td>\n";
echo "<td rowspan='{$row['path']}'>编辑 删除 增加</td>\n";
echo "<td rowspan='{$row['son'][0]['path']}'>{$row['son'][0]['cate']}</td>\n";
echo "<td rowspan='{$row['son'][0]['path']}'>mf</td>\n";
echo "<td rowspan='{$row['son'][0]['path']}'>编辑 删除 增加</td>\n";
echo "<td >{$row['son'][0]['son'][0]['cate']}</td>\n";
echo "<td >sf</td>\n";
echo "<td >编辑 删除 增加</td>\n";
echo "</tr>\n";

// 补全二级分类第一行的所有下级分类
for($i = 1; $i <= count($row['son'][0]['son']) - 1; $i++) {
echo "<tr>\n";
echo "<td >{$row['son'][0]['son'][$i]['cate']}</td>\n";
echo "<td >sf</td>\n";
echo "<td >编辑 删除 增加2</td>\n";
echo "</tr>\n";
}

// 补全二级分类
// for($j = 1; $j <= count($row['son']) - 1; $j++) {
for($j = 1; $j < count($row['son']); $j++) {
echo "<tr>\n";
echo "<td rowspan='{$row['son'][$j]['path']}'>{$row['son'][$j]['cate']}</td>\n";
echo "<td rowspan='{$row['son'][$j]['path']}'>mf</td>\n";
echo "<td rowspan='{$row['son'][$j]['path']}'>编辑 删除 增加3</td>\n";
echo "<td >{$row['son'][$j]['son'][0]['cate']}</td>\n";
echo "<td >sf</td>\n";
echo "<td >编辑 删除 增加</td>\n";
echo "</tr>\n";
}

// 二级分类的下级行
for($k = 1; $k < count($row['son']); $k++) {
for( $l = 1; $l < count($row['son'][$k]['son']); $l++) {
echo "<tr>\n";
echo "<td >{$row['son'][$k]['son'][$l]['cate']}</td>\n";
echo "<td >sf</td>\n";
echo "<td >编辑 删除 增加2</td>\n";
echo "</tr>\n";
}
}
}

echo "</table>\n";


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: