I've often had "fun" using listboxes and databases - one thing I've seen a lot of people forget is the need for TWO instances of the value/variable in the listbox.
here's what I use for a single listbox of (in this case - i trimmed it) 3 options. This comes from the edit.php page which receives information and makes it ediable:
<td align="left"><SELECT NAME=expmonth id="expmonth" align=top>
<OPTION selected value=<?php echo $row['expmonth'].'>'.$row['expmonth']?>
<OPTION VALUE=January>January
<OPTION VALUE=February>February
<OPTION VALUE=March>March
in the above case (I'm assuming you're creating an 'update' page) I've connected to the db, created an array ($row) and fetched all the values.
In this line:
<OPTION selected value=<?php echo $row['expmonth'].'>'.$row['expmonth']?>
I've used it twice - the FIRST instance pulls the value from the db and makes it a VALUE of the option command. This is what will be put BACK into the DB when you hit 'submit'.
The SECOND instance simply DISPLAYS what it is you're trying to put in so the user knows what's going on!
In the next page (the UPDATE) page I have the line:
$expmonth=$_POST['expmonth'];
the SQL query is simple:
UPDATE members SET expmonth='$expmonth' (etc.etc. for all values)
If you want to put it in another table simply make that table and change its name.
Alternatively perhaps, you could put in TWO submit buttons and an IF() statement.
if (isset('Submit1')){
mysql_query("UPDATE members SET expmonth='$expmonth'");
}else{
mysql_query("INSERT INTO members123 (expmonth) VALUES ('$expmonth')");