Foros del Web » Programando para Internet » PHP »

dias trabajados apartir de una fecha y numero de semanas

Estas en el tema de dias trabajados apartir de una fecha y numero de semanas en el foro de PHP en Foros del Web. Hola amigos antes q nada les digo q gracias a todos ustedes este foro me ha sacado de muchas dudas y aparte d q he ...
  #1 (permalink)  
Antiguo 05/10/2010, 21:08
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
dias trabajados apartir de una fecha y numero de semanas

Hola amigos antes q nada les digo q gracias a todos ustedes este foro me ha sacado de muchas dudas y aparte d q he aprendido demaciado de ustedes.

Pues bien vamos al grano. Tengo el siguiente problema:

tengo una tabla de proyectos en la cual almaceno la fecha de inicio del proyecto y el total d semanas que durara el proyecto. El problema es el siguiente: como puedo sacar los dias apartir del total del numero de semanas sin contar sabado ni domingo.

Es decir si mi fecha inicial es el 10-11-2010 y el total de semanas es 2. Tengo que sacar los dias de las dos semanas ejemplo:

Fecha: 10-11-2010

Semana 1 : Dias semana
11-11-2010 Lunes
12-11-2010 Martes
13-11-2010 Miercoles
14-11-2010 Jueves
15-11-2010 Viernes

Espero haberme explicado

Última edición por zerokull; 05/10/2010 a las 21:26
  #2 (permalink)  
Antiguo 06/10/2010, 07:26
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: dias trabajados apartir de una fecha y numero de semanas

Cita:
Iniciado por zerokull
he aprendido demaciado de ustedes
¿Puedes mostrar lo que has hecho hasta el momento?
  #3 (permalink)  
Antiguo 06/10/2010, 19:25
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

lo que he lo grado hacer es lo siguiente
Código PHP:
Ver original
  1. echo "Fecha inicial: ".$fecha_inicial=DDMMAAAA($row['fechainicio'])."<br>";
  2. echo "Numero de dias: ".$dias=($row['numerosemanas']*7)."<br>";
  3. for($i=0;$i<=$dias-1;$i++){
  4.     $dia=AAAAMMDD(suma_fechas($fecha_inicial, $i))."<br>";
  5.     $arreglo[$i]=$dia;
  6. }
  7. for($j=0;$j<=$dias;$j++){
  8.     echo ($arreglo[$j] . "<Br>") ;
  9. }
  10. echo $arreglo[0]."<br>";
  11. echo $arreglo[6];

ahora lo que necesito es acceder al arreglo dinamicamente es decir separar el arreglo dependiendo de cuantos sean es decir si hay 14 dias tengo que acceder al los siguientes arreglos
Código PHP:
Ver original
  1. echo $arreglo[0];
  2. echo $arreglo[6];
  3. echo $arreglo[7];
  4. echo $arreglo[13];

para indicar que son dos semanas espero que la idea quede mas clara y me puedan ayudar gracias.
  #4 (permalink)  
Antiguo 06/10/2010, 19:40
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: dias trabajados apartir de una fecha y numero de semanas

Hola
para empezar no sería mejor guardar la fecha de fín??
es decir, se acaba la otra semana, pero cuando???

así el asunto, yo usaría estas dos fechas para hacer
un for para mostrar las fechas y luego voy revisando
que el dia de esa fecha no sea sabado, ni domingo (usando las
funciones de date que sirven para eso) y si son los
otros días que los imprima, sino que no lo haga

ahora, faltaría pensar en los festivos imagino,
en cuyo caso manejaria los festivos en un array
y comparo cada fecha contra ese array, y si se
encuentra coincidencia pues no lo muestro (a menos que
vayan a pagar super extra por el festivo)

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
  #5 (permalink)  
Antiguo 06/10/2010, 19:58
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: dias trabajados apartir de una fecha y numero de semanas

Recuerda que tienes que convertir tu fecha actual en segundos y además recuerda también que los segundos comienzan desde el 01/01/1970.

Por lo tanto tu fecha ejemplo 10-11-2010 es :1289363400 usando mktime

ahora bien cada día tiene 84600 segundos y cada semana de 7 días tiene 604800 sengundos

eso quiere decir que si tu tiempo es de 8 semanas sería :4838400 segundos y si e eso le sumas los de tu fecha de inicio te debe dar 1289363400 segundos

Y por ahí te vas.... saludos
  #6 (permalink)  
Antiguo 06/10/2010, 20:12
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

creo q no me di a entener lo que realmente nesecito es separar mi arreglo ejemplo: el siguiente arrelo me trae todas las fechas desde la inicial hasta la ultima:
Fecha inicial: 10-11-2010
Numero de dias: 14

