Foros del Web » Programando para Internet » PHP »

Problema para llenar una Grilla con PHP

Estas en el tema de Problema para llenar una Grilla con PHP en el foro de PHP en Foros del Web. Estimados, Necesito llenar una grilla con los datos del cliente, y por cada cliente marcar con una (x) o una (.).los dias que fue a ...
  #1 (permalink)  
Antiguo 20/04/2012, 09:52
 
Fecha de Ingreso: abril-2012
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Problema para llenar una Grilla con PHP

Estimados,

Necesito llenar una grilla con los datos del cliente, y por cada cliente marcar con una (x) o una (.).los dias que fue a trabajar

y se debe llenar algo parecido a esta imagen :


Para cargar los clientes no tengo ningún problema, pero si cuando quiero cargar los días trabajados.

El primer ciclo carga los días correctamente pero cuando pregunta por el siguiente día ocurre lo siguiente :



Tabla asistencia:


Tabla clientes :

y este es el código que ocupe:

while($row = mysql_fetch_array($result))

{

?>
<TR>
<TD width="119"><?php echo $row["0"]; ?></TD>
<TD width="135"><?php echo $row["1"]; ?></TD>
<TD width="135"><?php echo $row["2"]; ?></TD>
<TD width="61"><?php echo $row["3"]; ?></TD>
<TD width="166"><?php echo $row["4"]; ?></TD>
<TD width="135"><?php echo $row["5"]; ?></TD>



<?php
$id_usuario = $row["6"];

?>

<?php
$sql="SELECT id_persona, fecha_ingreso, fecha_salida FROM asistencia_t WHERE fecha_ingreso between $mes1 and $mes2 order by fecha_ingreso ";

if($result_l=mysql_query($sql,$link))
{
if($num_l=mysql_num_rows($result_l))
{
while($row=mysql_fetch_row($result_l))
{
$id_2 =$row[0];
$fecha_in =$row[1];
$fecha_sal =$row[2];



$solofecha = substr($fecha_in,0,10); // fecha completa
$solomes = substr($fecha_in,5,2); // mes
$solodia = substr($fecha_in,9,2); // dia



if ( $id_usuario == $id_2)

{

for ( $dias=1; $dias <= 31; $dias++)
{

if ($dias == $solodia )
{

?> <TD width="15"><?php echo "/"; ?></TD>
<?php
// fin si
}
else


{

?> <TD width="15"><?php echo "x"; ?></TD>
<?php


}// fin


}

}

// fin si $result

} // fin si $num
}//fin else

} // fin wuile $result_l

} //fin while

}//fin if var

?>
</table>

</div>
</div>
<?php //fin campos vacios

}//fin submit

?>

Última edición por jorudico; 20/04/2012 a las 10:05
  #2 (permalink)  
Antiguo 20/04/2012, 10:24
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Problema para llenar una Grilla con PHP

Te falta cerrar un </tr> por algun lado, el codigo es muy desprolijo, fijate si lo podes postear con estilo y bien identado para que se pueda leer mejor.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 20/04/2012, 11:22
 
Fecha de Ingreso: abril-2012
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema para llenar una Grilla con PHP

Cita:
Iniciado por linuxzero Ver Mensaje
Te falta cerrar un </tr> por algun lado, el codigo es muy desprolijo, fijate si lo podes postear con estilo y bien identado para que se pueda leer mejor.
Estimado, acabo de colocar el </tr> que faltaba, pero la falla aun continua,ademas ahora estoy subiendo el código un poco mas ordenado.

Pd: Como edito el tema para colocar el código ?????
Saludos
  #4 (permalink)  
Antiguo 20/04/2012, 11:36
 
Fecha de Ingreso: abril-2012
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema para llenar una Grilla con PHP

No pude editar el mensaje, así que coloco el código acá




<?php
if(($_POST['mes']!="") and ($_POST['año']!=""))
{
$sql="select a.nombre , ap_paterno , ap_materno , a.rut, b.nombre , c.nombre,d.id_persona
from persona_m a , empresa_m b , funcion_m c , asistencia_t d where a.estado = 1" ;
$sql .= " and a.id_empresa = b.id and a.id_funcion = c.id and a.id = d.id_persona and d.fecha_ingreso between $mes1 and $mes2 group by d.id_persona";

$result=mysql_query($sql,$link);
$numero = mysql_num_rows($result);
echo $numero;
}

else {
?>
<script language='JavaScript'>
alert("Ingrese Fecha !")
</script>
<?php
$var = 0;
}

