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) { foreach ($rowdata as $row => $data) { $fieldarray[0][strtolower($data['field_id'])] = $data['field_value']; }
$fieldspec = $this->getFieldSpec();
foreach ($fieldspec as $fieldname => $spec) { if (!array_key_exists(strtolower($fieldname), $fieldarray[0])) { $fieldarray[0][$fieldname] = null; } }
return $fieldarray;
}
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
|

|