the multip update uses the WADA_RepeatID_garage_fitter_id looped hidden element to determine which records should get updated:
<input type="hidden" name="WADA_RepeatID_garage_fitter_id_<?php echo $RepeatSelectionCounter_1; ?>" id="WADA_RepeatID_garage_fitter_id_<?php echo $RepeatSelectionCounter_1; ?>" value="<?php echo $row_fitter["garage_fitter_id"]; ?>" />
the value for that element uses the garage_fitter_id column of the fitter recordset:
value="<?php echo $row_fitter["garage_fitter_id"]; ?>"
the select statement for the recordset:
SELECT garage_id, garage_fitter, garage_fitter_parts, garage_fitter_comments, user_first, user_last FROM....
does not include the garage_fitter_id column. this cause the hidden element to be blank, so it cannot pass the ID for the record to update. edit the recordset to include the garage_fitter_id column in the select statement.
as for the page needing to be refreshed, this is due to code order.
the recordset that populates the page comes before the update record code. this means the recordset is created, then the database is updated so it shows the old content. rearrange the code so the update happens before the recordsets are created, this will allow yo to see the update without having to refresh.