Estoy usando Zend Studio 5 y Zend Platform 2.2.3 para desarrollar scripts en PHP 5 para un sistema que estoy desarrollando. Uno de estos scripts realiza una inserción en una base de datos MySQL después de validar los datos que ingreso en un formulario.
Bueno, cuando quiero probar mi script simplemente abro el formulario, meto unos datos de prueba y cuando le doy clic en Aceptar se invoca mediante AJAX a un script PHP que valida mos datos de mi formulario y, si todo es válido, los mete a la base de datos y muestra (también con AJAX) un mensaje de confirmación.
He aquí lo raro: Cada vez que intento probar este formulario y script desde mi navegador, el script se traba y no hace nada (no mete nada a la base de datos, ni menos muestra ningún mensaje de confirmación, ni tampoco envía ninguna respuesta de regreso al formulario); pero cuando lo corro paso a paso con Zend Studio el script, al que no le hago nigún cambio, corre perfectamente como si nada, valida e inserta correctamente y hace que en el formulario se muestre correctamente el mensaje de confirmación.
Por si acaso pongo acá el script:
Código PHP:
session_start();
$usuario_actual = Usuario::getUsuarioEnSesion();
$errores = array(); // Aquí van los errores de validación
$fecha = $_GET['fecha'];
if ($fecha == "")
$errores[] = Tareo::ERROR_VAL_FECHA_NO;
else
{
$mysql = ConexionBD::getInstancia(true);
$sql = "SELECT COUNT(*) FROM " . Tareo::NOMBRE_TABLA . " WHERE fecha='$fecha'";
$rs = $mysql->ejecutarSQL($sql);
$fila = ConexionBD::desdoblar($rs, ConexionBD::RS_ENUMERADO);
if ($fila[0] > 0)
$errores[] = Tareo::ERROR_VAL_FECHA_REP;
}
$num_trab = $_GET['numtrab'];
if (count($errores) != 0) // ¿Hay algún error de validación?
echo ObjetoConEstado::ESTADO_PLOMO . ";" . join(";", $errores);
else
{
$num_ok = $num_ko = 0;
for ($i = 0; $i < $num_trab; $i++)
{
$nuevo_item = new Tareo($fecha, $_GET["idtrab$i"], $_GET["idproyecto$i"]);
$nuevo_item->setNumHoras($_GET["hn$i"], $_GET["he25$i"], $_GET["he35$i"]);
// Este método hace la inserción en la base de datos
if ($nuevo_item->crear($usuario_actual->getID()))
$num_ok++; // Se insertó bien
else
$num_ko++; // No se pudo insertar
}
echo ObjetoConEstado::ESTADO_VERDE . ";$num_ok;$num_ko";
}
¿A qué se debe esto? ¿Por qué un script funciona sólo cuando es depurado y no cuando se ejecuta normalmente?
Gracias