PHP - comparar fechas de un array

 
Vista:
sin imagen de perfil

comparar fechas de un array

Publicado por Hugo (37 intervenciones) el 27/03/2022 06:42:41
Hola, buenas noches.

Tengo el siguiente problema si alguien me puede ayudar:

En mi base de datos tengo fechas correspondientes a feriados las cuales guardo en un array..

Lo que quiero es controlar que si la fecha del array menos la fecha "desde" ingresada por el usuario tiene un resto igual a 0, me cuente 1 y siga la comparación con la siguiente fecha feriada del array para luego guardarla en una variable y utilizarla más adelante en la ecuación de días.

Desde ya muchas gracias.

Pego el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
	date_default_timezone_set("America/Montevideo");
				if(isset($_POST['ingresar'])){
					$usuario=$_SESSION['usuario'];
					$num_func=$_POST['funcionario'];
					$nom=$_SESSION['nombre'];
					$ape=$_SESSION['apellido'];
					$jefe=$usuario.' - '.$nom.' '.$ape;
					$desde=$_POST['desde'];
					$hasta=$_POST['hasta'];
					$fecha1=new DateTime($_POST['desde']);
					$fecha2=new DateTime($_POST['hasta']);
					$control_fecha= $fecha1->diff($fecha2);
					$dia=intval('1');
					$control_fecha2=$control_fecha->days + $dia;
					$pendiente='Pendiente';
 
					//Datos del funcionario
					$reg=$_POST['funcionario'];
					$reg_cuatro="SELECT * FROM usuarios WHERE numFunc='$reg'";
					$query_reg=$conexion->query($reg_cuatro);
					$array_reg=$query_reg->fetch_assoc();
					$regimen=$array_reg['regimen'];
					$nom_func=$array_reg['nombre'];
					$ape_func=$array_reg['apellido'];
					$sec_func=$array_reg['seccion'];
 
					$feriados="SELECT feriados FROM feriados WHERE feriados>='$desde' && feriados<='$hasta' && tipo='No Laborable'";
					$query_feriados=mysqli_num_rows($conexion->query($feriados));
					$query_feriados2=$conexion->query($feriados);
					$array_feriados=$query_feriados2->fetch_assoc();
					$fer=$array_feriados['feriados'];
 
					$fecha_array=new DateTime($fer);
					$ver=$fecha_array->diff($fecha1);
					$ver2=$ver->days;
					$contar=0;
					for ($i=0; $i <$query_feriados; $i++) {
						if ($ver2[$i]%4==0) {
							$contar=$contar+1;
						}
 
					}
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

comparar fechas de un array

Publicado por javier (547 intervenciones) el 27/03/2022 09:19:17
hHola,

la resta de de fechas la tienes que hacer dentro del bucle for

La fecha de hoy menos la fecha que viene de la BBDD

ssaludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

comparar fechas de un array

Publicado por Hugo (37 intervenciones) el 27/03/2022 14:58:59
Hola, muchas gracias por tu respuesta.

Probé lo que me sugeriste pero sigue sin funcionar, todo el tiempo me devuelve 2.
Por ejemplo si ingreso fecha desde 21/12/2022 y fecha hasta 05/01/2023, la consulta a la BBDD debería traerme los feriados 25/12/2022 y 01/01/2023 y comparar si los feriados menos la fecha desde (21/12/2022) es múltiplo de 4 (por eso que el resto sea 0).
En función de eso quiero guardar en $contar los feriados que cumplan con esta condición, en este casos sería 1.
No me doy cuenta realmente qué es lo que tengo mal, pero debe ser algo en el bucle.

Te agradezco si me puedes ayudar a resolverlo, porque le doy vueltas y no encuentro la solución.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

comparar fechas de un array

Publicado por javier (547 intervenciones) el 27/03/2022 19:59:51
No me entiendes

que la diferencia de dias la calcules dentro del bucle, si la haces fuera siempre será la misma

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

comparar fechas de un array

Publicado por Hugo (37 intervenciones) el 27/03/2022 20:29:23
Tal vez no estoy entendiendo, lo que hice fue lo siguiente:

$contar=0;
for ($i=0; $i <$query_feriados; $i++) {
$fecha_array=new DateTime($fer);
$ver=$fecha_array->diff($fecha1);
$ver2=$ver->days;
if ($ver2[$i]%4==0) {
$contar=$contar+1;
}

}
Esto me está devolviendo 2, que es lo que te mencioné anteriormente.
Esto es lo que tú me dices?
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

comparar fechas de un array

Publicado por javier (547 intervenciones) el 27/03/2022 21:14:35
pero no te das cuenta que

1
$ver=$fecha_array->diff($fecha1);

$fecha_array y $fecha1 son sienmpre iguales?

como te hace el bucle? cuanto vale $query_feriados

seria mas bien

1
for ($i=0; $i <= count($query_feriados); $i++)

y $query_feriados será un arrray no?

tendrá algun indice como:



1
$query_feriados['fecha1']?????????????????

haz un
1
print_r($query_feriados)
y pega aqui el resultado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

comparar fechas de un array

Publicado por Hugo (37 intervenciones) el 28/03/2022 02:03:53
Pego el print:

resultado_print

En cuanto a lo que me preguntas, $fecha_array y $fecha1 no son siempre iguales.

$fecha_array contiene las fechas feriadas de la BBDD que estén comprendidas en el período "desde" y "hasta" ingresado por el usuario.
$fecha1, es la fecha "desde" que ingresa el usuario.

En este caso ingresé el período 21/12/2022 a 05/01/2023. En ese período hay 2 feriados que son 25/12/2022 y 01/01/2023, donde desde el primer feriado a la fecha desde (21/12/2022) hay 4 días, lo cual el resto es 0, pero desde el 01/01/2023 a la fecha desde hay 11 días, lo cual el resto es distinto de 0.

Lo que quiero es que me guarde en una variable cuántos feriados cumplen con la condición de que el resto sea 0, en este caso sería 1, sin embargo me devuelve 2 como muestra la imágen.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar