Problema para llenar una Grilla con PHP
Publicado por Jose (1 intervención) el 18/04/2012 14:15:06
Necesito llenar una grilla con los datos del cliente, y por cada cliente marcar con una (x) o un (.).los dias que fue a trabajar ( . = Asistió , x = no asistió )
Pero cuando cuando empiezo a llenar la grilla, me marca los días de asistencia al principio y no donde corresponde cada día
Ejemplo.
El Sr Juan Perez dentro del mes fue a trabajar el día 5 y 6, y cuando filtro por mes en la pagina me me muestran los datos del cliente y me marca con un punto el día 1 y 2
Este es una parte del código que realice:
( Con esta consulta lleno los datos del cliente )
if(($_POST['mes']!="") and ($_POST['año']!=""))
{
$sql="select a.nombre , ap_paterno , ap_materno , a.rut, b.nombre , c.nombre
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;
//echo (" funciona mes");
}
else {
?>
<script language='JavaScript'>
alert("Ingrese Fecha !")
</script>
<?php
$var = 0;
}
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"];
?>
<?php
( En esta consulta filtro por todos los días del mes para poder llenar la asistencia )
$sql="SELECT id_persona, fecha_ingreso, fecha_salida FROM asistencia_t WHERE fecha_ingreso between $mes1 and $mes2";
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); // dia
for ( $dias=1; $dias <= 31; $dias++)
{
if ($solodia == $dias)
{
if ($id_usuario == $id_2)
{
?> <TD width="15"><?php echo "."; ?></TD>
<?php
}// fin si
else
{
?> <TD width="15"><?php echo "x"; ?></TD>
<?php
} // fin else
}// fin si
} // 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
?>
Pero cuando cuando empiezo a llenar la grilla, me marca los días de asistencia al principio y no donde corresponde cada día
Ejemplo.
El Sr Juan Perez dentro del mes fue a trabajar el día 5 y 6, y cuando filtro por mes en la pagina me me muestran los datos del cliente y me marca con un punto el día 1 y 2
Este es una parte del código que realice:
( Con esta consulta lleno los datos del cliente )
if(($_POST['mes']!="") and ($_POST['año']!=""))
{
$sql="select a.nombre , ap_paterno , ap_materno , a.rut, b.nombre , c.nombre
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;
//echo (" funciona mes");
}
else {
?>
<script language='JavaScript'>
alert("Ingrese Fecha !")
</script>
<?php
$var = 0;
}
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"];
?>
<?php
( En esta consulta filtro por todos los días del mes para poder llenar la asistencia )
$sql="SELECT id_persona, fecha_ingreso, fecha_salida FROM asistencia_t WHERE fecha_ingreso between $mes1 and $mes2";
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); // dia
for ( $dias=1; $dias <= 31; $dias++)
{
if ($solodia == $dias)
{
if ($id_usuario == $id_2)
{
?> <TD width="15"><?php echo "."; ?></TD>
<?php
}// fin si
else
{
?> <TD width="15"><?php echo "x"; ?></TD>
<?php
} // fin else
}// fin si
} // 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
?>
Valora esta pregunta


0