7.9. Using more than one table
You can save/retrieve userdb information from more than one table with the outboard specifier. It is a key-value comma-separated series of field specifications. For instance, if the billing address is to be stored in a separate table named "billing", you would do:
UserDB outboard <<EOF
b_fname=billing::first_name,
b_lname=billing::last_name,
b_address1=billing::address1,
b_address2=billing::address2,
b_etc=billing::etc
EOF
When the user logs in, Interchange will access the first_name field in table billing to get the value of b_fname. When the values are saved, it will be saved there as well. If you wish to make the fields read-only, just set UserDB default scratch "b_fname b_lname ..." and the values will be retrieved/saved from there. To initialize the values for a form, you could do a function after the user logs in:
[calc]
my @s_fields = grep /\S/, split /[\s,\0]+/, $Config->{UserDB}{scratch};
for(@s_fields) {
$Values->{$_} = $Scratch->{$_};
}
return;
[/calc]
If the fields in the outboard table use another key besides username, you can specify the column in the userdb that contains the key value:
UserDB default outboard_key_col account_id