Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/09/2012, 06:48
portela85
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años, 10 meses
Puntos: 3
Problemas foreach

Buenas tardes,

tengo un problemilla que no consigo resolver y a ver si alguien está más inspirado que yo en estos momentos. Necesito que a partir de un mes/año que seleccionamos, me saque un listado de usuarios con los días en concreto que no han accedido a la aplicación en ese mes.

Con esta primera función, obtengo un listado de los consultores y lo guardo en un array.

Código:
 public function ObtenerConsultores(){
    
   	$query = "Select consultores.Ident_consultor FROM consultores WHERE ((consultores.f_fin != '' OR consultores.f_fin != '0000-00-00') AND consultores.esconsultor = '1');";
	$consulta = new Consulta($query);
	echo $query;
	while($fila = $consulta->obtener_fila()) {
		$consultores[] = array(
				'Ident_consultor'	=> 	$fila['Ident_consultor']);
	}
		
	return $consultores;
    echo $consultores;

 }
Con esta segunda función, quiero que por cada usuario (consultor), me saque los días que no han accedido a la herramienta.
Código:
    public function ConsultoresNoReportados($mes, $ano){
 

$user = new usuario();

$cons= $user->ObtenerConsultores();

    foreach($cons as $consultores) {
	
$consultor_no_report = $consultores['Ident_consultor'];

	$query="Select calendario_dias.dia AS dia from calendario_dias WHERE calendario_dias.mes = '$mes' AND dia NOT IN (SELECT DISTINCT trabajos.dia FROM trabajos INNER JOIN consultores ON trabajos.consultores_Ident_consultor = consultores.Ident_consultor WHERE mes = '$mes' AND ano = '$ano' AND consultores.Ident_consultor = '$consultor_no_report');";
	echo $query;
	$consulta = new Consulta($query2);
	
	while($fila = $consulta->obtener_fila()) {
		$consultores_no_report[] = array(
				'consultor'	=> 	$fila['consultor'],               		 
				'dia' 			=>	$fila['dia']);
	}
	
    }
    
    return $consultores_no_report;
    
    if(!$consulta) 
	    throw new Exception("Al parecer han reportado todos.");

    }
El problema es que me ejecuta la consulta una sóla vez, para el primer consultor que obtiene de la lista.

Este es el código que llama a la función.

Código:
        case 'verinforme':
		$tpl_cabecera->set('subnivel',' > Consultores que aún no han reportado');

		if ((isset($_SESSION['mess'])) && (isset($_SESSION['ano']))){
        
			try{
			    
		$tpl->set('resultado_informe', usuario::ConsultoresNoReportados($_SESSION['mess'],$_SESSION['ano']));
		

			} catch (Exception $e) {
                            $tpl->set('error_msg',$e->getMessage());  
                }	}
		
		else{
			try{
		$tpl->set('resultado_informe', usuario::ConsultoresNoReportados($_POST['mess'],$_POST['ano']));
		

		$_SESSION['mess'] = $_POST['mess'];
		$_SESSION['fechafin'] = $_POST['ano'];
		
			} catch (Exception $e) {
                            $tpl->set('error_msg',$e->getMessage());  
                }			
		}
		$tpl->set('accion','reportarinforme');
		$tpl_cuerpo = 'consultores_no_reportado_ver.tpl.php';
        break;
Y aqui se muestran los datos

Código:
<?php 
<table>
if (isset($resultado_informe) && count($resultado_informe)>0) {
    $i=1;
    foreach($resultado_informe as $resultado) {
?>



<tr>
    <td><?=$resultado['consultor'];?></td>
    <td><?=$resultado['dia'];?></td>
</tr>

<?php
    }}
</table>