Me encuetro en un problema al generar un reporte con 2 tablas:
personal_catorcenald: sus campos son: id, Personal.
la otra tabla es mov_diario y sus campos son: id_diario, Fecha, Finca, No_Planilla, Nombres, Valor_dia
y la relacion es que una persona puede tener muchos movimientos.
para el caso: en la aplicacion el usuario define el rango de fecha, finca y planilla, para poder generar el reporte.
Detalle del Reporte:
Necesito poner como encabezado horizontalmente las fechas en que hayan trabajado y colocar cada dia segun la fecha lo que gano ese dia (Valor_dia);
| id |Personal | fecha1 | fecha n| fecha n|........... | total |
| 1 | Fulano | 4.20 | 10.89 | 24.25 |...................|(sumatoria de fulano)|
El problema es que como podría ser solo unos cuantos dias como pueda que sea todo el mes.
el query que tengo para las fechas es el siguiente:
SELECT DISTINCT(Fecha) from mov_diario WHERE Fecha >= "2012-11-01" and Fecha <= "2012-11-14" and Finca = " 1" and No_Planilla = "12MD21"
el query para llenar la tabla es el siguiente.:
SELECT personal_catorcenald.Personal, personal_catorcenald.id, Fecha, Finca, Valor_dia
FROM mov_diario, personal_catorcenald
where Fecha >= "2012-11-01" and Fecha <= "2012-11-15" and Finca = " 1" and mov_diario.Nombres = personal_catorcenald.id
GROUP BY id, Fecha
ORDER BY id
y el problema es que se me repite el nombre.. por cada dia trabajado.
****lo he trabajado de esta forma ya que es la forma en como lo lleno en PHP.
ajunto codigo:
Código PHP:
<?php
include "conexionBD.php";
//digamos que estos son las fechas introducidas por el usuario.
$fecha1 = "2012-11-01";
$fecha2 = "2012-11-20";
$finca = " 1";
$planilla = "12MD21";
//aca tomo la fecha para ponerla de encabezado
$conf=mysql_query("SELECT DISTINCT(Fecha) as Fecha from mov_diario WHERE Fecha >= '$fecha1' and Fecha <= '$fecha2' and Finca = '$finca' order by Fecha asc", $conexion);
echo "<table width=\"100%\" border=\"1\" align=\"center\">";
echo "<tr>";
echo "<td>ID</td>";
echo "<td>Nombres</td>";
while($rowf = mysql_fetch_array($conf)) {
$farray[] = $rowf[Fecha];
echo "<td>$rowf[Fecha]</td>";
}
echo "<td> Dia</td>";
echo "</tr>";
$con=mysql_query("SELECT personal_catorcenald.Personal, personal_catorcenald.id, Fecha, Finca, Valor_dia FROM mov_diario, personal_catorcenald where Fecha >= '$fecha1' and Fecha <= '$fecha2' and Finca = '$finca' and mov_diario.Nombres = personal_catorcenald.id GROUP BY id, Fecha ORDER BY id", $conexion);
while($row = mysql_fetch_array($con)) {
$dia=$row[Fecha];
echo "<tr>";
echo "<td>$row[id]</td>";
echo "<td>$row[Personal]</td>";
$col = -1;
for($i = 0; $i < count($farray); $i++){
$col++;
if($farray[$i] == $dia){
for($f=0; $f<=$col; $f++){
if($f==$col){
echo "<td style=background-color:#F5D0A9;>$row[Valor_dia]</td>"; // aca se coloca el valor.
}
}
}else{
echo "<td>0</td>";
}
}
}
echo "</tr>";
echo "<table>";
?>
como puedo simplificarlo...
????????