22 enero 2014

Errores de programación (nueva edición)

Un artículo breve para hablar de errores de programación, concretamente, de un despiste que estoy empezando a cometer ya demasiadas veces. Se produce cuando programo en PhP.

Suponed que defino una variable, que se pasa por POST, al principio de un archivo PhP que graba o modifica un registro de una base de datos:

$variable=$_POST["variable"];

El valor de $variable puede ser, pongamos "nueva" o "modificar". Para determinar en qué caso estamos, escribo un "if" así:

if ($variable='nueva')
{
   // Se ejecuta la creación del nuevo registro.
}
else
{
   // Se modifica el registro.
}

En el código anterior está el fallo. El caso es que al ejecutarlo, resultaba que siempre ejecutaba la creación del nuevo registro, nunca la modificación. Casi media hora revisando las cabeceras HTML, viendo los valores de la variable $variable... Hasta que di con el error de casualidad.

¿Aún no habéis visto el error? Es fácil. La línea correcta del "if" es:

if ($variable=='nueva')

Esto es, en PhP $variable='nueva' es una asignación, esto es, la variable $variable pasa a valer 'nueva'. En cambio $variable=='nueva' es una evaluación lógica, esto es, PhP mira si $variable contiene el valor 'nueva'. Si lo contiene, devuelve "true", en caso contrario, "false". Yo estaba poniendo como condición lógica una asignación, que no devuelve en principio lo que tiene que devolver, y daba ese efecto extraño.

Un simple = me trajo por la calle de la amargura anoche...

No hay comentarios: