Hola,
Todo esta en
Código PHP:
<select name="p_predecesor">
<? foreach($categs as $categ) { ?>
<option value="predecesor">
<?=$categ['predecesor']?>
<? }?>
</option>
</select>
Primera cosa, esta mal. Con ese codigo creas un select con x opciones, pero todas con el mismo valor: la cadena 'predecesor'. En el value del option tiene que ir el valor que quieres pasar cuando esa opcion sea seleccionada. Tal como tienes ahora siempre pasa la cadena 'predecesor'.
Segundo, la seleccion de un option de un select es simple HTML. Solo tienes que generar el atributo selected en el option que quieres seleccionar. Dentro del foreach, haces un if que compruebe si el elemento a mostrar tiene que estar o no seleccionado. Y en caso de tener que estar seleccionado, sacar el HTML correspondiente.
Saludos.