Testing QuickForm with Subform
Webseite Daten
firm
name
slogan_1
slogan_2
1
2
director
vname
nname
street
street_number
PLZ
City
Country
phone
fax
email
owner
vname
nname
street
street_number
PLZ
City
Country
phone
fax
email
adress_firm
fullname
slogan
type
street
street_number
PLZ
City
Country
phone
fax
email
contact_email
strnr
bank_1
bank_name
owner_name
BLZ
knt_nr
iban
bic
bank_2
bank_name
owner_name
BLZ
knt_nr
iban
bic
style
style
offline
status
slogan_1
slogan_2
datum
 
Source:
------------------------------------------
<!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');
    
define ('array_Step', '**');
    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[$key] = build_formkeys ($value, $parentKey.array_Step.$key);
            } else {
                
$myKey[$key] = $parentKey.array_Step.$key;
                
$myDefaults[$parentKey.array_Step.$key] = $value;
            }
        }
        return
$myKey;
    }

    
// Reqursive building Subform
    
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.array_Step.$key));
            } else {
                
$child_form->addElement('text', $parentKey.array_Step.$key, $key);
            }
        }
        return
$child_form;
    }



    
// Call of reqursion for the keys
    
$myKey = build_formkeys ($user, "user");
    
    
// Call for building the Master Group:
    
$child_form = build_sub_form ($user, "user");
    
    
// 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, '&nbsp;');

    
    
//Validate / Output form:

    
if ($form->validate()) {
        
// Form is validated, then processes the data
        
$form->freeze();
        
//$form->getSubmitValues();
        
$form->display();
        
$form->process('process_data', false);
    } else {
        
$form->setDefaults($user);
        
$form->display();
    }
    
    
// $myDefaults $myKey
    
function transfaire_values_to_array ($values, $array_keys, $flatKeys) {
        foreach (
$array_keys as $key => $value) {
            if (
is_array($value)) {
                
$MyResult[$key] = transfaire_values_to_array ($values, $array_keys[$key], $flatKeys);
            } else {
                
$MyResult[$key] = $values[$array_keys[$key]];
            }
        }
        return
$MyResult;
    }
    
    
// Process Data
    
function process_data ($values) {
        global
$myKey;
        global
$MyResult;
        
$MyResult = transfaire_values_to_array($values, $myKey, $myDefaults);
    }

    
//--- TEST Infos ---
    
echo('Source:'."\n<br/>");
    echo(
'------------------------------------------'."\n<br/>");
    
highlight_file($_SERVER['SCRIPT_FILENAME']);
    echo (
'<pre>');
    echo(
'------------------------------------------'."\n");
    echo(
'result-array:'."\n");
    
print_r ($MyResult);
    echo(
'------------------------------------------'."\n");
    echo(
'input-array:'."\n");
    
print_r ($user);
    echo(
'------------------------------------------'."\n");
    echo (
'</pre>');
?>
</body>
</html>
------------------------------------------
result-array:
------------------------------------------
input-array:
Array
(
    [firm] => Array
        (
            [name] => dvTFTpvFrhPFE
            [slogan_1] => CWvyJlhNPdzNbi
            [slogan_2] => Array
                (
                    [1] => ZyKSfAcGtH
                    [2] => dsgHbMehNojRD
                )

        )

    [director] => Array
        (
            [vname] => hwgjuu
            [nname] => hwgjuu
            [street] => hwgjuu
            [street_number] => 64251
            [PLZ] => hwgjuu
            [City] => New York
            [Country] => USA
            [phone] => hwgjuu
            [fax] => 60601540579
            [email] => ktelii@nswgxv.com
        )

    [owner] => Array
        (
            [vname] => hwgjuu
            [nname] => hwgjuu
            [street] => hwgjuu
            [street_number] => 90653
            [PLZ] => hwgjuu
            [City] => New York
            [Country] => USA
            [phone] => hwgjuu
            [fax] => 95475943389
            [email] => ktelii@nswgxv.com
        )

    [adress_firm] => Array
        (
            [fullname] => EmfTUeaQiUBvxOmrQNg
            [slogan] => WWdFdHkSPkm
            [type] => nQkcecqdbLawuuGd
            [street] => gJdcXpZIvQzX
            [street_number] => KQWpYdUowVZvpgrYI
            [PLZ] => MkwReezbVWZFir
            [City] => ucodXlfhntTUv
            [Country] => RWxbJxoXuntfvTNmpP
            [phone] => cOMfewVzrkAYGDoH
            [fax] => ejNXpZSbapviMMEiA
            [email] => ktelii@nswgxv.com
            [contact_email] => ktelii@nswgxv.com
            [strnr] => IQeNPViUvvSvH
        )

    [bank_1] => Array
        (
            [bank_name] => hwgjuu
            [owner_name] => hwgjuu
            [BLZ] => hwgjuu
            [knt_nr] => hwgjuu
            [iban] => hwgjuu
            [bic] => hwgjuu
        )

    [bank_2] => Array
        (
            [bank_name] => hwgjuu
            [owner_name] => hwgjuu
            [BLZ] => hwgjuu
            [knt_nr] => hwgjuu
            [iban] => hwgjuu
            [bic] => hwgjuu
        )

    [style] => Array
        (
            [style] => hwgjuu
        )

    [offline] => Array
        (
            [status] => 1
            [slogan_1] => hwgjuu
            [slogan_2] => hwgjuu
            [datum] => hwgjuu
        )

)
------------------------------------------