先看下今天之前的思路(重点是表结构)
6月6日前,思路:
在这个任务中,我需要同时负责页面设计和提供后台数据,整个思路都不一样,在一开始设计页面的时候,就需要考虑到页面中某些数据如何从后台数据库中获取,怎么显示,同时,还有一个问题就是需要与别人的配合,因为,因为多个技术文档组成一个专题课程,每个文档都有一部分数据是来自 课程这个数据库,所以,这个时候就需要了解别人的建的表的结构,都有哪些是自己页面需要的。
前端(courses_id=3,fid=0)
|———前端基础(courses_id=13,fid=3)
|————HTML基础(document_id=103,)
|————CSS
|———前端进阶
|————HTML5
|————CSS3
后端
|———数据库
|————Mysql
|————操作系统
在我的文档列表页面中,主要分为前端、后端、App、硬件、其他几个大的专题,在每个大专题下面,都会列出多个文档,每个文档有文档名称、文档分值、文档的描述(基础还是进阶还是高阶)、文档所属的课程(比如 HTML 还是 CSS )
之前,我考虑的是,在document表中,保存的是:
前端
|———前端基础
|————HTML标签
|————CSS
中的HTML标签、CSS。这一层,但是,实际上的任务要求是:
前端
|———前端基础
|————HTML标签
|————CSS
//上面都是 courses 表中的数据
前端
|———前端基础
|————HTML标签
|—————a 标签
|—————p 标签
//其中的a 标签 和 p 标签才是 document 表中的内容
之前的字段内容是:
- documents_id 主键
- documents_name 文档名称 如 HTML标签、HTML5、CSS、CSS3
- documents_points 文档分数
- courses_id
重新设计的 document 表字段
递归课程列表的时候,实际上只需要显示那些没有子节点的课程:
前端
|———前端基础
|————HTML标签
|————CSS
//遍历显示的课程实际上是HTML标签和CSS,因为在在每个文档详情页中,这是作为标题显示
在实际编码的过程中,遇到了两个问题:
一、 递归的时候,一直显示调用未定义函数
//递归文档类
<?php
class DocumentTree extends Base
{
static function treedoc($id)
{
$sql = "select * from courses where courses_fid= $id";
$rs = Base::getMutiRs($sql);
$rows = count($rs);
if ($rows> 0) {
for($i = 0; $i < count($rs); $i++ ){
echo "b";
echo "<br>";
var_dump($rs[$i]['courses_id']);
echo "<br>";
echo "<br>"."a";
treedoc($rs[$i]['courses_id']);
}
}
else {
for($i = 0; $i < count($d_rs); $i++ ){
?>
<article>
<div class="summary" ><?php echo $d_rs[$i]['document_name'] ?></div>
<div class="property">
<span><?php echo $d_rs[$i]['document_points'].'分' ?></span>
<span><?php echo $d_rs[$i]['document_desc'] ?></span>
</div>
</article>
<?php
}
}
}
}
?>
//文档列表页调用:
Document::treedoc(160);
然后,我换了种方式:
不用类名调用静态方法的方式,而是直接把递归函数写在 document.php 中
在需要遍历课程的地方直接调用递归函数
//递归函数
<?php
function treedoc($id)
{
$sql = "select * from courses where courses_fid= $id";
$rs = Base::getMutiRs($sql);
$rows = count($rs);
if ($rows> 0) {
// echo "$rows".'<br>';
// static $k = 1;
for($i = 0; $i < count($rs); $i++ ){
treedoc($rs[$i]['courses_id']);
if ($rows) {
// echo "<br>";
// var_dump($rows);
// echo "$rows";
// echo "<br>";
?>
<article>
<div class="summary" ><?php echo $rs[$i]['courses_name'] ?></div>
<div class="property">
<span><?php echo $rs[$i]['courses_points'].'分' ?></span>
</div>
</article>
<?php
}
}
}
// else {
// $k =0;
// }
}
?>
//调用递归
<section class="frontEnd">
<?php
treedoc(160);
?>
</section>
二、 递归显示的结果不是预期的结果
本来应该显示的只有没有子节点的课程,但是,目前上一级节点也显示出来了
相关文章推荐: