Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/07/2012, 13:36
Avatar de exitoso23487
exitoso23487
 
Fecha de Ingreso: enero-2009
Mensajes: 49
Antigüedad: 15 años, 3 meses
Puntos: 8
Respuesta: Contar cantidad de dias lunes, martes, etc... de un mes

Código PHP:
//$mes y $year son datos, de acuerdo a tu planteamiento
$fecha_ini=$year."-".$mes."-01";
$fecha_fin=$year."-".$mes."-".$date("t",strtotime($fecha_ini));

function 
dia_con_cero($dia){//función que retorna el dia en formato de doble dígito cuando sea necesario y recibe como parámetro el dia en formato de 2 dígitos
    
if($dia<10){
        
$dia="0".$dia;
    }
    return 
$dia;
}
function 
dia_sin_cero($dia){//función que retorna el dia en formato de un dígito cuando sea necesario y recibe como parámetro el dia en formato de 2 dígitos
    
$v=str_split($dia);
    if(
$v[0]==0){
        return 
$v[1];
    }
    else{
        return 
$dia;
    }
}

function 
compara_fechas($date1,$date2){//función para verificar si la fecha1 es mayor que la fecha2
    
$aux1=strtotime($date1);//convertimos la fecha a formato 
    
$aux2=strtotime($date2);//convertimos la fecha a formato
    
$resp=0;
    if(
$aux1>$aux2){//si la fecha1 es mayor que la fecha2
        
$resp=1;
    }
    else{
        
$resp=0;
    }
    return 
$resp;
}

function 
dia_siguiente($date){//funcion que dada una fecha en formato "yyyy-mm-dd" devuelve el dia siguiente de la fecha en formato "yyyy-mm-dd"
    
$aux=explode("-",$date);
    
$dia=dia_sin_cero($aux[2]);
    
$mes=dia_sin_cero($aux[1]);
    if(
$dia==date("t",strtotime($date))){//si es el último día del mes
        
$day=1;
        
$day=dia_con_cero($day);
        if(
$mes==12){//en caso que el mes sea diciembre
            
$mes=1;
            
$mes=dia_con_cero($mes);
            
$year=$aux[0]+1;
        }
        else{
//en caso que el mes sea diferente a diciembre
            
$mes=$mes+1;
            
$mes=dia_con_cero($mes);
            
$year=$aux[0];        
        }
        
$fecha=$year."-".$mes."-".$day;
    }    
    else{
//en caso de ser cualquier dia diferente al último del mes
        
$day=$dia+1;
        
$day=dia_con_cero($day);
        
$fecha=$aux[0]."-".$aux[1]."-".$day;
    }
    return 
$fecha;
}
//las 4 funciones mencionadas serían necesarias para el recorrido de lo que se quiere preguntar, se pueden codificar en otro archivo por separado e incluirlo 

//ahora si el ciclo para recorrer el rango de fecha
$band=0;
$cont=0;
while(
$band==0){
     
//a continuacion se realiza todo el proceso que se requiera durante los dias del mes, por los momento solo me remito a la pregunta puntual
     
if(date("N",strtotime($fecha_ini))<6){
          
$cont++;
     }
     
$fecha_ini=dia_siguiente($fecha_ini);//aumentamos la fecha en un dia
     
$band=compara_fechas($fecha_ini,$fecha_fin);//preguntamos si ya pasamos el fin de mes o el final del rango de fecha

Espero que te ayude en algo, para hacerlo más completo supongo que incluirás la data de asistencia, la data de días feriados y ausencias justificadas.