I'd suggest different names for the fields
<td class="'.$row_color.'"><input name="record['.$id.'][firstname]" type="text" size="13" maxlength = "50" /></td>
<td class="'.$row_color.'"><input name="record['.$id.'][fathername]" type="text" size="13" maxlength = "50" /></td>
<td class="'.$row_color.'"><input name="record['.$id.']grandfathername]" type="text" size="13" maxlength = "50" /></td>
<td class="'.$row_color.'"><input name="record['.$id.'][familyname]" type="text" size="13" maxlength = "50" /></td>
<td class="'.$row_color.'"><input name="record['.$id.'][companycode]" type="text" size="4" maxlength = "50" /></td>
assuming you've got a better name for all the fields in a row than "record" and you've got a variable that you can use for $id that's meaningful.
foreach($_POST['record'] as $id=>$record)
{
echo "firstName: ".$record['firstname'];
}