Skip to content

Commit 35fdca5

Browse files
jiehu0992gitee-org
authored andcommitted
多种现代家谱word样式如有错误多为数据还没录入到一定量,我这是没问题的
Signed-off-by: jiehu0992 <[email protected]>
1 parent c3df53f commit 35fdca5

11 files changed

+2724
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
<?php
2+
//需配合word-xianshuhoujiapu.php使用
3+
function print_family_and_people_tree($family_tree, $trees, $pepoles) {
4+
5+
function print_family_tree($node, $level = 0, $max_level = 5) {
6+
if ($level > $max_level) {
7+
return;
8+
}
9+
$indent = str_repeat('', $level * 5);
10+
echo "<li>";
11+
if ($node['sex'] == '') {
12+
echo "<span style='color: #ff1493;'><i class='icon-minus-sign'></i>{$indent}{$node['name']}</span>";
13+
} else {
14+
echo "<span><i class='icon-minus-sign'></i>{$indent}{$node['name']}</span>";
15+
}
16+
if (count($node['children']) > 0) {
17+
echo "<ul>";
18+
foreach ($node['children'] as $child) {
19+
print_family_tree($child, $level + 1, $max_level);
20+
}
21+
echo "</ul>";
22+
}
23+
echo "</li>";
24+
}
25+
26+
function get_descendants($node) {
27+
$descendants = array();
28+
if (!empty($node['children'])) {
29+
foreach ($node['children'] as $child) {
30+
$descendants[] = $child;
31+
$descendants = array_merge($descendants, get_descendants($child));
32+
}
33+
}
34+
return $descendants;
35+
}
36+
37+
foreach ($trees as $tree) {
38+
$id = $tree['id'];
39+
$min_gen = $tree['min_gen'];
40+
$max_gen = $tree['max_gen'];
41+
42+
if (isset($family_tree[$id])) {
43+
echo "<h2>{$family_tree[$id]['name']}的后代</h2>";
44+
echo "<ul class='tree'>";
45+
print_family_tree($family_tree[$id], $min_gen, $max_gen);
46+
echo "</ul>";
47+
}
48+
}
49+
50+
foreach ($pepoles as $tree) {
51+
$id = $tree['id'];
52+
$min_dc = $tree['min_dc'];
53+
$max_dc = $tree['max_dc'];
54+
55+
$root_node = $family_tree[$id];
56+
echo "<h2>{$root_node['name']}的后代</h2>";
57+
echo "<div class='tree'>";
58+
59+
if (isset($family_tree[$id])) {
60+
$descendants = get_descendants($family_tree[$id]);
61+
$descendants[] = $family_tree[$id];
62+
usort($descendants, function($a, $b) {
63+
return $a['dc'] == $b['dc'] ? $a['dorder'] - $b['dorder'] : $a['dc'] - $b['dc'];
64+
});
65+
66+
for ($generation = $min_dc; $generation <= $max_dc; $generation++) {
67+
$zibei = '';
68+
foreach ($descendants as $node) {
69+
if ($node['dc'] == $generation) {
70+
$zibei = $node['zibei'];
71+
break;
72+
}
73+
}
74+
echo "<h3>第{$generation}{$zibei}字辈</h3>";
75+
foreach ($descendants as $node) {
76+
if ($node['dc'] == $generation) {
77+
$name = "<span style=\"color: red;\"><b>{$node['name']}</b></span> ";
78+
$zi = $node['zi']; // 添加这一行来赋值
79+
echo "<li>{$name}{$zi}</li>";
80+
}
81+
}
82+
}
83+
}
84+
echo "</div>";
85+
}
86+
}
87+
88+
?>

