Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/05/2011, 05:15
portela85
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años
Puntos: 3
Pregunta Recuperar datos para un checkbox

Hola a todos! tengo un problemilla.
Tengo un formulario con diversos checkbox. Antes de insertar los datos en la BD, estos campos los tengo que pasar por una función para que se inserte 1 o 0, ya que cuando está activo, el valor es 'on'.
Mi problema surge cuando quiero modificar algún valor desde el formulario, estos no me aparecen como activos, ya que el valor almacenado es '1' en vez de 'on'.
Os dejo las funciones que uso:
Insertar Usuario
Código:
public function crearUsuario($consultor, $fechainicio, $fechafin,$facturacion, $tarifa, $costesalarial, $usuari, $pwd, $pwdconfirm, $admin, $group) {
		$user = new Usuario();
		$ret = $user->validarDatos($consultor, $fechainicio, $usuari, $pwd, $pwdconfirm);
		if ( $ret != null ){
			throw new Exception("Los siguientes datos no son válidos:<br/> " . $ret);
		}
		$esadmin=$user->validarCampoAdmin($admin);
		
		$query = "INSERT INTO consultores(consultor, f_inicio, f_fin, facturacion, tarifa, costesalarial, usuario, password, admin)  VALUES ('$consultor', '$fechainicio', '$fechafin', '$facturacion', '$tarifa', '$costesalarial', '$usuari', '$pwd',  '$esadmin');";
		//print $query;
		
		$consulta = new Consulta($query);
		
		if(!$consulta) 
			throw new Exception("Error al crear el Consultor : ".$usuari);
		}
Validar Admin

Código:
public function validarCampoAdmin($admin){
            if ($admin=on){
                $admin=1;
            }
            else{
                $admin=0;
            }
            return $admin;
        }
Esta es la función que uso para recuperar el usuario antes de modificarlo:
public function recuperarUsuario($usuari) {

Código:
$query= "SELECT Ident_consultor, consultor, f_inicio, f_fin, facturacion, tarifa, costesalarial, usuario, password, admin FROM consultores WHERE Ident_consultor='$usuari';";

        $consulta = new Consulta($query);
        
	if($fila=$consulta->obtener_fila()){
            
               			    $this->Ident_consultor		=$fila['Ident_consultor'];
                                    $this->consultor			=$fila['consultor'];
                                    $this->f_inicio              	=$fila['f_inicio'];
				    $this->f_fin                   	=$fila['f_fin'];
                                    $this->facturacion             	=$fila['facturacion'];
                                    $this->tarifa                  	=$fila['tarifa'];
                                    $this->costesalarial           	=$fila['costesalarial'];
                                    $this->usuario                 	=$fila['usuario'];
                                    $this->password                	=$fila['password'];
                                    $this->admin                   	=$fila['admin'];
        }
    }
Finalmente la plantilla donde está el checkbox que debería de aparecer marcado si es el caso. He probado de mil maneras, con comillas simples, dobles, nada... y el resultado es el mismo...

Código:
<tr>
<td colspan="1">
<b>¿Es Administrador?</b></td>
<td colspan="1">
<input type="checkbox" name="admin" value="<?php if((isset($user->admin)) AND $user->admin="1") { print "on"; } else { print '';} ?>">
</td>
</tr>
Muchas gracias!