<?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. Python Thread

    lock 对象: acquire():负责取得一个锁.如果没有线程正持有锁,acquire方法会立刻得到锁.否则,它闲意态等锁被释放. 一旦acquire()返回,调用它的线程就持有锁. releas ...

  2. linux下 yum源、rpm、源代码安装mysql

    mysql的安装 一.yum源格式安装mysql 1.将下载的yum包上传到linux上: [root@localhost ~]# ls mysql-community-release-el6-5.n ...

  3. 向MyEclipse添加Oracle数据库

    向MyEclipse添加Oracle数据库 1.点击下面圈起来的位置,打开MyEclipse database Explorer视图. 2.在如图空白处右击,选择new进入New Database C ...

  4. pgpool postgresql集群、中间件

    pgpool-II是一个工作于PostgreSQL服务器端和PostgreSQL客户端之间的中间件,它提供了如下的功能: 1.连接池 pgpool-II中保存了到PostgreSQL服务器的连接,然后 ...

  5. 转:nginx 从入门到精通的博文

    转:http://tengine.taobao.org/book/ Nginx开发从入门到精通   缘起 nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众 ...

  6. JAVA网络编程常见问题

    一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...

  7. OpenShare vs Sharepoint

    光合信息Openshare是基于SharePoint,Exchange等开发的企业协同门户产品,许多朋友问为什么不直接就用Sharepoint建立企业门户解决方案,而要建议用OpenShare来进行? ...

  8. HTTP - 基本认证

    有数百万的人在用 Web 进行私人事务处理,访问私有的数据.通过 Web 可以很方便地访问这些信息,但是仅仅是方便访问还是不够的.我们要保证只有特定的人能看到我们的敏感信息并且能够执行我们的特权事务. ...

  9. Nginx - HTTP Configuration, the Location Block

    Nginx offers you the possibility to fine-tune your configuration down to three levels — at the proto ...

  10. java源码研究--List中的set和add方法区别

    在处理一道题目是,发现他们使用了List 中的set 方法,这个方法我平时很少用到,今天来研究一下,set和add的区别 add(int index,Object obj)方法与set(int ind ...