¿Puede que el problema este en el switch?:
Código PHP:
$total=count($cadena);
if ($total!=NULL)
switch ($total) {
case 0:
if ($cadena['0']="Español" or $cadena['0']="Ingles")
{echo "\"otro\""; $otro="";} else {echo "\"otro\" checked";$otro=$cadena['0'];}
break;
case 1:
if ($cadena['1']!="Español" and $cadena['1']!="Ingles")
{echo "\"otro\" checked";$otro=$cadena['1'];} else {echo "\"otro\""; $otro="";}
break;
case 2:
echo "\"otro\" checked";
$otro=$cadena['2'];
break;
};
Pongamos por ejemplo que no hay marcada ninguna opción. El count del array sera 1 (eso quiere decir que nunca entrara en el 0).
Mira a ver si puede ser por ahi por lo que no te funciona correctamente.