Código HTML:
Ver original
  1. <!-- FECHA CON 14 DIAS EMPESANDO DESDE LA INICIAL (SUMO EL TOTAL DE DIAS)
  2. 2010-11-10
  3.  
  4. 2010-11-11
  5.  
  6. 2010-11-12
  7.  
  8. 2010-11-13
  9.  
  10. 2010-11-14
  11.  
  12. 2010-11-15
  13.  
  14. 2010-11-16
  15.  
  16. 2010-11-17
  17.  
  18. 2010-11-18
  19.  
  20. 2010-11-19
  21.  
  22. 2010-11-20
  23.  
  24. 2010-11-21
  25.  
  26. 2010-11-22
  27.  
  28. 2010-11-23
Código PHP:
Ver original
  1. echo ($arreglo[$j] . "<Br>") ;

y yo deseo separar ese arreglo cada 7 fechas para saber que es una semana gracias y encuanto a los minutos no me preocupo puesto estoy usando una funcion que me suma los dias y eso lo hace el siguiente codigo php
Código PHP:
Ver original
  1. function restaFechas($dFecIni, $dFecFin){
  2.     $dFecIni = str_replace("-","",$dFecIni);
  3.     $dFecIni = str_replace("/","",$dFecIni);
  4.     $dFecFin = str_replace("-","",$dFecFin);
  5.     $dFecFin = str_replace("/","",$dFecFin);
  6.    
  7.     ereg( "([0-9]{1,2})([0-9]{1,2})([0-9]{2,4})", $dFecIni, $aFecIni);
  8.     ereg( "([0-9]{1,2})([0-9]{1,2})([0-9]{2,4})", $dFecFin, $aFecFin);
  9.    
  10.     $date1 = mktime(0,0,0,$aFecIni[2], $aFecIni[1], $aFecIni[3]);
  11.     $date2 = mktime(0,0,0,$aFecFin[2], $aFecFin[1], $aFecFin[3]);
  12.  
  13.     return round(($date2 - $date1) / (60 * 60 * 24));
  14. }
  #7 (permalink)  
Antiguo 06/10/2010, 20:17
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: dias trabajados apartir de una fecha y numero de semanas

has un condicional si $j es multiplo de 7 marcas ese indice o lo que kieras hacer no es mas sencillo? en tu caso $j+1 para estar mas seguro que es el dia que va o no te sirve asi??
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #8 (permalink)  
Antiguo 06/10/2010, 20:36
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

yo creo que si pero tambien me puede servir para sacar los indices de cada semana ejemplo:
//indices de la primera semana
$arreglo[0];
$arreglo[6];

//indices de la segunda semana
$arreglo[7];
$arreglo[13];

??????????????
  #9 (permalink)  
Antiguo 06/10/2010, 20:43
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: dias trabajados apartir de una fecha y numero de semanas

es que eso es lo que estas haciendo xq si es como lo entendi que noc si entendi bien cada vez que hagas la consulta quietes saber cuantas semanas tienes o no?? siempre la semana 1 va a ser 0-6 la dos 7-13 y asi hasta que termine la fecha que tu estas trayendo entonces creo que con ver si es multiplo se soluciona o no????
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #10 (permalink)  
Antiguo 06/10/2010, 20:45
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

ok gracias
lo probare muchas gracias si tego dudas volvere a comentar en este tema
  #11 (permalink)  
Antiguo 06/10/2010, 20:58
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

Hola para saber si es multiplo use la funcion
Código PHP:
Ver original
  1. fmode
ahora la pregunta es como lo compara seria algo asi:
Código PHP:
Ver original
  1. echo $r = fmod($x, $dias);//donde $x=7 y $dias=14
  2. if($r==7)
y despues que hago pongo mi ciclo for ??
  #12 (permalink)  
Antiguo 06/10/2010, 21:44
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

Listo ya lo solucione pongo todo el codigo para quen lo necesite saludos y gracias "carlos_belisario" por la ayuda

ahora el codigo:
Código PHP:
Ver original
  1. echo "Fecha inicial: ".$fecha_inicial=DDMMAAAA($row['fechainicio'])."<br>";
  2. echo "Numero de dias: ".$dias=($row['numerosemanas']*7)."<br>";
  3. for($i=0;$i<=$dias-1;$i++){
  4.     $dia=AAAAMMDD(suma_fechas($fecha_inicial, $i))."<br>";
  5.     $arreglo[$i]=$dia;
  6. }
  7. for($j=0;$j<=$dias-1;$j++){
  8.      $multiplo=$j &#37; 7;
  9.      if ($multiplo==0 || $multiplo==6)
  10.          echo "arreglo[$j]= ".($arreglo[$j] . "<Br>") ;
  11. }

espero que a alguien le sirva
  #13 (permalink)  
Antiguo 06/10/2010, 22:12
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

Ahora como paso el valor del arreglo a mi consulta la cual es la siguiente:
Código MySQL:
Ver original
  1. $sql="SELECT COUNT(*) AS total
  2.                FROM visitas,medicos,usuarios,proyectos
  3.                WHERE visitas.idusuarios=usuarios.idusuarios AND
  4.                visitas.idmedico=medicos.idmedico AND
  5.                visitas.idproyectos=proyectos.idproyectos AND
  6.                proyectos.ciudad='Quintana Roo' AND
  7.                visitas.fechavisita BETWEEN 'fecaha de arreglo' AND 'fecaha de arreglo'  AND
  8.                medicos.categorias='oro'";

Última edición por zerokull; 06/10/2010 a las 22:20
  #14 (permalink)  
Antiguo 07/10/2010, 16:05
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: dias trabajados apartir de una fecha y numero de semanas

Cita:
Iniciado por zerokull Ver Mensaje
alguna sugerencia por favor ayudaaaaaaaaaa
Código PHP:
$arreglo[0y arreglo[count($arreglo)]? 
__________________
"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
  #15 (permalink)  
Antiguo 10/10/2010, 21:00
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

Hola ya la pribe como me suguirio mortiprogramador pero no me trae nada
arreglo[count($arreglo)]?

alguna otra sugerencia
  #16 (permalink)  
Antiguo 10/10/2010, 21:05
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: dias trabajados apartir de una fecha y numero de semanas

puedes especificar cual es el problema cual es el valor que deseas pasar a la consulta?? xq lei pero me perdi
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #17 (permalink)  
Antiguo 10/10/2010, 21:10
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

el siguiente codigo me hace esto:
Código PHP:
Ver original
  1. echo "Fecha inicial: ".$fecha_inicial=DDMMAAAA($row['fechainicio'])."<br>";
  2. echo "Numero de dias: ".$dias=($row['numerosemanas']*7)."<br>";
  3. for($i=0;$i<=$dias-1;$i++){
  4.     $dia=AAAAMMDD(suma_fechas($fecha_inicial, $i));
  5.     $arreglo[$i]=$dia;
  6. }
  7.  
  8.  for($j=0;$j<=$dias-1;$j++){
  9.      $multiplo=($j &#37; 7)."<br>";
  10.      if ($multiplo==0 || $multiplo==6)
  11.          echo "arreglo[$j]=".$arreglo[$j]."<br>";        
  12.              
  13.  }
el resultado es:
Fecha inicial: 10-11-2010
Numero de dias: 21
arreglo[0]=2010-11-10
arreglo[6]=2010-11-16
arreglo[7]=2010-11-17
arreglo[13]=2010-11-23
arreglo[14]=2010-11-24
arreglo[20]=2010-11-30

ahora quisiera saber si el resultado optenido lo puedo meter en una consulta q es la siguiente:
Código MySQL:
Ver original
  1. $sql="SELECT COUNT(*) AS total
  2. FROM visitas,medicos,usuarios,proyectos
  3. WHERE visitas.idusuarios=usuarios.idusuarios AND
  4. visitas.idmedico=medicos.idmedico AND
  5. visitas.idproyectos=proyectos.idproyectos AND
  6. proyectos.ciudad='Quintana Roo' AND
  7. visitas.fechavisita BETWEEN '$arreglo[$j]' and '$arreglo[$j]'
  8. medicos.categorias='oro'"

lo que quiero que cambie son las fechas: visitas.fechavisita BETWEEN '$arreglo[$j]' and '$arreglo[$j]'
  #18 (permalink)  
Antiguo 10/10/2010, 21:20
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: dias trabajados apartir de una fecha y numero de semanas

vas a comparar semanal o como?? xq pudieras aca inventando hacer algo asi
Código PHP:
Ver original
  1. for($j=0;$j<=$dias-1;$j++){
  2.      $multiplo=($j &#37; 7)."<br>";
  3.     if ($multiplo==0 || $multiplo==6)
  4.          echo "arreglo[$j]=".$arreglo[$j]."<br>";        
  5.          $comparar[]=$arreglo[$j];            
  6.  }
  7. for($i=0;$i<count($comparar);$i++){
  8.     $sql="SELECT COUNT(*) AS total
  9. FROM visitas,medicos,usuarios,proyectos
  10. WHERE visitas.idusuarios=usuarios.idusuarios AND
  11. visitas.idmedico=medicos.idmedico AND
  12. visitas.idproyectos=proyectos.idproyectos AND
  13. proyectos.ciudad='Quintana Roo' AND
  14. visitas.fechavisita BETWEEN '$comparar[$i]' and '$arreglo[$i+1]'
  15. medicos.categorias='oro'";
  16. }
aca inventando y pensando que entendi bien el problema
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #19 (permalink)  
Antiguo 10/10/2010, 21:34
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

asi es el resultado que optenga deberia ser por semana .

Y ya probe lo que pasaste pero ahi lo hace por dia.

en teoria me deberia de aparecer asi la consulta:

SELECT COUNT(*) AS total FROM visitas,medicos,usuarios,proyectos WHERE visitas.idusuarios=usuarios.idusuarios AND visitas.idmedico=medicos.idmedico AND visitas.idproyectos=proyectos.idproyectos AND proyectos.ciudad='Quintana Roo' AND visitas.fechavisita BETWEEN '2010-11-10' AND 2010-11-16 AND medicos.categorias='oro'

y si son 3 semana entonses deben de ser 3 consultas lo unico que cambiaria serian las fechas
SELECT COUNT(*) AS total FROM visitas,medicos,usuarios,proyectos WHERE visitas.idusuarios=usuarios.idusuarios AND visitas.idmedico=medicos.idmedico AND visitas.idproyectos=proyectos.idproyectos AND proyectos.ciudad='Quintana Roo' AND visitas.fechavisita BETWEEN '2010-11-17' AND 2010-11-23 AND medicos.categorias='oro'

SELECT COUNT(*) AS total FROM visitas,medicos,usuarios,proyectos WHERE visitas.idusuarios=usuarios.idusuarios AND visitas.idmedico=medicos.idmedico AND visitas.idproyectos=proyectos.idproyectos AND proyectos.ciudad='Quintana Roo' AND visitas.fechavisita BETWEEN '2010-11-24' AND 2010-11-30 AND medicos.categorias='oro'

espero haberme explicado mejor

Última edición por zerokull; 10/10/2010 a las 21:40
  #20 (permalink)  
Antiguo 10/10/2010, 21:40
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: dias trabajados apartir de una fecha y numero de semanas

es que deberias de guardar en la variable $comparar[$i] son los dias que finalizas la semana es decir los que te da esto
Cita:
arreglo[0]=2010-11-10
arreglo[6]=2010-11-16
arreglo[7]=2010-11-17
arreglo[13]=2010-11-23
arreglo[14]=2010-11-24
arreglo[20]=2010-11-30
esos son los que deberian de quedar guardados en la variable que te indique que imagine que era lo que esta dentro del for y el condicional xq no se entiende ya que se crearon caracteres extraños
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #21 (permalink)  
Antiguo 10/10/2010, 21:49
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

Disculpa carlos_belisario pero no te entendi muy bien
  #22 (permalink)  
Antiguo 10/10/2010, 21:55
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: dias trabajados apartir de una fecha y numero de semanas

jajaj eso pasa mucho voy a ver si me explico mejor
la variable $comparar es un arreglo donde guardaras unicamente los dias que son principio de semana en tu db esto lo haces tu ya obteniendo el indice correspondiente ejemplo 0.-primer dia de la semana 6.-ultimo dia de la semana al tu tener ya esto establecido como dije antes lo guardas solo estos dias en la variable $comparar luego para hacer la consulta haces un bucle recorriendo esta variable que tiene los dias que son principio y fin de semana los cuales en tu ejemplo eran estos
Cita:
arreglo[0]=2010-11-10
arreglo[6]=2010-11-16
arreglo[7]=2010-11-17
arreglo[13]=2010-11-23
arreglo[14]=2010-11-24
arreglo[20]=2010-11-30
en si lo que te digo que hagas es que guardes los dias que me estas presentando arriba en la variable $compara para que puedas hacer el bucle recorriendolo en la consulta espero que ahora si me alla explicado bien
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #23 (permalink)  
Antiguo 10/10/2010, 22:05
Avatar de zerokull  
Fecha de Ingreso: noviembre-2009
Mensajes: 153
Antigüedad: 15 años
Puntos: 1
Respuesta: dias trabajados apartir de una fecha y numero de semanas

haber entonses lo que me pides es que guarade los dias tanto el inicio como el fin de la semana en la siguiente variable: $comparar[$i]
  #24 (permalink)  
Antiguo 10/10/2010, 22:10
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: dias trabajados apartir de una fecha y numero de semanas

exactamente ya al tener el inicio y el fin lo que te queda es hacer la consulta con un bucle sobre este arreglo, bueno eso es un invento que se me vino a la mente el que tiene que decidir si le sirve eres tu ya que eres kien esta confrontando el problema saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Etiquetas: dias, numero, semanas, fechas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:47.