You don’t need the form
attribute; instead, just put all the form fields inside the form
element, as you have done in your second attempt. That attempt has some other issues, but they are unrelated to the issue of associating a control with a form. They are: lack of action' attribute; not wrapping
form` element content in a block-level container (if you need to conform to HTML 4.01 for some odd reason; it has strange requirements like this).
Minimally fixed version (just to please validators, not considering usability, functionality, etc.):
<form id="carform" action="">
<div>
Firstname:<input type="text" name="fname">
<input type="submit">
<select name="carlist">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
</div>
</form>