sql
CREATE TABLE `notes` (
`note_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(255),
`message` TEXT,
`modify_time` timestamp NOT NULL,
`create_time` timestamp NOT NULL,
`creator` INTEGER UNSIGNED NOT NULL,
`private` TINYINT NOT NULL DEFAULT 0,
PRIMARY KEY(`note_id`)
)
ENGINE=MyISAM;
CREATE TABLE `users` (
`user_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`password` VARCHAR(255),
PRIMARY KEY(`user_id`)
)
ENGINE=MyISAM;
Note::DBI
Note::Constant;
base ;
= Note::Constant::DATABASE;
= Note::Constant::DB_USER;
= Note::Constant::DB_PWD;
__PACKAGE__->set_db(, , , );
;
Note::User
Class::DBI::Pager;
base ;
__PACKAGE__->table();
__PACKAGE__->columns(=> );
__PACKAGE__->columns(=> );
__PACKAGE__->has_many(=> , { => } );
Note::Note
;
EasyDateTime;
Class::DBI::Pager;
base ;
__PACKAGE__->table();
__PACKAGE__->columns(=> );
__PACKAGE__->columns(=> );
__PACKAGE__->has_a(=> );
__PACKAGE__->has_a(=> ,
=> ,
=>{->str()},
);
__PACKAGE__->set_sql(=> );
;
() = Note::User->search(=> );
->name;
= ->notes();
= Note::Note->search_like(=> );
->name();
->update();
Template (Template Toolkit)
GET
[% variable %]
[% hash.key %]
[% list.n %]
[% code(args) %]
[% obj.meth(args) %]
[% "value: $var" %]
SET
[% variable = other_variable
variable = 'literal text @ $100'
variable = "interpolated text: $var"
list = [ val, val, val, val, ... ]
list = [ val..val ]
hash = { var => val, var => val, ... }
%]
FOREACH
[% FOREACH variable = [ val, val, val ] %] # either
[% FOREACH variable = list %] # or
[% FOREACH list %] # or
content...
[% variable %]
[% END %]
WHILE
[% WHILE condition %]
content
[% END %]
IF...ELSE...
[% IF condition %]
content
[% ELSIF condition %]
content
[% ELSE %]
content
[% END %]
SWITCH
[% SWITCH variable %]
[% CASE val1 %]
content
[% CASE [ val2, val3 ] %]
content
[% CASE %] # or [% CASE DEFAULT %]
content
[% END %]
Class::DBI and Template
;
Template;
Note::DBI;
Note::Note;
= Note::Note->retrieve_all();
= Template();
->process(\*DATA, {=> });
Result:
Wu.Hao(2005-08-01 15:12) : test
Wu.hao(2005-08-01 15:13) : test2
Guest(2005-08-01 15:14) : testA
Guest(2005-08-01 15:15) : testB
Template and HTML::Template
= [Table 1
{ => , => , => ,},
{ => , => , => ,}
];
A Value | B Value | C Value |
1 | 2 | 3 |
2 | 4 | 6 |
Template
Template;
= [
{ => , => , => ,},
{ => , => , => ,}
];
= Template();
->process(
\*DATA,
{
=> ,
}
)
->error;
HTML::Template
HTML::Template;
= [
{ => , => , => ,},
{ => , => , => ,}
];
= HTML::Template(=> *DATA);
->param(=> );
->output();
Table 2
A Value | C Value | B Value |
1 | 3 | 2 |
2 | 6 | 4 |
Table 3
A Value | C Value |
1 | 3 |
2 | 6 |
Table 2
HTML::Template
= [
{
=> [ { => , => }, { => , => }, { => , => } ]
},
{
=> [ { => , => }, { => , => }, { => , => } ]
},
];
Template
Table 3
Template;
= [
{ => , => , => ,},
{ => , => , => ,}
];
= [];
= Template();
->process(
\*DATA,
{
=> ,
=> ,
=>{ []->{ [] } }
}
)
->error;
= [];