Para el formulario podrías hacer algo asi (con mysql):
Código PHP:
<html>
<head>
<title>Ingreso de articulos</title>
</head>
<body>
<form name="form_articulos" action="script.php" method="post">
<select name="categoria">
<option value="0">Seleccionar categoria</option>
<?php
mysql_connect("server","user","pass");
mysql_select_db("nombre_bd");
$sql="select id_cat, nombre from categorias";
$rs=mysql_query($sql);
if(isset($rs) && mysql_num_rows($rs)>0)
{
while($fila=mysql_fetch_assoc($rs))
{
?>
<option value="<?php echo $fila['id_cat'];?>"><?php echo $fila['nombre'];?></option>
<?php
}
mysql_free_result($rs);
}
?>
</select>
<select name="subcategoria">
<option value="0">Seleccionar Subcategoria</option>
<?php
$sql="select id_sub, nombre-sub from subcategorias";
$rs=mysql_query($sql);
if(isset($rs) && mysql_num_rows($rs)>0)
{
while($fila=mysql_fetch_assoc($rs))
{
?>
<option value="<?php echo $fila['id_sub'];?>"><?php echo $fila['nombre-sub'];?></option>
<?php
}
mysql_free_result($rs);
}
?>
</select>
<label>Nombre Articulo</label>
<input type="text" name="nombrearticulo">
<input type="submit" name="guardar" value="Guardar">
</form>
</body>
</html>
Esto muestra las listas con nombres, pero por debajo van los codigos, es decir, cuando hagas el submit el script que recibe los datos del formulario recibirá sólo los códigos y bastaria hacer esto:
Código PHP:
<?php
if(isset($_POST['categoria']) && $_POST['categoria']!="Elegir categoria" && isset($_POST['subcategoria']) && $_POST['subcategoria']!="Elegir Subcategoria" && isset($_POST['nombrearticulo']))
{
$sql="insert into articulos values(".$_POST['categoria'].",".$_POST['subcategoria'].",'".$_POST['nombrearticulo']."')"
mysql_query($sql);
}
?>