1 - No se entiende esta pregunta...queres que no te deje enviar el form si hay datos vacios ?, entonces tendrias que verificar los datos con JavaScript y listo...
En cuanto a la segunda parte de la pregunta, es muy sencillo. Lo que puedes hacer es ir "arrastrando" todos los datos de cada nuevo formulario como HIDDEN (para que el usuario no los vea) y asi al submitear el ultimo formulario tienes todos los datos del formulario anterior. Ademas, de esta manera, solo escribes en la base de datos una sola vez y al terminar la accion en cuestion , de la forma en que lo proponias vos (ir guardando los datos de cada formulario) si el usuario se le ocurriera cerrar el explorador despues del segundo formulario entonces te quedarian registros incompletos. Lo mejor es resolver esto TODO en un solo script PHP, e ir checkeando que datos ya se tienen y en base a esto decidir que formulario mostrar, seria un verdadero desperdicio usar varios archivos en solo esto.
2 - Los combos o selects, llevan el nombre de la variable o identificador (NAME o ID)
SOLO en el tag del SELECT. Los tags OPTION contenidos en SELECT deberian llevar un value que es el valor que SELECT toma al seleccionar ese OPTION.
Código HTML:
<select name="ejemplo">
<option value="1">Opcion 1</option>
<option value="2">Opcion 2</option>
</select>
en este ejemplo, el combo se llama EJEMPLO.
EJEMPLO va a tomar valores 1 o 2 segun que haya seleccionado en el.
Notar que VALUE es el valor REAL de la opcion, y el texto entre <OPTION> y </OPTION> solo es para el usuario y no importa en lo mas minimo (usualmente) en la programacion...
3 - Ya que haces esta pregunta, entonces supongo que no vas a entender lo que te propuse en la respuesta 1. Cuando envias variables atraves de un formulario y las recive un script PHP, las mismas quedan registradas en los arrays globales $_HTTP_POSTVARS (no recuerdo si se escribia asi) y $_HTTP_GETVARS (tampoco estoy seguro de que esta sea exactamente el nombre de la variable) dependiendo del metodo por el cual envies las variables. Si la sentencia setglobals de PHP.ini esta en ON entonces ademas cada variable llega de forma individual (con el mismo nombre que en el formulario) y como una global.
EJ:
Código HTML:
<form>
<input type="text" name="var1">
<input type="submit">
</form>
en el script PHP que reciva este formulario tendre declarada la variable global $var1 (si tengo el registerglobals en on) y ademas lo tendre dentro del array asociativo $HTTP_GETVARS["var1"].
Entonces lo que tienes que hacer es en el primer formulario de todos, generas tu numero de control y en el formulario agregas un
Código HTML:
<input type="hidden" name="id_control" value="xxxxxxx">
donde "xxxxxxx" es el valor que generaste para control...
despues, en cada nuevo formulario (suponiendo que los recive un script PHP) debes escribir:
Código PHP:
<input type="hidden" name="id_control" value="<? echo $id_control ?>">
de esta manera, al segundo formulario le llegara la variable id_control generada en el primer formulario, y este la colocara dentro de un hidden (para que el usuario no lo vea ni modifique) y la enviara al proximo formulario, y asi sucesivamente....
----------------
Espero que te haya sido de ayuda...