Ver Mensaje Individual
  #13 (permalink)  
Antiguo 21/11/2013, 09:51
Avatar de mortiprogramador
mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problemas con arrays

<saludos>
Bueno, pues te cuento, ya monté toda la bd,
y copie de nuevo el código inicial del post,
pero al parecer tiene problemas, inicialmente
de cierre de for y foreach al final, pero al
arreglar estos ahora da otras novedades

Así que por ahora lo que hice a nivel de código fue reemplazar la clase de usuario (que no la tengo) y la de consulta por conexiones directas
por un array con los Ident_consultor que me enviaste en la tabla de usuarios (66,67,68,69)
Las variables $mes = 11 y $ano = 2013

Así el asunto, al recorrer $query2 para cada uno de estos, ninguno trae registros
Luego en el while encontré que lo cierras pero no lo abres, en cuyo caso agregué la llave de inicio,
sin embargo pues al no haber datos, en ningún momento entra al while y por ende hasta este punto $array2 y $array3 no tienen valor

Luego viene el foreach de $array2, pero como en este caso no tiene valores, al intentar hacer el foreach, se va a totear,
por esto puse un if antes donde pregunto si $array2 tiene sizeof, y si es así, que en este caso si entre

Paso siguiente es $query3, que también se hace por cada consultor (por ende todo esto va en el foreach inicial),
pero igualmente trae 0 registros, y por ende el while de $row_tabla no se va a ejecutar

Finalmente, tenemos el foreach de $array3, pero como este array tampoco obtiene valor al recorrer $query2, por ende
al tratar de recorrerlo va a dar error, por ende agregué if para el sizeof, y pues por ende
se concluye que con la data que me enviaste no hay datos de ningún tipo que coincidan con alguno de los querys

Entonces pues por ahora te comparto las mejoras que hice a nivel de código, obviamente tienes que acoplarlas a lo tuyo porque
como verás yo hice reemplazos en secciones para los temas de conexión a bd y eso, y a nivel visual de los querys e identación

Prueba sin embargo con esto en tu ambiente pues tal vez ya con toda la data que tienes,
el tema se comporte mejor

Código PHP:
Ver original
  1. <?php
  2.  
  3.     // $usuario = new usuario();
  4.     // $cons = $usuario->ObtenerConsultores();
  5.     $cons = array(
  6.     array('Ident_consultor'=>'66'),
  7.     array('Ident_consultor'=>'67'),
  8.     array('Ident_consultor'=>'68'),
  9.     array('Ident_consultor'=>'69')
  10.     );
  11.        
  12.     $conn = mysql_connect('localhost','root','Mtiqsecofr06');
  13.     mysql_select_db('test');
  14.     $mes = 11;
  15.     $anos = 2013;
  16.    
  17.     foreach($cons as $consultores)
  18.     {
  19.         $consultor_no_report = $consultores['Ident_consultor'];
  20.         $query2="SELECT calendario_dias.dia AS dia, consultores.consultor AS consultor
  21.                FROM calendario_dias, consultores
  22.                WHERE calendario_dias.mes = '$mes'
  23.                AND dia NOT IN
  24.                    (
  25.                        SELECT DISTINCT trabajos.dia AS dias_report
  26.                        FROM trabajos INNER JOIN consultores ON trabajos.consultores_Ident_consultor = consultores.Ident_consultor
  27.                        WHERE mes = '$mes' AND ano = '$anos' AND (consultores.Ident_consultor) = '$consultor_no_report'
  28.                    )
  29.                AND (consultores.Ident_consultor) = '$consultor_no_report'
  30.                AND (consultores.esconsultor) = '1'
  31.                AND (consultores.reporte_habitual) = '1'
  32.                AND ((consultores.f_fin)=''
  33.                OR (consultores.f_fin) = '0000-00-00')
  34.                ;";
  35.                
  36.         // echo $query2;
  37.         $rs = mysql_query($query2);
  38.         // echo 'registros '.mysql_num_rows($rs);
  39.  
  40.  
  41.         // $consulta = new Consulta($query2);
  42.        
  43.         $array=array();
  44.         // while($row_tabla = $consulta->obtener_fila()) {//montar un array con el consultor como key
  45.         while( $row_tabla = mysql_fetch_array($rs) )
  46.         {
  47.             if(!array_key_exists($row_tabla['consultor'], $array)){
  48.                 $array3[$row_tabla['consultor']]=array();
  49.             }
  50.             if(!array_key_exists($row_tabla['dia'], $array)){ //dentro de cada array otro array con el mes como key
  51.                 $array2[$row_tabla['consultor']][$row_tabla['dia']]=0;
  52.             }
  53.         }        
  54.    
  55.    
  56.  
  57.         $cuenta_tareas=array();//array para guardar dias
  58.         $salida=''; //salida
  59.         if( sizeof($array2) )
  60.         {
  61.             foreach($array2 as $k=>$v){//crear cabecera de dias
  62.                 foreach($v as $clave=>$valor){
  63.                     if(!in_array($clave,$cuenta_tareas)){//si no ha salido
  64.                         $cuenta_tareas[]=$clave;//la guardamos en el array y la mostramos
  65.                         $salida.="<th>".$clave."</th>";
  66.                     }
  67.                 }
  68.             }
  69.         }
  70.         $salida.='</tr><tr>';//cerrar cabecera
  71.  
  72.  
  73.         $query3="SELECT DISTINCT trabajos.dia AS dia
  74.                FROM trabajos
  75.                INNER JOIN consultores ON trabajos.consultores_Ident_consultor = consultores.Ident_consultor
  76.                WHERE mes = '$mes'
  77.                AND ano = '$anos'
  78.                AND (consultores.Ident_consultor) = '$consultor_no_report'
  79.                ;";
  80.         // $consulta = new Consulta($query3);
  81.         $rs = mysql_query($query2);
  82.         // echo 'registros '.mysql_num_rows($rs);
  83.        
  84.        
  85.         $array4=array();
  86.         // while($row_tabla = $consulta->obtener_fila()) {//montar un array con el consultor como key
  87.         while($row_tabla = mysql_fetch_array($rs)) {//montar un array con el consultor como key
  88.                 $array4[]=($row_tabla['dia']+0);
  89.         }
  90.    
  91.         if( sizeof($array3) )
  92.         {
  93.             foreach($array3 as $k=>$v){
  94.                 $salida.="<tr>";
  95.                 $salida.= "<td>". $k."</td>";//muestra el consultor
  96.  
  97.                 for($i=0;$i<count($cuenta_tareas);$i++){//recorre el array de cabeceras
  98.                     if(in_array($cuenta_tareas[$i],$array4))//si existe en la posicion actual mostramos el resultado
  99.                         $salida.="<td>SI</td>";
  100.                     else //si no existe ponemos celda vacía
  101.                         $salida.="<td>NO</td>";
  102.                 }
  103.                            
  104.                 $salida.="</tr>";
  105.                 echo $salida;
  106.             }
  107.         }
  108.     }
  109.     ?>
  110.     </tr>

</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com