Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2013, 05:34
portela85
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años
Puntos: 3
Problemas con arrays

Buenos días,

Tengo una aplicación en la que los usuarios van insertando registros a diario a través de un formulario. Lo que quiero es, a partir de un mes y un año dado, generar una tabla donde en vertical estén los usuarios, en horizontal los días del mes, y en la intersección de ambos indicar con un SI o un NO si ese día el usuario en concreto ha insertado registros.

En estos momento consigo generar la tabla con usuarios y días, pero en la intersección siempre obtengo el 'NO'
Código PHP:
<?php
    
$usuario 
= new usuario();
$cons $usuario->ObtenerConsultores();
        
    foreach(
$cons as $consultores) {
$consultor_no_report $consultores['Ident_consultor'];

$query2="Select calendario_dias.dia AS dia, consultores.consultor AS consultor from calendario_dias, consultores WHERE calendario_dias.mes = '$mes' AND dia NOT IN (SELECT DISTINCT trabajos.dia AS dias_report FROM trabajos INNER JOIN consultores ON trabajos.consultores_Ident_consultor = consultores.Ident_consultor WHERE mes = '$mes' AND ano = '$anos' AND (consultores.Ident_consultor) = '$consultor_no_report')AND (consultores.Ident_consultor) = '$consultor_no_report' AND (consultores.esconsultor) = '1' AND (consultores.reporte_habitual) = '1' AND ((consultores.f_fin)='' OR (consultores.f_fin) = '0000-00-00');";
echo 
$query2;

    
$consulta = new Consulta($query2);
   
    
$array=array();
    while(
$row_tabla $consulta->obtener_fila()) {//montar un array con el consultor como key
        
if(!array_key_exists($row_tabla['consultor'], $array)){
            
$array3[$row_tabla['consultor']]=array();
        }
        if(!
array_key_exists($row_tabla['dia'], $array)){ //dentro de cada array otro array con el mes como key
            
$array2[$row_tabla['consultor']][$row_tabla['dia']]=0;
        }}

    
$cuenta_tareas=array();//array para guardar dias
    
$salida=''//salida
    
foreach($array2 as $k=>$v){//crear cabecera de dias
        
foreach($v as $clave=>$valor){
            if(!
in_array($clave,$cuenta_tareas)){//si no ha salido
                
$cuenta_tareas[]=$clave;//la guardamos en el array y la mostramos
                
$salida.="<th>".$clave."</th>";
            }
        }
    }
    
$salida.='</tr><tr>';//cerrar cabecera


$query3="SELECT DISTINCT trabajos.dia AS dia FROM trabajos INNER JOIN consultores ON trabajos.consultores_Ident_consultor = consultores.Ident_consultor WHERE mes = '$mes' AND ano = '$anos' AND (consultores.Ident_consultor) = '$consultor_no_report';";
    
$consulta = new Consulta($query3);
    
$array4=array();
    while(
$row_tabla $consulta->obtener_fila()) {//montar un array con el consultor como key
            
$array4[]=($row_tabla['dia']+0);
    }
    foreach(
$array3 as $k=>$v){
$salida.="<tr>";
        
$salida.= "<td>"$k."</td>";//muestra el consultor

            
for($i=0;$i<count($cuenta_tareas);$i++){//recorre el array de cabeceras
        
        
                
if(in_array($cuenta_tareas[$i],$array4)){//si existe en la posicion actual mostramos el resultado
            
                        
$salida.="<td>SI</td>";
                    }else{
//si no existe ponemos celda vacía
                        
$salida.="<td>NO</td>";
        }
$salida.="</tr>";
    echo 
$salida;
    
?>
    </tr>
Muchas gracias y saludos