?>
<div id="Layer_tabla" align="center" style="OVERFLOW-Y: scroll; WIDTH: 920px; TOP: 400px; HEIGHT: 174px">

<div align="center">
<table BORDER="2" align="center" CELLPADDING="2">
<TR>
<TD width="119"> &nbsp; <B>Nombre </B></TD>
<TD width="135"> &nbsp; <B>Ap_Paterno </B></TD>
<TD width="135"> &nbsp; <B>Ap_Materno </B></TD>
<TD width="61"> &nbsp; <B>Rut </B></TD>
<TD width="166"> &nbsp; <B>Empresa </B></TD>
<TD width="135"> &nbsp; <B>Cargo </B></TD>
<TD width="15"> &nbsp; <B>1 </B></TD>
<TD width="15"> &nbsp; <B>2 </B></TD>
<TD width="10"> &nbsp; <B>3 </B></TD>
<TD width="10"> &nbsp; <B>4 </B></TD>
<TD width="10"> &nbsp; <B>5 </B></TD>
<TD width="10"> &nbsp; <B>6 </B></TD>
<TD width="10"> &nbsp; <B>7 </B></TD>
<TD width="10"> &nbsp; <B>8 </B></TD>
<TD width="10"> &nbsp; <B>9 </B></TD>
<TD width="10"> &nbsp; <B>10 </B></TD>
<TD width="10"> &nbsp; <B>11 </B></TD>
<TD width="10"> &nbsp; <B>12 </B></TD>
<TD width="10"> &nbsp; <B>13 </B></TD>
<TD width="10"> &nbsp; <B>14 </B></TD>
<TD width="10"> &nbsp; <B>15 </B></TD>
<TD width="10"> &nbsp; <B>16 </B></TD>
<TD width="10"> &nbsp; <B>17 </B></TD>
<TD width="10"> &nbsp; <B>18 </B></TD>
<TD width="10"> &nbsp; <B>19 </B></TD>
<TD width="10"> &nbsp; <B>20 </B></TD>
<TD width="10"> &nbsp; <B>21 </B></TD>
<TD width="10"> &nbsp; <B>22 </B></TD>
<TD width="10"> &nbsp; <B>23 </B></TD>
<TD width="10"> &nbsp; <B>24 </B></TD>
<TD width="10"> &nbsp; <B>25 </B></TD>
<TD width="10"> &nbsp; <B>26 </B></TD>
<TD width="10"> &nbsp; <B>27 </B></TD>
<TD width="10"> &nbsp; <B>28 </B></TD>
<TD width="10"> &nbsp; <B>29 </B></TD>
<TD width="10"> &nbsp; <B>30 </B></TD>
<TD width="10"> &nbsp; <B>31 </B></TD>
</TR>

<?php

$fechaInicio=$_POST['input1'];
$diaInicio = substr($fechaInicio, 0, 2);
$mesInicio = substr($fechaInicio, 3, 2);
$anoInicio = substr($fechaInicio, 6, 10);
// fecah del sistema
$diaActual = date ("d");
$mesActual = date ("m");
$anioActual = date ("Y");
if ($var != "0")
{

///////////////////////////////////////////////llena los datos del usuario ///////////////////////////////////////////////////
while($row = mysql_fetch_array($result))
{
?>
<TR>
<TD width="119"><?php echo $row["0"]; ?></TD>
<TD width="135"><?php echo $row["1"]; ?></TD>
<TD width="135"><?php echo $row["2"]; ?></TD>
<TD width="61"><?php echo $row["3"]; ?></TD>
<TD width="166"><?php echo $row["4"]; ?></TD>
<TD width="135"><?php echo $row["5"]; ?></TD>
<?php
$id_usuario = $row["6"]; // rescato el id

?>

<?php
//////////// // genero una segunda consulta para llenar lso dias ///////////////////
$sql="SELECT id_persona, fecha_ingreso, fecha_salida FROM asistencia_t";
$sql="WHERE fecha_ingreso between $mes1 and $mes2 order by fecha_ingreso ";

if($result_l=mysql_query($sql,$link))
{
if($num_l=mysql_num_rows($result_l))
{
while($row=mysql_fetch_row($result_l))
{
$id_2 =$row[0];
$fecha_in =$row[1];
$fecha_sal =$row[2];
$solodia = substr($fecha_in,9,2); // Se guarda el dia
if ( $id_usuario == $id_2)
{
for ( $dias=1; $dias <= 31; $dias++)
{

if ($dias == $solodia )
{

?> <TD width="15"><?php echo "/"; ?></TD>
<?php

}//Fin si ($dias == $solodia )
else
{
?> <TD width="15"><?php echo "x"; ?></TD>
<?php


}// fin else
}// fin for
}//din si
}// fin si $num


}//fin si
} // fin wuile $result_l
} //fin while
}//fin if var

