Solo quiero comentar una cosa que he visto que creo está mal, no?:
Código:
<select name="p_predecesor">
<? foreach($categs as $categ) { ?>
<option value="<?=$categ['predecesor']?>">
<?=$categ['predecesor']?>
<? }?>
<option selected>???????</option>
</option>
</select>
Ummm, abres en un bucle una tag "<option>" y solo lo cierras una vez (ya fuera del bucle), además de meterle dentro otra opction:
Código:
<option value="<?=$categ['predecesor']?>">
<?=$categ['predecesor']?>
<? }?>
<option selected>???????</option>
</option>
Esto debería ser así:
Código:
<option value="<?=$categ['predecesor']?>">
<?=$categ['predecesor']?></option>
<?
} // Y aquí cierras el bucle
?>
<option selected>???????</option>
Un saludo.