Helping ordinary people create extraordinary websites!
GET OUR NEWSLETTER
Your Email:
 

A Flexible Method of Storing Control Data

By Tony Marston
2006-08-29


From database to screen

The second step is to read multiple records from the database into an array using the following code:

$fieldarray = $object->getData("record_id='SYSTEM'");
At this point $fieldarray is a nested array - the first level is indexed by row number, and each row contains an associative array of name=value pairs. This looks like the following:

$rowdata => Array
(
[0] => Array
(
[record_id] => SYSTEM
[field_id] => DEFAULT_LANGUAGE
[field_value] => en
)

[1] => Array
(
[record_id] => SYSTEM
[field_id] => PSWD_CHANGE
[field_value] => AR
)

[2] => Array
(
[record_id] => SYSTEM
[field_id] => PSWD_COUNT
[field_value] =>
)

[3] => Array
(
[record_id] => SYSTEM
[field_id] => PSWD_DAYS
[field_value] =>
)

[4] => Array
(
[record_id] => SYSTEM
[field_id] => PSWD_ENCRYPT
[field_value] => Y
)

[5] => Array
(
[record_id] => SYSTEM
[field_id] => PSWD_FORMAT_DIGITS
[field_value] =>
)

[6] => Array
(
[record_id] => SYSTEM
[field_id] => PSWD_FORMAT_LOWER
[field_value] =>
)

[7] => Array
(
[record_id] => SYSTEM
[field_id] => PSWD_FORMAT_MINLEN
[field_value] => 4
)

[8] => Array
(
[record_id] => SYSTEM
[field_id] => PSWD_FORMAT_UPPER
[field_value] =>
)

[9] => Array
(
[record_id] => SYSTEM
[field_id] => PSWD_HIDDEN
[field_value] => Y
)

[10] => Array
(
[record_id] => SYSTEM
[field_id] => PSWD_RETRIES
[field_value] => 3
)

[11] => Array
(
[record_id] => SYSTEM
[field_id] => PSWD_WARNING
[field_value] => 5
)

[12] => Array
(
[record_id] => SYSTEM
[field_id] => SHUTDOWN_END
[field_value] =>
)

[13] => Array
(
[record_id] => SYSTEM
[field_id] => SHUTDOWN_FRIDAY
[field_value] =>
)

[14] => Array
(
[record_id] => SYSTEM
[field_id] => SHUTDOWN_MONDAY
[field_value] =>
)

[15] => Array
(
[record_id] => SYSTEM
[field_id] => SHUTDOWN_SATURDAY
[field_value] =>
)

[16] => Array
(
[record_id] => SYSTEM
[field_id] => SHUTDOWN_START
[field_value] =>
)

[17] => Array
(
[record_id] => SYSTEM
[field_id] => SHUTDOWN_SUNDAY
[field_value] =>
)

[18] => Array
(
[record_id] => SYSTEM
[field_id] => SHUTDOWN_THURSDAY
[field_value] =>
)

[19] => Array
(
[record_id] => SYSTEM
[field_id] => SHUTDOWN_TUESDAY
[field_value] =>
)

[20] => Array
(
[record_id] => SYSTEM
[field_id] => SHUTDOWN_WARNING
[field_value] =>
)

[21] => Array
(
[record_id] => SYSTEM
[field_id] => SHUTDOWN_WEDNESDAY
[field_value] =>
)
)

This can be changed into a single row of data using the following code:

    function _cm_post_getData ($rowdata, &$where)
// perform custom processing after database record(s) are retrieved.
// NOTE: $where is passed BY REFERENCE so that it may be modified.

{
// turn multiple rows into a single associative array
foreach ($rowdata as $row => $data) {
$fieldarray[0][strtolower($data['field_id'])] = $data['field_value'];
} // foreach

// get list of (virtual) fields in this table
$fieldspec = $this->getFieldSpec();

// insert any missing fields from $fieldspec
foreach ($fieldspec as $fieldname => $spec) {
if (!array_key_exists(strtolower($fieldname), $fieldarray[0])) {
$fieldarray[0][$fieldname] = null;
} // if
} // foreach

return $fieldarray;

} // _cm_post_getData

The new array looks like the following:

$fieldarray => Array
(
[0] => Array
(
[default_language] => en
[pswd_change] => AR
[pswd_count] =>
[pswd_days] =>
[pswd_encrypt] => Y
[pswd_format_digits] =>
[pswd_format_lower] =>
[pswd_format_minlen] => 4
[pswd_format_upper] =>
[pswd_hidden] => Y
[pswd_retries] => 3
[pswd_warning] => 5
[shutdown_end] =>
[shutdown_friday] =>
[shutdown_monday] =>
[shutdown_saturday] =>
[shutdown_start] =>
[shutdown_sunday] =>
[shutdown_thursday] =>
[shutdown_tuesday] =>
[shutdown_warning] =>
[shutdown_wednesday] =>
)
)

This data is transferred to an XML document which is transformed into HTML by an XSL stylesheet. The information in the modified structure tells the stylesheet which HTML control to use for each field.



Tutorial Pages:
» Introduction
» A flexible approach
» Implementation
» From database to screen
» From screen to database
» Summary


 | Bookmark
Related Tutorials:
» Installing MySQL on Windows
» Implementing High Availability in MySQL
» Stored Procedures are EVIL
» MySQL Database Handling in PHP
» Exploring MySQL CURDATE and NOW. The Same But Different.
» Creating a PostgreSQL and MySQL driver

Advertise with Us!


Tutorials Scripts Web Hosting Developer Manuals
Resources