Foros del Web » Programando para Internet » PHP »

Problemas para rellenar tabla con PHP

Estas en el tema de Problemas para rellenar tabla con PHP en el foro de PHP en Foros del Web. Estoy pegado y necesito de su colaboración...Estoy intentando llenar una tabla con los datos traidos desde la bdd pero no logro dar con la solución. ...
  #1 (permalink)  
Antiguo 10/01/2016, 22:07
 
Fecha de Ingreso: enero-2015
Ubicación: Caracas
Mensajes: 2
Antigüedad: 9 años, 3 meses
Puntos: 0
Exclamación Problemas para rellenar tabla con PHP

Estoy pegado y necesito de su colaboración...Estoy intentando llenar una tabla con los datos traidos desde la bdd pero no logro dar con la solución.

La tabla de la bdd tiene la siguiente estructura:

fecha,nombre,apellido,cedula,nombre supervisor,apellido supervisor,asistencia,turno,servicio.

Ahora bien, esta tabla se utiliza para llevar el control de la asistencia del personal de la empresa.

El tema que tengo es que necesito agrupar las distintas asistencias por cada uno de los empleados, es decir, necesito llenar una tabla con la siguiente estructura:

Cedula|Nombre|Apellido|Turno|Nombre y Apellido Supervisor|Día Inicio de la consulta|Día fin de la consulta

A través de un Loop FOR ya logre mostrar en columnas los dias dependiendo del mes de la consulta realizada.

Pero no hallo la forma de poder agrupar los registros por cedula y escribirlos.

Esto es lo que tengo:
Cedula|Nombre|Apellido|Turno|Nombre y Apellido Supervisor|Día 1|Dia 2|Dia 3|...
12348|Javier|Hernandez|Diurno|Pedro Galindez|Asistente
12348|Javier|Hernandez|Diurno|Pedro Galindez|Inasistente
12348|Javier|Hernandez|Diurno|Pedro Galindez|Cambio
Cada fila corresponde a un día diferente

Esto es lo que necesito:
Cedula|Nombre|Apellido|Turno|Nombre y Apellido Supervisor|Día 1|Dia 2|Dia 3|...
12348|Javier|Hernandez|Diurno|Pedro Galindez|Asistente|Inasistente|Cambio|...
  #2 (permalink)  
Antiguo 10/01/2016, 22:34
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Problemas para rellenar tabla con PHP

Pon el bucle foor despues de la fila del nombre y apellido del supervisor, eliminando del foor todo lo que no necesites (cedula, nombre, apeillido, turno, etc.)

Si pudieras poner el código que tienes ahí, podríamos ayudarte mejor. Saludos
  #3 (permalink)  
Antiguo 10/01/2016, 22:43
 
Fecha de Ingreso: enero-2015
Ubicación: Caracas
Mensajes: 2
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Problemas para rellenar tabla con PHP

Este es el codigo que tengo...

Código PHP:
<form method="GET" name="f1" id="f1">
                              <div class="col-sm-3 col-md-3">
                                <div class="form-group">
                                  <select class="selectpicker show-tick form-control" maxoption="1" id="desde" name="desde">
                                                      <option value=''>Seleccione...</option>
                                                       <?php
                                                      $sql_fecha 
= ("SELECT MONTH(fecha) AS mes, YEAR(fecha) AS ano 
                                                                       FROM asistencia_empleado 
                                                                       GROUP BY MONTH(fecha), YEAR(fecha) 
                                                                       ORDER BY ano,mes ASC"
);
                                                      
$res_fecha=$bd->ejecutar($sql_fecha);
                                                      while(
$r_fecha=$bd->obtener_fila($res_fecha)){
                                                      
?>
                                                      <option><?php echo $r_fecha['mes'].'/'.$r_fecha['ano'];} ?></option>
                                                    </select>
                                </div>
                              </div>
                                <input type="submit" class="btn btn-success btn-md" id="btn" name="submit" value="Buscar" onclick="f1.action='reporte_asistencia.php'">
                            </form>

                            <?php
                            
if(empty($_GET['desde'])){
                              
$desde="";
                            }
                            else{
                              
$desde $_GET['desde'];
                            }
                            
//Separo el mes y el año para el query de asistencia
                            
$a explode("/"$desde);
                            
$mes $a[0];
                            
$año $a[1];

                            
$fin="";

                            switch(
$mes){
                              case 
1:
                                
$fin=31;
                                break;
                              case 
2:
                                if (((
$año == 0) && ($año 100 != 0)) || (($año 100 == 0) && ($año 400 == 0))){
                                  
$fin=29
                                }
                                else{
                                  
$fin=28
                                }
                                break;
                              case 
3:
                                
$fin=31;
                                break;
                              case 
4:
                                
$fin=30;
                                break;
                              case 
5:
                                
$fin=31;
                                break;
                              case 
6:
                                
$fin=30;
                                break;
                              case 
7:
                                
$fin=31;
                                break;
                              case 
8:
                                
$fin=31;
                                break;
                              case 
9:
                                
$fin=30;
                                break;
                              case 
10:
                                
$fin=31;
                                break;
                              case 
11:
                                
$fin=30;
                                break;
                              case 
12:
                                
$fin=31;
                                break;
                            }
                            
