Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/04/2013, 01:13
gusdrawn
 
Fecha de Ingreso: abril-2013
Ubicación: En mi casa
Mensajes: 3
Antigüedad: 11 años
Puntos: 0
Pregunta Tablas HTML y MySQL

Buenas noches;

Tengo esta tabla:

Mes C1 C2 C3 C4 C5
Enero 1 2 3 4 5
...

y asi sucesivamente hasta llegar diciembre

pero quiero generar esa tabla segun los datos de MySQL y por supuesto si no hay nada para ese mes que me ponga un simple "0".

Mi problema es que no logro hacer eso, ahora veamos mi codigo. Antes de continuar uso CodeIgniter como ayuda.

Mi MySQL es el siguiente
Cita:
(`id`, `idusuario`, `ano`, `mes`, `fechapub`, `hhr`, `htra`, `ntra`, `diatra`, `diasacc`, `acccon`, `accsin`, `diaper`, `diacar`, `totalacc`, `inneta`, `inbruta`, `inseve`, `activo`)
Uso la misma tabla para almacenar los valores y segun el usuario el mes y año puedo generar la tabla descripta anteriormente por supuesto intento resumir los nombres para no confundir.

Y no lo logro!! Intento pensar un y mil maneras lo ultimo a que llegue fue a esto:

Esto es la Vista:
Código PHP:
$meses = array (
            
=> 'Enero',
            
=> 'Febrero',
            
=> 'Marzo',
            
=> 'Abril',
            
=> 'Mayo',
            
=> 'Junio',
            
=> 'Julio',
            
=> 'Agosto',
            
=> 'Septiembre',
            
10 => 'Octubre',
            
11 => 'Noviembre',
            
12 => 'Diciembre'
        
);
        foreach (
$row as $value) {
            echo 
"<tr>\n";
            echo 
"    <td>".$meses[$value['mes']]."</td>\n";
            foreach (
$row as $value) {
                for (
$i 1$i <= 13$i++) {                
                    echo 
'<td>';
                    switch (
$i) {
                        case 
1:
                            if (isset(
$value['hhr'])) echo $value['hhr']; else echo '0';
                        break;
                        case 
2:
                            if (isset(
$value['htra'])) echo $value['htra']; else echo '0';
                        break;
                        case 
3:
                            if (isset(
$value['ntra'])) echo $value['ntra']; else echo '0';
                        break;
                        case 
4:
                            if (isset(
$value['diatra'])) echo $value['diatra']; else echo '0';
                        break;
                        case 
5:
                            if (isset(
$value['diasacc'])) echo $value['diasacc']; else echo '0';
                        break;
                        case 
6:
                            if (isset(
$value['totalacc'])) echo $value['totalacc']; else echo '0';
                        break;
                        case 
7:
                            if (isset(
$value['acccon'])) echo $value['acccon']; else echo '0';
                        break;
                        case 
8:
                            if (isset(
$value['accsin'])) echo $value['accsin']; else echo '0';
                        break;
                        case 
9:
                            if (isset(
$value['diaper'])) echo $value['diaper']; else echo '0';
                        break;
                        case 
10:
                            if (isset(
$value['diacar'])) echo $value['diacar']; else echo '0';
                        break;
                        case 
11:
                            if (isset(
$value['inneta'])) echo $value['inneta']; else echo '0';
                        break;
                        case 
12:
                            if (isset(
$value['inbruta'])) echo $value['inbruta']; else echo '0';
                        break;
                        case 
13:
                            if (isset(
$value['inseve'])) echo $value['inseve']; else echo '0';
                        break;        
                    }
                    echo 
'</td>';
                }
            }
            echo 
'</tr>';                
        }
    
    
?> 
Controlador
Código PHP:
public function index()    {
        
$this->load->model('Art');
        
$data['row'] = $this->Art->consultar($this->session->userdata('id'));
        
//Aqui hasta lo momentos mostraremos la tabla
        
$this->load->view('clientes/header');
        
$this->load->view('clientes/art',$data);
        
$this->load->view('clientes/footer');
    } 
Y el modelo
Código PHP:
    function consultar($id) {
        
$query $this->db->get_where('art', array('idusuario' => $id,'ano' => date('Y')));
        return 
$query->result_array();
    } 
Y supongamos MySQL solo tenga dos entradas como Enero y Febrero para un usuario, de marzo hasta diciembre todos los campos que me ponga "0".

Antes usaba $query->result(); para que me devuelva un Objeto pero cambie a que me genere un Array por ser mas versatil por los bucles. Pero hasta yo mismo me recozco que el metodo que uso es deficiente.

Saludos desde Venezuela!

Muchas gracias por la ayuda, me alegra unirme a esta comunidad.