<?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";

  

PHP生成表格的更多相关文章

  1. java 如何在pdf中生成表格

    1.目标 在pdf中生成一个可变表头的表格,并向其中填充数据.通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表格. 每天生成一个文件夹存储 ...

  2. js动态生成表格

    动态生成表格           *创建一个页面:两个输入框和一个按钮 *代码和步骤                      /*                          1.得到输入的行 ...

  3. Android 自动生成表格

    Layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...

  4. JavaScript案例七:简单生成表格

    JavaScript简单生成表格,巩固基础知识点... <!DOCTYPE html> <html> <head> <title>JavaScript简 ...

  5. 【转】ASP.NET中服务器控件Table动态生成表格及其属性介绍

    下文所有内容转自开源中国:http://www.oschina.net/question/565065_86453#tags_nav ================================= ...

  6. (转载)PHP 动态生成表格

    (转载)http://hi.baidu.com/shawns/item/c7d51f351c6a0482b711dba6 提要:PHP能够高效地生成HTML代码,其中,动态生成表格是实际应用中经常碰到 ...

  7. Ext Designer生成表格

    1.生成表格代码 Ext.MyPanel=Ext.extend(Ext.Panel ,{ xtype:"panel", title:"我的面板", width: ...

  8. Js--动态生成表格

    <div>        <h1>动态生成表格</h1>        <div id="table1">            行 ...

  9. JS动态生成表格后 合并单元格

    JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单 ...

  10. VC编程操作word2010生成表格

    作者:朱金灿 来源:http://blog.csdn.net/clever101 一.   右键单击工程节点,然后选择添加类,如下图: 二.   添加TypeLib中的MFC类,如下图: 三.   选 ...

随机推荐

  1. 深入分析 Linux 内核链表

    转载:http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/   一. 链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指 ...

  2. BootStrap2学习日记5---列表

    常用列表标签有3中如下:<ul><li><ol><li><dl><dt><dd> 例子: <div class ...

  3. javascript的变量、作用域和内存问题

    基本类型和引用类型的值执行环境垃圾收集 ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段引用类型值指那些可能由多个值构成的对象 基本数据类型 ...

  4. python(5) - 冒泡排序

    data = [10, 4, 33, 21, 54, 3, 8, 11, 5, 22, 2, 1, 17, 13] ''' 思路:有多少个元素就循环多少次,每次循环从第一个元素开始与它后面的元素比较, ...

  5. 关于js判断鼠标移入元素的方向——上下左右

    一开始我是这么想的,将待移入的元素分割四块,用mousemove获取第一次鼠标落入的区域来判断鼠标是从哪个方向进去的. 所以只要写个算法来判断鼠标的值落入该元素的区域就可以得出鼠标移入的方向,如下图: ...

  6. [改善Java代码]构造函数尽量简化

    建议34: 构造函数尽量简化 我们知道在通过new关键字生成对象时必然会调用构造函数,构造函数的简繁情况会直接影响实例对象的创建是否繁琐.在项目开发中,我们一般都会制订构造函数尽量简单,尽可能不抛异常 ...

  7. [ImportNew]8张图理解Java

    http://www.importnew.com/11725.html 1.字符串的不变性. 下面这张图展示了这段代码做了什么 String s = "abcd"; s = s.c ...

  8. 看linux连接进程占用的实时流量iftop netatop NetHogs

    因为新工厂的机器上面的业务混合部署非常严重,加上内网外网共用一个网卡(这个更不可思议),导致有时要定位一些进程流量的问题非常困难,所以最近花了点时间在网上搜集了一把  (aptitude search ...

  9. 取消Win7任务栏窗口自动排序

    点击“开始”菜单,在“搜索程序和文件”框中输入“关闭自动窗口排列”,找到后打开,找到“防止将窗口移动到屏幕边缘时自动排列窗口”这一项,勾上后点击确定就可以了.

  10. CSS实现标题超出宽度省略号来表示

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...