
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:
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.
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


0