php has a way of auto-generating arrays from form input
hopefully looking at this example should help:
ok bear with this... this post looks long.. but its mostly just a bunch of examples which are variation on one simple theme that you should be able to pick up...
#FORM.HTML
<input type="text" name="bands[]" value="name1">
will generate:
$_POST['bands'] = array( 'name1' );
and:
#FORM.HTML
<input type="text" name="bands[]" value="name1">
<input type="text" name="bands[]" value="name2">
will generate:
$_POST['bands'] = array( 'name1', 'name2' );
or rather:
$_POST['bands'][] = 'name1';
$_POST['bands'][] = 'name2';
see the pattern huh... it basically evaluates the name='blah' as if it were the left hand side or an = operation
now notice in the example below, how the in the form single quotes are not allowed in the html: member[name]
while in actual php they are required:
member['name']
#FORM.HTML
<input type="text" name="member[name]" value="dude">
<input type="text" name="member[role]" value="sweet">
will generate:
$_POST['member'] = array(
'name' => 'dude',
'role' => 'sweet' );
or
$_POST['member']['name'] = 'dude',
$_POST['member']['role'] = 'sweet',
try this out, this illustrates a gotcha:
# FORM.PHP
<form action="ACTION.PHP" method="post">
Member 1 Name:<input type="text" name="members[][name]"><br />
Member 1 Role:<input type="text" name="members[][role]"><br />
<br />
Member 2 Name:<input type="text" name="members[][name]"><br />
Member 2 Role:<input type="text" name="members[][role]"><br />
</form>
# ACTION.PHP
<?php
print "<pre>";
print_r( $_POST );
print "</pre>";
?>
more to the solution for you problem:
# FORM.PHP
$band = 'dude';
$band_members = pullFromDb( $band );
?>
UPDATE MEMBERS:<br />
<form action="ACTION.PHP" method="post">
<?php
foreach ( $band_members as $id=>$member ) {
?>
<br />
Name: <input type="text" name="member[<?php echo $id ?>][name]" value="<?php echo $member['name'] ?>">
<br />
Role: <input type="text" name="member[<?php echo $id ?>][role]" value="<?php echo $member['role'] ?>">
<?php
}
?>
</form>
which, assuming three members, will give the action page ...
$_POST['members'] = array(
$id => array(
'name' => $name,
'role' => $role ),
$id => array(
'name' => $name,
'role' => $role ),
$id => array(
'name' => $name,
'role' => $role )
);
or:
$_POST['members'][$id]['name'] = $name;
$_POST['members'][$id]['role'] = $role;
$_POST['members'][$id]['name'] = $name;
$_POST['members'][$id]['role'] = $role;
$_POST['members'][$id]['name'] = $name;
$_POST['members'][$id]['role'] = $role;
now as you see you still need to force into the form you are generating some unique number for each band member... but when all is said and done, you action script can now loop through everyone in the list without having to know exactly the variable name to look for