Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] CodeIgniter Tablas HTML y MySQL

Estas en el tema de Tablas HTML y MySQL en el foro de PHP en Foros del Web. Buenas noches; Tengo esta tabla: Mes C1 C2 C3 C4 C5 Enero 1 2 3 4 5 ... y asi sucesivamente hasta llegar diciembre pero ...
  #1 (permalink)  
Antiguo 29/04/2013, 01:13
 
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.
  #2 (permalink)  
Antiguo 29/04/2013, 22:13
 
Fecha de Ingreso: abril-2013
Ubicación: En mi casa
Mensajes: 3
Antigüedad: 11 años
Puntos: 0
Respuesta: Tablas HTML y MySQL

Intento diseñar algo que me permita generar la tabla y coloque 0 si no hay entradas...
  #3 (permalink)  
Antiguo 30/04/2013, 13:51
 
Fecha de Ingreso: abril-2013
Ubicación: En mi casa
Mensajes: 3
Antigüedad: 11 años
Puntos: 0
Respuesta: Tablas HTML y MySQL

Buenos chicos;
Lo solucione con un par de acumuladores y un count()

Código PHP:
 <?php
        $hasta 
count($row) + 1;
        
$sumatoria = array(0,0,0,0,0,0,0,0,0,0);
        foreach (
$row as $value) {
            echo 
"<tr>\n";
            echo 
"    <td>".$meses[$value['mes']]."</td>\n";
            for (
$i 1$i <= 13$i++) {
                echo 
"<td>";
                switch (
$i) {
                    case 
1:     echo $value['hhr'];          $sumatoria[0]  += $value['hhr'];        break;
                    case 
2:     echo $value['htra'];          $sumatoria[1]  += $value['htra'];        break;
                    case 
3:     echo $value['ntra'];          $sumatoria[2]  += $value['ntra'];        break;
                    case 
4:     echo $value['diatra'];      $sumatoria[3]  += $value['diatra'];        break;
                    case 
5:     echo $value['diasacc'];    $sumatoria[4]  += $value['diasacc'];    break;
                    case 
6:     echo $value['totalacc'];    $sumatoria[5]  += $value['totalacc'];    break;
                    case 
7:     echo $value['acccon'];        $sumatoria[6]  += $value['acccon'];        break;
                    case 
8:     echo $value['accsin'];        $sumatoria[7]  += $value['accsin'];     break;
                    case 
9:      echo $value['diaper'];     $sumatoria[8]  += $value['diaper'];        break;
                    case 
10:   echo $value['diacar'];        $sumatoria[9] += $value['diacar'];        break;
                    case 
11: echo $value['inneta'];                                                break;
                    case 
12: echo $value['inbruta'];                                            break;
                    case 
13: echo $value['inseve'];                                                break;
                }
                echo 
"</td>\n";
            }
            echo 
"</tr>\n";
        }
        for (
$hasta$hasta <= 12$hasta++) {
            echo 
"<tr>\n";
            echo 
"    <td>".$meses[$hasta]."</td>\n";
            for (
$i 1$i <= 13$i++) {
                echo 
"<td>0</td>\n";
            }
            echo 
"</tr>\n";
            }
     echo 
'
      <tr class="info">
        <td>TOTAL</td>
        <td>'
.$sumatoria[0].'</td>
        <td>'
.$sumatoria[1].'</td>
        <td>'
.$sumatoria[2].'</td>
        <td>'
.$sumatoria[3].'</td>
        <td>'
.$sumatoria[4].'</td>
        <td>'
.$sumatoria[5].'</td>
        <td>'
.$sumatoria[6].'</td>
        <td>'
.$sumatoria[7].'</td>
        <td>'
.$sumatoria[8].'</td>
        <td>'
.$sumatoria[9].'</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>'
;
      
?>

Etiquetas: codeigniter, html, mysql, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:57.