You made error, you made checks on the value which were null, i compile your code and made changes, here is the code it will help you.
function wp_change_namecar( $atts, $content = null ) {
if (is_user_logged_in()) {
$user_id = get_current_user_id();
$userval =$_POST['cars']; //how to define that it is the value of the form?
if ($userval && $user_id) {
if (update_user_meta( $user_id, 'user_name_car', $userval )) {
return "<div class="user_updated">Updated!</div>";
} else {
return "<div class="user_updated error">Not Updated!</div>";
}
}
//Show the form
return "<form method='post'>
<label for="cars">Choose a car:</label>
<select id='cars' name="cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
<input type="submit" value="Change" />
</form>";
}
}
add_shortcode('change_namecar','wp_change_namecar');