type/word-xianshuhoujiapu.php

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5+
<title>刘三才后裔刘氏家族族谱树先树后家谱</title>
6+
<meta name="keywords" content="刘氏族谱,族谱,刘氏家谱,家谱树,爱视传媒">
7+
<meta name="description" content="自价、金二祖人川至今已近六百年历史,三才祖之后亦有四百多年。目前人数众多,分布省内外,很少联系往来,不少人祖宗、祖籍观念淡薄,上不知祖宗之根,下不知自已之源,甚至辈份都不清楚。虽然同根共祖具有相同血统和基因,但如同散沙,怎能互助互爱团结拼搏?在这世纪之交,在改革开放实行市场经济的形势下,我们不能辱没祖宗,一定要承上启下,继往开来,继承和发扬祖先耕读传家,拼搏不息,开拓进取的精神,以续谱为纽带,团结全族老小共同奋斗,从振兴家族做起,为中华的振兴作出贡献,为我氏在各族之林赢得一席之地">
8+
<link rel="stylesheet" type="text/css" href="/css/style.css" />
9+
<link rel="stylesheet" type="text/css" href="/css/bootstrap.min.css" />
10+
<!--主要样式-->
11+
<script type="text/javascript" src="/js/context-menu.js"></script>
12+
<script type="text/javascript" src="/js/jquery-1.7.2.min.js"></script>
13+
<script type="text/javascript">
14+
$(function(){
15+
$('.tree li:has(ul)').addClass('parent_li').find(' > span').attr('title', '收起子孙族谱树');
16+
$('.tree li.parent_li > span').on('click', function (e) {
17+
var children = $(this).parent('li.parent_li').find(' > ul > li');
18+
if (children.is(":visible")) {
19+
children.hide('fast');
20+
$(this).attr('title', '展开子孙族谱树').find(' > i').addClass('icon-plus-sign').removeClass('icon-minus-sign');
21+
} else {
22+
children.show('fast');
23+
$(this).attr('title', '收起子孙族谱树').find(' > i').addClass('icon-minus-sign').removeClass('icon-plus-sign');
24+
}
25+
e.stopPropagation();
26+
});
27+
});
28+
</script>
29+
</head>
30+
<body>
31+
<div class="tree well">
32+
<?php
33+
header('Content-Type: text/html; charset=utf-8');
34+
//现代版家谱,先树后家谱 //需配合word-xianshuhoujiapu-function.php使用
35+
include '../header.php';
36+
// 连接数据库
37+
include '../conn.php'; // 或者使用 require 'conn.php';
38+
39+
40+
// 检查当前字符集
41+
mysqli_query($link, "SET NAMES 'utf8'");
42+
mysqli_query($link, "SET CHARACTER SET utf8");
43+
44+
// Prepare the query to fetch the required data
45+
$stmt = mysqli_prepare($link, "SELECT id, name, pid, dorder, sex, dc, zibei, zi, hao, year, dieday, gdad, dad, mother, brother, sisters, rank, zhiye, xueli, wname, son, daughter, other FROM tree_lr");
46+
if (!$stmt) {
47+
die('mysqli_prepare failed: ' . mysqli_error($link));
48+
}
49+
50+
mysqli_stmt_execute($stmt);
51+
52+
if (mysqli_stmt_errno($stmt)) {
53+
die('mysqli_stmt_execute failed: ' . mysqli_stmt_error($stmt));
54+
}
55+
56+
mysqli_stmt_bind_result($stmt, $id, $name, $pid, $dorder, $sex, $dc, $zibei, $zi, $hao, $year, $dieday, $gdad, $dad, $mother, $brother, $sisters, $rank, $zhiye, $xueli, $wname, $son, $daughter, $other);
57+
58+
if (mysqli_stmt_errno($stmt)) {
59+
die('mysqli_stmt_bind_result failed: ' . mysqli_stmt_error($stmt));
60+
}
61+
62+
$family_tree = array();
63+
while (mysqli_stmt_fetch($stmt)) {
64+
$family_tree[$id] = array(
65+
'id' => $id,
66+
'name' => trim($name), // 去掉名字前后空格
67+
'pid' => $pid,
68+
'dorder' => $dorder,
69+
'sex' => $sex,
70+
'dc' => $dc,
71+
'zibei' => $zibei,
72+
'zi' => $zi,
73+
'rank' => $rank,
74+
'children' => array()
75+
);
76+
}
77+
78+
if (mysqli_stmt_errno($stmt)) {
79+
die('mysqli_stmt_fetch failed: ' . mysqli_stmt_error($stmt));
80+
}
81+
82+
foreach ($family_tree as $id => &$node) {
83+
if ($node['pid'] && isset($family_tree[$node['pid']])) {
84+
$family_tree[$node['pid']]['children'][] = &$node;
85+
}
86+
}
87+
88+
mysqli_stmt_close($stmt);
89+
90+
require_once 'word-xianshuhoujiapu-function.php';
91+
92+
$trees = array(
93+
array('id' => 25, 'min_gen' => 0, 'max_gen' => 3),
94+
array('id' => 26, 'min_gen' => 0, 'max_gen' => 5),
95+
array('id' => 1857, 'min_gen' => 0, 'max_gen' => 4),
96+
array('id' => 1280, 'min_gen' => 0, 'max_gen' => 3),
97+
);
98+
99+
$people = array(
100+
array('id' => 25, 'min_dc' => 10, 'max_dc' => 12),
101+
array('id' => 26, 'min_dc' => 10, 'max_dc' => 14),
102+
array('id' => 1857, 'min_dc' => 16, 'max_dc' => 19),
103+
array('id' => 1280, 'min_dc' => 17, 'max_dc' => 20),
104+
);
105+
106+
print_family_and_people_tree($family_tree, $trees, $people);

0 commit comments

Comments
 (0)