La sentencia SQL esta bien, pero a la hora de construir tu string para enviarlo es donde tienes el problema, aparte no te recomiendo hacerlo de esta forma pues te haces vulnerable a SQL Injection, lo mas recomendable es usar, sprintf, y addslashes:
Código PHP:
$actualizarSQL = "UPDATE ficha SET cnombre='%s' WHERE id=$id";
$actualizar = sprintf( $actualizarSQL, addslashes( $_POST['nombre'] ) );
Con eso ya queda listo tu script y protegido.
Saludos.