?>

                               <div class="row">    
                                  <div class="col-sm-2 col-md-8 col-lg-12">
                                    <div class="panel panel-default">
                                      <div class="panel-heading">
                                        <h3 class="panel-title">Reporte de Asistencia</h3>
                                      </div>
                                      
                                     <div class="table-responsive">
                                      <table class="table table-success">
                                        <thead>
                                          <tr class="">
                                            <th>Cedula</th>
                                            <th>Nombre</th>
                                            <th>Apellido</th>
                                            <th>Turno</th>
                                            <th>Nombre</th>
                                            <th>Apelido</th>
                                            <th>Servicio</th>
                                            <th><?php for ($i=1$i<=$fin$i++) { echo $i.'/'.$mes.'/'.$año;?></th>
                                            <th><?php }?></th>
                                          </tr>
                                        </thead>
                                        <?php
                                        $sql 
= ("SELECT     MONTH(asistencia_empleado.fecha) AS Mes, YEAR(asistencia_empleado.fecha) AS Ano, asistencia_empleado.fecha, empleados.nombre, 
                      empleados.apellido, empleados.cedula, personal_administrativo.nombre AS nomsup, personal_administrativo.apellido AS apesup, tipo_asistencia.codigo AS asistencia, 
                      turno.descripcion AS turno, servicio.servicio
FROM         servicio LEFT OUTER JOIN
                      empleados ON servicio.id_servicio = empleados.id_servicio LEFT OUTER JOIN
                      turno ON empleados.id_turno = turno.id_turno RIGHT OUTER JOIN
                      asistencia_empleado LEFT OUTER JOIN
                      tipo_asistencia ON asistencia_empleado.id_tipo_asistencia = tipo_asistencia.id_tipo_asistencia LEFT OUTER JOIN
                      personal_administrativo ON asistencia_empleado.id_personal_administrativo = personal_administrativo.id_personal_administrativo ON 
                      empleados.cedula = asistencia_empleado.cedula
WHERE     (MONTH(asistencia_empleado.fecha) = '$mes') AND (YEAR(asistencia_empleado.fecha) = '$año') AND asistencia_empleado.cedula='26576741'
GROUP BY MONTH(asistencia_empleado.fecha), YEAR(asistencia_empleado.fecha), asistencia_empleado.fecha, empleados.nombre, empleados.apellido, empleados.cedula, 
                      personal_administrativo.nombre, personal_administrativo.apellido, tipo_asistencia.descripcion, turno.descripcion, servicio.servicio
ORDER BY ano DESC, mes DESC"
);
                                        
$res $bd->ejecutar($sql);
                                        while(
$r $bd->obtener_fila($res)){
                                        
?>
                                        <tbody>
                                          <tr>
                                            <td><?php echo $r['cedula'];?></td>
                                            <td><?php echo $r['nombre'];?></td>
                                            <td><?php echo $r['apellido'];?></td>
                                            <td><?php echo $r['turno'];?></td>
                                            <td><?php echo $r['nomsup'] ;?></td>
                                            <td><?php echo $r['apesup'];?></td>
                                            <td><?php echo $r['servicio'];?></td>
                                            <td><?php echo $r['asistencia'];?></td>
                                            </tr>
                                        </tbody>
                                         <?php ?>                                   
                                      </table>

                                   </div>
                                  </div>
                                 </div>
                                </div>
  #4 (permalink)  
Antiguo 11/01/2016, 06:29
 
Fecha de Ingreso: enero-2016
Mensajes: 71
Antigüedad: 8 años, 3 meses
Puntos: 14
Respuesta: Problemas para rellenar tabla con PHP

Prueba con group_concat()
Código PHP:
Ver original
  1. $sql = "SELECT
  2.    MONTH(asistencia_empleado.fecha) AS Mes,
  3.    YEAR(asistencia_empleado.fecha) AS Ano,
  4.    asistencia_empleado.fecha,
  5.  
  6.    empleados.nombre,
  7.    empleados.apellido,
  8.    empleados.cedula,
  9.  
  10.    personal_administrativo.nombre AS nomsup,
  11.    personal_administrativo.apellido AS apesup,
  12.  
  13.    group_concat(tipo_asistencia.codigo, separator '|') AS asistencia,
  14.  
  15.    turno.descripcion AS turno,
  16.  
  17.    servicio.servicio
  18.  
  19.  
  20. FROM
  21.    servicio LEFT OUTER JOIN
  22.    empleados ON servicio.id_servicio = empleados.id_servicio LEFT OUTER JOIN
  23.    turno ON empleados.id_turno = turno.id_turno RIGHT OUTER JOIN
  24.    asistencia_empleado LEFT OUTER JOIN
  25.    tipo_asistencia ON asistencia_empleado.id_tipo_asistencia = tipo_asistencia.id_tipo_asistencia LEFT OUTER JOIN
  26.    personal_administrativo ON asistencia_empleado.id_personal_administrativo = personal_administrativo.id_personal_administrativo ON
  27.    empleados.cedula = asistencia_empleado.cedula
  28.  
  29. WHERE
  30.    (MONTH(asistencia_empleado.fecha) = '$mes') AND
  31.    (YEAR(asistencia_empleado.fecha)  = '$año') AND
  32.    asistencia_empleado.cedula='26576741'
  33.  
  34. GROUP BY
  35.    MONTH(asistencia_empleado.fecha),
  36.    YEAR(asistencia_empleado.fecha),
  37.    asistencia_empleado.fecha,
  38.    empleados.nombre,
  39.    empleados.apellido,
  40.    empleados.cedula,
  41.    personal_administrativo.nombre,
  42.    personal_administrativo.apellido,
  43.    turno.descripcion,
  44.    servicio.servicio
  45.  
  46. ORDER BY
  47.    ano DESC,
  48.    mes DESC";

Un saludo,

Etiquetas: matriz, mysql, php+arrays, tabla
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 10:29.