Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/03/2010, 19:24
Ofesad
 
Fecha de Ingreso: julio-2009
Ubicación: Córdoba capital
Mensajes: 8
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con Switch e If

Cita:
Iniciado por eits Ver Mensaje
tienes un gran error, estas intentado compara tipos de datos diferentes

$this->anio_actual es de tipo númerico y dices que va de 1 a 6 y por defecto esta en 0 y 'total' es una cadena de texto, cuando haces eso, php, intenta sacar algun número del string y si no lo encuentra le asigna 0 es decir total se esta cambiando a un número que es 0(cero).

saludos.

Totalmente de acuerdo con lo que dices, es cierto que es numerico, pero es extraño aun asi; dado que en usos anteriores de la variable funciona correctamente.

Voy a explicar un poco mas del sistema...
Tenemos 2 tipos de carga
I = Inicial
T = Trayectoria
(son 2 formularios de carga de datos, similares, pero con varias diferencias)
Tenemos 4 tipos de educación
1 = Comun
2 = Especial
3 = adultos
4 =Artistica

Digamos que estoy cargando la Trayectoria de educación Comun.
Este tipo de educación tiene 6 años.

Empieza un bucle...
Código PHP:
private function guardar_comun()
    {
        for(
$this->anio_actual 1$this->anio_actual <= 6$this->anio_actual++)
        {
            
$this->guardar_fila();
            
$this->checkFilas();
        }
        
$this->anio_actual 'total';
        
$this->guardar_fila();
        
$this->checkFilas();
        
$this->checkColumnas();
    } 
Como verás, se setea el valor de la propiedad anio_actual a 'total'; y funciona correctamente.

En el caso de Artistica, no ocurre lo mismo, dado que dicho tipo de educación NO posee años, sino Niveles (Comun tb los posee, pero no voy a ponerme a explayar en el tema).

Código PHP:
private function guardar_artistica()
    {
        
        for(
$this->arr_nivel_actual 0$this->arr_nivel_actual <= sizeof($this->id_niveles)-1$this->arr_nivel_actual++)
            {
                
$this->id_nivel_actual $this->id_niveles[$this->arr_nivel_actual];
                
$this->nivel_actual_format strtolower($this->niveles[$this->arr_nivel_actual]);
                
$this->nivel_actual_format str_replace('.'""$this->nivel_actual_format);
                
$this->nivel_actual_format str_replace(' '"_"$this->nivel_actual_format);
                                
                
$this->guardar_fila();
                
$this->checkFilas();
            }
        
$this->anio_actual 'total';
        
$this->guardar_fila();
        
$this->checkFilas();
        
$this->checkColumnas();
    } 
Con lo que me has dicho, me ha hecho pensar que deberia modificar la función de Artistica, agregandole, previamente a modificar el valor de la propiedad anio_actual, lo siguiente:
Código PHP:
$this->anio_actual ''
Ahora voy a ver de levantar el servidor y la base de datos para ver si funciona correctamente de dicha forma.

Saludos desde Córdoba.

Ofesad.