?>
</TR>
</table>
</div>
</div>
  #5 (permalink)  
Antiguo 20/04/2012, 11:47
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Problema para llenar una Grilla con PHP

el tr lo tenes que cerra dentro del while y no por fuera como hiciste, pensa que por cada iteracion tenes que tener una fila entera, es decir que por cada iteracion tenes que tener una estructura asi:

Código PHP:
Ver original
  1. while(algo) {
  2.     <tr>
  3.          <td></td>
  4.          <td></td>
  5.          <td></td>
  6.          <td></td>
  7.          ......
  8.          <td></td>
  9.     </tr>
  10. }

Como lo tenes vos no te cierra nunca 1 fila
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #6 (permalink)  
Antiguo 20/04/2012, 12:06
 
Fecha de Ingreso: abril-2012
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema para llenar una Grilla con PHP

Cita:
Iniciado por linuxzero Ver Mensaje
el tr lo tenes que cerra dentro del while y no por fuera como hiciste, pensa que por cada iteracion tenes que tener una fila entera, es decir que por cada iteracion tenes que tener una estructura asi:

Código PHP:
Ver original
  1. while(algo) {
  2.     <tr>
  3.          <td></td>
  4.          <td></td>
  5.          <td></td>
  6.          <td></td>
  7.          ......
  8.          <td></td>
  9.     </tr>
  10. }

Como lo tenes vos no te cierra nunca 1 fila
haber si te entiendo....yo tengo dos while , el primero es para llenar los datos del cliente , y el segundo los días.
Con lo que tu me quieres decir, debo cerrar cada while así


Código PHP:
Ver original
  1. while(Llena personas) {
  2.     <tr>
  3.          <td></td>
  4.          <td></td>
  5.          <td></td>
  6.          <td></td>
  7.          ......
  8.          <td></td>
  9.     </tr>
  10.  
  11. while(Lena días) {
  12.     <tr>
  13.          <td></td>
  14.          <td></td>
  15.          <td></td>
  16.          <td></td>
  17.          ......
  18.          <td></td>
  19.     </tr>
  20.  
  21.  
  22. }

Discula si no te entiendo , pero soy nuevo en esto.

Saludos
  #7 (permalink)  
Antiguo 20/04/2012, 12:19
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Problema para llenar una Grilla con PHP

En realidad como queres dibujar la tabla no te va a funcionar recorrerlos por separado a menos que te lo rebusques con el tema de abrir y cerrar bien los tags de tr. porque vos en 1 iteracion tenes que meter en 1 sola fila los datos de la persona y de los dias todo junto. creo que te va a combenir crear un array de 2 dimenciones donde en la primera dimencion tengas un vector con los datos de la persona y en la segunda dimension otro vector con los datos de los dias, asi podes recorres 1 sola vez ese vector y vas recorriendo las dimensiones de cada persona, ejemplo:

Código PHP:
Ver original
  1. $datos[0][0] = Array("Jorge", "Dominguez", "bla", "bla");
  2. $datos[0][1] = Array("dato dia 1", "dato dia 2", "dato dia 3", "etc");
  3. $datos[1][0] = Array("Mauro", "Chavez", "bla", "bla");
  4. $datos[1][1] = Array("dato dia 1", "dato dia 2", "dato dia 3", "etc");
  5. $datos[2][0] = Array("Lucia", "Gimenez", "bla", "bla");
  6. $datos[2][1] = Array("dato dia 1", "dato dia 2", "dato dia 3", "etc");
  7. .......
  8. etc.

Entonces, si vos logras tener los datos asi solo te queda recorrer el vector $datos una vez, y acceder a sus dimensiones

Código PHP:
Ver original
  1. <table>
  2. <?php
  3. foreach ($datos as $datosPersona) {
  4.          echo "<tr>";
  5.          foreach ($datosPersona[0] as $datosPersonales) {
  6.               echo "<td>" . $datosPersonales . "</td>";
  7.          }
  8.          foreach ($datosPersona[1] as $datosDias) {
  9.               echo "<td>" . $datosDias . "</td>";
  10.          }
  11.          echo "</tr>";
  12. }
  13. ?>
  14. </table>

A grandes rasgos tendrias que hacer algo asi
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: grilla, mysql, sql, usuarios
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 14:03.