<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Reqursives Array PEAR QuickForm und XML Datenbank</title>
</head>
<body>
<?PHP
// Loading some Data from XML Document in an Array
define ('USER_DATA', 'userdata/userdata.xml');
require_once 'code/variableconfigmanager.php';
$Config = &ConfigManager::instance(USER_DATA, 'user_data');
$user = $Config->get('user');
// Create a Quickform with basic things
require_once "HTML/QuickForm.php";
require_once 'HTML/QuickForm/Renderer/Tableless.php';
require_once 'DB/DataObject/FormBuilder/QuickForm/SubForm.php';
$form = new HTML_QuickForm('frmTest', 'post');
$form->addElement('header', 'MyHeader', 'Testing QuickForm with Subform');
$myDefaults = array();
//Reqursive building of keys for form
function build_formkeys ($myArray, $parentKey) {
global $myDefaults;
foreach ($myArray as $key => $value) {
if (is_array($value)) {
$myKey["(".$parentKey.")(".$key.")"] = build_formkeys ($value, $parentKey.")(".$key);
} else {
$myKey["(".$parentKey.")(".$key.")"] = "(".$parentKey.")(".$key.")";
$myDefaults["(".$parentKey.")(".$key.")"] = $value;
}
}
return $myKey;
}
//Reqursive building the Elements Group for form
// function build_form ($myArray, $parentKey) {
// foreach ($myArray as $key => $value) {
// if (is_array($value)) {
// $group["[".$parentKey."][".$key."]"] = build_form ($value, $parentKey."][".$key);
// } else {
// $group["[".$parentKey."][".$key."]"] = HTML_QuickForm::createElement('text', $myKey["[".$parentKey."][".$key."]"], "XXX:");//$myKey["[".$parentKey."][".$key."]"]);
// }
// }
// return $group;
// }
function build_sub_form ($myArray, $parentKey) {
$child_form = new HTML_QuickForm();
foreach ($myArray as $key => $value) {
if (is_array($value)) {
$child_form->addElement('subform','childform', $key, build_sub_form ($value, $parentKey.")(".$key));
} else {
$child_form->addElement('text', "(".$parentKey.")(".$key.")", $key);//'header','childheader','Child Header');
}
}
return $child_form;
}
// Call of reqursion for the keys
$myKey["[user]"] = build_formkeys ($user, "user");
// Call for building the Master Group:
$child_form = build_sub_form ($user, "user");
//--- HERE is the error (Adding the builded Group to empty Form: ---
//$form->addGroup($group["[user][firm]"]["[user][firm][slogan_2]"], null, "USER", " \n<br/>\n");
// New try :-)
$form->addElement('subform','childform','Webseite Daten',$child_form);
//-----------------------------------
$form->setDefaults($myDefaults);
//Adding basic buttons:
$buttons[] = &HTML_QuickForm::createElement('reset', 'btnClear', 'Clear');
$buttons[] = &HTML_QuickForm::createElement('submit', 'btnSubmit', 'Submit');
$form->addGroup($buttons, null, null, ' ');
//Validate / Output form:
if ($form->validate()) {
// Form is validated, then processes the data
$form->freeze();
$form->display();
$form->process('process_data', false);
} else {
$form->setDefaults($user);
$form->display();
}
// Process Data
function process_data ($values) {
echo "<pre>";
print_r ($values);
foreach ($values as $key => $value) {
echo $key."=".$value."<br>";
}
echo "</pre>";
}
//--- TEST Infos ---
echo('Source:'."\n<br/>");
echo('------------------------------------------'."\n<br/>");
highlight_file($_SERVER['SCRIPT_FILENAME']);
echo('userdata.xml:'."\n<br/>");
echo('------------------------------------------'."\n<br/>");
highlight_file('userdata/userdata.xml');
//
echo ('<pre>');
// echo('------------------------------------------'."\n");
// echo('$group (MasterGroup to add):'."\n");
// print_r ($group);
echo('------------------------------------------'."\n");
echo('$myDefaults (keys for form):'."\n");
print_r ($myDefaults);
echo('------------------------------------------'."\n");
echo ('</pre>');
?>
</body>
</html>
userdata.xml:
<?xml version="1.0" encoding="UTF-8"?>
<config _class="config" _type="object">
<options _type="array">
<user _type="array">
<firm _type="array">
<name _type="string">dvTFTpvFrhPFE</name>
<slogan_1 _type="string">CWvyJlhNPdzNbi</slogan_1>
<slogan_2 _type="array">
<XML_Serializer_Tag _originalKey="1" _type="string">ZyKSfAcGtH</XML_Serializer_Tag>
<XML_Serializer_Tag _originalKey="2" _type="string">dsgHbMehNojRD</XML_Serializer_Tag>
</slogan_2>
</firm>
<director _type="array">
<vname _type="string">hwgjuu</vname>
<nname _type="string">hwgjuu</nname>
<street _type="string">hwgjuu</street>
<street_number _type="string">64251</street_number>
<PLZ _type="string">hwgjuu</PLZ>
<City _type="string">New York</City>
<Country _type="string">USA</Country>
<phone _type="string">hwgjuu</phone>
<fax _type="string">60601540579</fax>
<email _type="string">ktelii@nswgxv.com</email>
</director>
<owner _type="array">
<vname _type="string">hwgjuu</vname>
<nname _type="string">hwgjuu</nname>
<street _type="string">hwgjuu</street>
<street_number _type="string">90653</street_number>
<PLZ _type="string">hwgjuu</PLZ>
<City _type="string">New York</City>
<Country _type="string">USA</Country>
<phone _type="string">hwgjuu</phone>
<fax _type="string">95475943389</fax>
<email _type="string">ktelii@nswgxv.com</email>
</owner>
<adress_firm _type="array">
<fullname _type="string">EmfTUeaQiUBvxOmrQNg</fullname>
<slogan _type="string">WWdFdHkSPkm</slogan>
<type _type="string">nQkcecqdbLawuuGd</type>
<street _type="string">gJdcXpZIvQzX</street>
<street_number _type="string">KQWpYdUowVZvpgrYI</street_number>
<PLZ _type="string">MkwReezbVWZFir</PLZ>
<City _type="string">ucodXlfhntTUv</City>
<Country _type="string">RWxbJxoXuntfvTNmpP</Country>
<phone _type="string">cOMfewVzrkAYGDoH</phone>
<fax _type="string">ejNXpZSbapviMMEiA</fax>
<email _type="string">ktelii@nswgxv.com</email>
<contact_email _type="string">ktelii@nswgxv.com</contact_email>
<strnr _type="string">IQeNPViUvvSvH</strnr>
</adress_firm>
<bank_1 _type="array">
<bank_name _type="string">hwgjuu</bank_name>
<owner_name _type="string">hwgjuu</owner_name>
<BLZ _type="string">hwgjuu</BLZ>
<knt_nr _type="string">hwgjuu</knt_nr>
<iban _type="string">hwgjuu</iban>
<bic _type="string">hwgjuu</bic>
</bank_1>
<bank_2 _type="array">
<bank_name _type="string">hwgjuu</bank_name>
<owner_name _type="string">hwgjuu</owner_name>
<BLZ _type="string">hwgjuu</BLZ>
<knt_nr _type="string">hwgjuu</knt_nr>
<iban _type="string">hwgjuu</iban>
<bic _type="string">hwgjuu</bic>
</bank_2>
<style _type="array">
<style _type="string">hwgjuu</style>
</style>
<offline _type="array">
<status _type="boolean">1</status>
<slogan_1 _type="string">hwgjuu</slogan_1>
<slogan_2 _type="string">hwgjuu</slogan_2>
<datum _type="string">hwgjuu</datum>
</offline>
</user>
</options>
</config>
------------------------------------------
$myDefaults (keys for form):
Array
(
[(user)(firm)(name)] => dvTFTpvFrhPFE
[(user)(firm)(slogan_1)] => CWvyJlhNPdzNbi
[(user)(firm)(slogan_2)(1)] => ZyKSfAcGtH
[(user)(firm)(slogan_2)(2)] => dsgHbMehNojRD
[(user)(director)(vname)] => hwgjuu
[(user)(director)(nname)] => hwgjuu
[(user)(director)(street)] => hwgjuu
[(user)(director)(street_number)] => 64251
[(user)(director)(PLZ)] => hwgjuu
[(user)(director)(City)] => New York
[(user)(director)(Country)] => USA
[(user)(director)(phone)] => hwgjuu
[(user)(director)(fax)] => 60601540579
[(user)(director)(email)] => ktelii@nswgxv.com
[(user)(owner)(vname)] => hwgjuu
[(user)(owner)(nname)] => hwgjuu
[(user)(owner)(street)] => hwgjuu
[(user)(owner)(street_number)] => 90653
[(user)(owner)(PLZ)] => hwgjuu
[(user)(owner)(City)] => New York
[(user)(owner)(Country)] => USA
[(user)(owner)(phone)] => hwgjuu
[(user)(owner)(fax)] => 95475943389
[(user)(owner)(email)] => ktelii@nswgxv.com
[(user)(adress_firm)(fullname)] => EmfTUeaQiUBvxOmrQNg
[(user)(adress_firm)(slogan)] => WWdFdHkSPkm
[(user)(adress_firm)(type)] => nQkcecqdbLawuuGd
[(user)(adress_firm)(street)] => gJdcXpZIvQzX
[(user)(adress_firm)(street_number)] => KQWpYdUowVZvpgrYI
[(user)(adress_firm)(PLZ)] => MkwReezbVWZFir
[(user)(adress_firm)(City)] => ucodXlfhntTUv
[(user)(adress_firm)(Country)] => RWxbJxoXuntfvTNmpP
[(user)(adress_firm)(phone)] => cOMfewVzrkAYGDoH
[(user)(adress_firm)(fax)] => ejNXpZSbapviMMEiA
[(user)(adress_firm)(email)] => ktelii@nswgxv.com
[(user)(adress_firm)(contact_email)] => ktelii@nswgxv.com
[(user)(adress_firm)(strnr)] => IQeNPViUvvSvH
[(user)(bank_1)(bank_name)] => hwgjuu
[(user)(bank_1)(owner_name)] => hwgjuu
[(user)(bank_1)(BLZ)] => hwgjuu
[(user)(bank_1)(knt_nr)] => hwgjuu
[(user)(bank_1)(iban)] => hwgjuu
[(user)(bank_1)(bic)] => hwgjuu
[(user)(bank_2)(bank_name)] => hwgjuu
[(user)(bank_2)(owner_name)] => hwgjuu
[(user)(bank_2)(BLZ)] => hwgjuu
[(user)(bank_2)(knt_nr)] => hwgjuu
[(user)(bank_2)(iban)] => hwgjuu
[(user)(bank_2)(bic)] => hwgjuu
[(user)(style)(style)] => hwgjuu
[(user)(offline)(status)] => 1
[(user)(offline)(slogan_1)] => hwgjuu
[(user)(offline)(slogan_2)] => hwgjuu
[(user)(offline)(datum)] => hwgjuu
)
------------------------------------------