DBIx::Browse::CGI - Perl extension to browse tables with a CGI
interface.
use DBIx::Browse::CGI;
my ($dbh, $dbb, $q);
$dbh = DBI->connect("DBI:Pg:dbname=enterprise")
or croak "Can't connect to database: $@";
$q = new CGI;
$dbb = new DBIx::Browse::CGI({
dbh => $dbh,
table => 'employee',
proper_fields => [ qw ( name fname ) ],
linked_fields => [ qw ( department category office ) ],
linked_tables => [ qw ( department category office ) ],
linked_values => [ qw ( name name phone ) ],
linked_refs => [ qw ( id id ide ) ],
aliases => [ qw ( name fname department category phone )],
primary_key => 'id',
cgi => $q
});
print
$q->start_html(
-title => "Test DBIx::Browse::CGI"
);
$dbb->list_form({
field_order => [ 1, 0, 4, 3, 2 ],
field_length => [ 14, 15, 15, 15, 10 ]
});
...etc
The purpose of DBIx::Browse::CGI is to handle the browsing of
relational tables with a human-like interface via Web.
DBIx::Browse::CGI transparently translates SELECTs, UPDATEs,
DELETEs and INSERTs from the desired "human view" to the values
needed for the table. This is the case when you have related tables (1 to n)
where the detail table has a reference (FOREIGN KEY) to a generic table
(i.e. Customers and Bills) with some index (tipically an integer).
All the methods inherited from its parent class
(DBIX::Browse(3)) plus the following:
- new
- Creates a new DBIx::Browse::CGI object. The parameters are passed through
a hash with the following added keys with respect to
DBIx::Browse::new:
- cgi
- A CGI object that will be used for Web interaction. If it is not defined a
new CGI object will be created.
- max_rows
- The maximum number of rows to be displayed per Web page (default:
10).
- max_flength
- The maximum field length to be displayed (also the default for unknown
field lengths).
- row_order
- The order to be used to order rows (e.g. 'NAME ASC, DATE DESC').
- default_action
- The default action (web page) that will be displayed if not set by the
calling program (currently "List" or "Edit".
- form_params
- A hash ref containing other form parameters that will appear as
"HIDDEN" input fields.
- styles
- An anonymous arrays of css styles ("CLASS") that will be applied
to succesive rows of output.
- no_print
- If set, the output methods (list_form, edit_form, and
browse) will not print directly. Instead, they will return a string
containig the output (in fact they always do). Otherwise they will print
directly to standard output (default: 0).
- list_form
- This method produces a CGI form suitable to explore the main table. It
will list its rows in chunks of max_rows. It will present also the
possibility to edit (see edit_form) any row and to filter the rows
to display.
It takes one optional parameter with a hash reference with the
following keys:
- field_names
- An array reference containing the field names to be displayed.
- field_order
- An array reference with the desired order index in wich the fields will
appear.
- field_length
- An array reference with the desired field length.
- edit_form
- This method produces a CGI form suitable to browse the main table record
by record. You can update, delete and insert new records.
It takes one optional parameter with a hash reference with the
same structure than list_form.
- browse
- This method will call list_form or edit_form as needed
depending on the user input.
It takes one optional parameter with a hash reference with the
same structure than list_form.
Evilio José del Río Silván,
edelrio@icm.csic.es
perl(1), DBI(3), CGI(3),
DBIx::Browse(3).
Hey! The above document had some coding errors, which are
explained below:
- Around line 888:
- Non-ASCII character seen before =encoding in 'José'. Assuming
CP1252