作者catjimmy (cat)
看板PHP
标题[急问]PHP+MySQL+Smarty 输出问题
时间Sun Mar 13 22:41:58 2011
对不起,实在想不到一个简短就能描述我的问题的标题
还请版上高手们能给我一点指引
小弟现在使用Smarty作为样板引擎,小弟现在想要做的事情阐述如下
我的MySql资料库中有三个资料表,用彼此的ID作为阶层关系如下
project资料表中 有project_no project_name
category资料表中 有 category_no category_name和指向所属project的project_no
items资料表中 有items_no items_name和指向所属category的category_no
用这样的资料库设定方法很笨我知道@@" 可小弟还是php的新手
暂时对於太高深的做法还不太懂,如果有大大愿意指点当然是最好XD
因为很多地方会需要将这些东西全部list出来,因此小弟将他们包装成一个class
并指定了一个getlist方法
class程式码如下
class OutputList {
var $ouput_list = array();
function OutputList (&$db) {
$sql = "select * from project left join category on ".
"project.project_no = category.project_no left join items on ".
"category.category_no = items.category_no order by ".
"project.project_no,category.category_no,items.items_no";
$this->ouput_list = &$db->getAll($sql);
}
function getList(){
return $this->ouput_list;
}
}
然後在需要使用的php程式中new出,并指定样板
//===============================================
// 取得output列表
//===============================================
$output_list_object = new OutputList($db);
$ouput_list = &$output_list_object->getList();
if (DB::isError($output_list_object))
{
header("Content-Type: text/plain; charset=utf-8");
die ($output_list_object->getMessage());
}
//===============================================
// 样板处理
//===============================================
$smarty = new Template();
$smarty->assign('output_list', $output_list);
//===============================================
// 显示页面
//===============================================
$smarty->assign(
'content_file',
'output_list.tpl.htm'
);
$smarty->display('main.tpl.htm');
而样板output_list.tpl.htm中,输出的部分如下
{section name="sec1" loop=$output_list}
<tr>
<td width="10%" align="right">{$smarty.section.sec1.iteration}</td>
<td>{$output_list[sec1].project_name}</td>
<td>{$output_list[sec1].category_name}</td>
<td>{$output_list[sec1].items_name}</td>
</tr>
问题来了,这样的方法很笨我知道@@" 输出的表格会变成三个阶层都显示
就像是items也会显示前面的project跟categary
所以我的第一个问题是,可否在不要用到js、jquery之类的动态技术
就可以显示这笔资料的最後一个阶层,如果这笔资料只有到category,
那麽就显示category就好,不用显示他的project
简单来说就是我希望这表格看起来比较有阶层关系@@"
第二个问题是,我希望在这表格後方加上一个checkbox
可以让使用者复选category和items後,将所选的category或是items的no值传出
但这checkbox仅有category和items才有,project没有
在Smarty中我知道有HTML_checkboxes可以使用
但我实在没有一个概念要怎麽样用出我想要的显示
以上两个问题写的落落长,还请版上高手不吝指教@@" 小弟铭感五内
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.241.249.107
1F:→ tkdmaf:我的规则是:除宣告动作、属性,建构式内不写任何程式。 03/14 00:00
2F:→ catjimmy:可以问一下这样有甚麽好处吗? 结构性? 03/14 14:10
3F:推 walilecow:这个程式看起来只做读取资料...不用class应该也可以吧 03/14 22:55
4F:→ tkdmaf:建构式为物件实体化时会预先处理的方法。 03/14 23:35
5F:→ tkdmaf:所以一般而言,主要就是用於初始化或预载入功能。 03/14 23:35
6F:→ tkdmaf:你不一定一只物件会预载入多少方法。 03/14 23:36
7F:→ tkdmaf:在单一职责中,每个方法都会是一个独立功能的个体。 03/14 23:36
8F:→ tkdmaf:而建构式则只是选择你想预载入那些个体执行或宣告属性。 03/14 23:36
9F:→ tkdmaf:一但你因为某些因素需要修改预载方法时才不会被一堆程式码 03/14 23:37
10F:→ tkdmaf:弄得不知改如何去改。 03/14 23:37
11F:→ tkdmaf:另外一点就是如果善用继承後覆盖父类别建构式时...... 03/14 23:38
12F:→ tkdmaf:自己的建构式要载入方法就比较容易处理。 03/14 23:38