
21/11/2013, 09:51
|
 | Colaborador | | Fecha de Ingreso: septiembre-2009 Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 6 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<?php // $usuario = new usuario(); // $cons = $usuario->ObtenerConsultores(); array('Ident_consultor'=>'66'), array('Ident_consultor'=>'67'), array('Ident_consultor'=>'68'), array('Ident_consultor'=>'69') ); $mes = 11; $anos = 2013; 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; // echo 'registros '.mysql_num_rows($rs); // $consulta = new Consulta($query2); // while($row_tabla = $consulta->obtener_fila()) {//montar un array con el consultor como key { $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); // echo 'registros '.mysql_num_rows($rs); // while($row_tabla = $consulta->obtener_fila()) {//montar un array con el consultor como key while($row_tabla = mysql_fetch_array($rs)) {//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>
</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 |