PHP - Problemas con array y foreach

 
Vista:
sin imagen de perfil

Problemas con array y foreach

Publicado por abaddon (2 intervenciones) el 10/05/2017 07:03:34
Buenas noches, tengo un problema con mi código.
La función que debe cumplir el siguiente código es obtener "fechas" desde una BD, después de esto debe ir una por una comparándolas con la fecha actual para ver si se cumple el plazo de un año y arrojar una alerta en caso de que la condición se cumpla.

Hasta el momento tengo lo siguiente:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php require_once('../../../Connections/conex_banana.php'); ?>
 
<?php
 
session_start();
$id_cliente=$_SESSION['MM_Username'];
mysql_select_db($database_conex_banana, $conex_banana);
$alerta_query=sprintf("SELECT fecha_ate FROM atencion_adr WHERE id_cliente=$id_cliente");
$alerta = mysql_query($alerta_query, $conex_banana) or die(mysql_error());
 
 
 
	if ($row = mysql_fetch_array($alerta))
	{
	    $datos = array();
   		do {
      		     $fila = $row['fecha_ate'];
		     $datos[] = array($fila);
		     }
		     while ($row = mysql_fetch_array($alerta));
 
 
 
	$longitud = count($datos);
	echo $longitud;                       //esto solo lo hago para comprobar en pantalla que el array
	echo "<br />";                        //viene con "fechas"
 
 
		foreach ($datos as  $value)
		{
 
			for($i=0; $i<$longitud; $i++)           //esto solo lo hago para saber que valores trae
			echo $value[$i];				//no es importante
			echo "<br />";
 
 
 
 
 
//  Aqui "creo" que esta el problema, como este for esta dentro del foreach
// que se repite cuantas veces datos haya, el proceso que se supone que 
//se tiene que hacer una vez, se repite según valores traiga "$datos",
// y la idea es que la comparación de fechas solo se realice 1 vez por dato.
//Además solo conozco la opción foreach para obtener los datos del arreglo, ya que si pongo el código fuera 
// del foreach por ejemplo: "echo $datos[0];" esto me arroja el valor "Array", pero si lo hago dentro del 
// foreach por ejemplo: "echo value[0];" esto me arroja el resultado 2017-05-10 que sería lo correcto(ejemplo).
 
 
			for($i=0; $i<$longitud; $i++)
 
 
                         {
				$fecha_db = $value[$i];
				$timeActual= time();
				$ahora=strtotime($timeActual);
				$fecha_atencion= strtotime($fecha_db);
				$segundos_year = 365 * 24* 60* 60;
 
				if($fecha_atencion-$ahora >= $segundos_year)
 
                         	{ ?>
		  			<script type="text/javascript">
          					alert("La atencion esta caducada");
          				</script>
	  			<?php }else { ?>
		   			<script type="text/javascript">
          					alert("no hay atenciones proximas a caducar");
          				</script>
		  		<?php }
	  			 }
 
			   }
 
	}else
 	{
		echo "¡ No se ha encontrado fechas próximas !";
	}
?>


Espero entiendan el problema, el código de la parte de comparación de fechas está funcionando perfecto, el drama esta en las veces que se ejecuta el código dentro del foreach y que si saco el código del foreach obtengo los resultados "Array" y nos las fechas que necesito comparar.

De antemano muchas gracias.
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
sin imagen de perfil
Val: 191
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problemas con array y foreach

Publicado por Brayan (76 intervenciones) el 11/05/2017 16:24:58
Porq no usas datediff?

Con eso harias mucho mas facil la comparacion.
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

Problemas con array y foreach

Publicado por abaddon (2 intervenciones) el 12/05/2017 22:42:15
Gracias por el consejo, lo tendre en cuenta.
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