thanks for that. Just one minor tweak, as the first bit of code threw up an error. Below is the working code for the first block of code.
//hooks
add_action( 'show_user_profile', 'Add_user_fields' );
add_action( 'edit_user_profile', 'Add_user_fields' );
function Add_user_fields( $user ) { ?>
<h3>Extra fields</h3>
<table class="form-table">
<tr>
<th><label for="text">text</label></th>
<td>
<?php
// get test saved value
$saved = esc_attr( get_the_author_meta( 'user_text', $user->ID ) );
?>
<input type="text" name="user_text" id="user_text" value="<?php echo $saved; ?>" class="regular-text" /><br />
<span class="description">Simple text field</span>
</td>
</tr>
<tr>
<th><label for="dropdown">dropdown Select field</label></th>
<td>
<?php
//get dropdown saved value
$selected = get_the_author_meta( 'user_select', $user->ID ); //there was an extra ) here that was not needed
?>
<select name="user_select" id="user_select">
<option value="value1" <?php echo ($selected == "value1")? 'selected="selected"' : '' ?>>Value One label</option>
<option value="value2" <?php echo ($selected == "value2")? 'selected="selected"' : '' ?>>Value Two label</option>
</select>
<span class="description">Simple text field</span>
</td>
</tr>
</table>
The second part is fine.
add_action( 'personal_options_update', 'save_user_fields' );
add_action( 'edit_user_profile_update', 'save_user_fields' );
function save_user_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) )
return false;
//save text field
update_usermeta( $user_id, 'user_text', $_POST['user_text'] );
//save dropdown
update_usermeta( $user_id, 'user_select', $_POST['user_select'] );
}