<?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. Web开发接口测试工具——Postman插件的使用(chrome浏览器)

    Postman是chrome浏览器的一款插件.Postman 可以模拟 http 请求的发送,并自动解析 JSON 和 XML 的返回数据. 可以手动的去配置各类 parameter,还支持 Basi ...

  2. 想学React Native?你只需要一个App!(11月5号更新)

    最近有点空闲时间,顺手研究下react-native,2013年的时候在老师的指导下使用jQuery Mobile做过手机应用,那个运行速度慢呀!让我对WebApp和PhoneGap这一类的跨平台Ap ...

  3. ng中用$http接后台接口的异步坑

    最近笔者在一个项目中用ng去接后台的接口.因为前后端都是新手,前端的不懂后台,且没有经验:后端的不懂前端,也没有经验,然后接口bug百出,文档写得乱.一个接口,后台改了三次,我也是寸步难行. 首先来看 ...

  4. NSURLConnection、NSURLSession

    NSURLConnection   1.准备网络资源地址:URL 注意:由于URL支持26个英文字母,数字和少数的几个特殊字符. 因此对于URL中包含非标准URL的字符,需要进行编码. iOS提供了函 ...

  5. javaScript入门--引用类型

    前面提到过,引用类型的值便是对象,在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起,而对象则是某个特定引用类型的实例. var a=new Object(); 上面便声明了 ...

  6. s实现指定时间自动跳转到某个页面

    --js实现指定时间自动跳转到某个页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  7. Yii2高级版本复制新项目出现问题解决(转)

    引用于 http://www.linuxidc.com/Linux/2015-02/114116.htm Yii2高级版本复制新项目会遇到下面的报错信息: exception 'yii\base\In ...

  8. LeetCode 283

    Move Zeros Given an array nums, write a function to move all 0's to the end of it while maintaining ...

  9. 基于Selenium2+Java的UI自动化(5) - 执行JavaScript脚本

    一.操作日期选择框 QQ图片20161118215530.png1336x545 22.6 KB 说明:日期选择框大部分是不支持前端输入的,因为这个对象是 readOnly,只读属性,selenium ...

  10. Angular 2.0 从0到1 (七)

    第一节:Angular 2.0 从0到1 (一)第二节:Angular 2.0 从0到1 (二)第三节:Angular 2.0 从0到1 (三)第四节:Angular 2.0 从0到1 (四)第五节: ...