PHP - Convertir ciclo for en un array

 
Vista:

Convertir ciclo for en un array

Publicado por Esteban (13 intervenciones) el 02/09/2019 05:06:20
Hola!
Tengo un ciclo for con el que imprimo las fechas que hay en medio de las variables "$fecha1" y "$fecha2".
lo que quiero hacer es guardar esas fechas en una base de datos MySql. Pero realmente no logro hacerlo.

Al citar la variable "$i" fuera del ciclo, solamente me aparece la ultima fecha "30-08-2019".
Pensé en hacer la inserción de datos dentro del mismo ciclo ( INSERT INTO $tabla (fechas_intermedias) VALUES ('$i')), pero el programa se queda cargando por un buen tiempo y al final no inserta nada en la BD.

Pensé que podría ser debido a la longitud del dato. así que decidí imprimir la variable de la siguiente forma

echo $i[0]."<br>" ;

Esperando que el resultado fuera la primera fecha (y así saber que indice tenia cada fecha). Pero el resultado de la impresión fue el siguiente:

2
2
2
2
2
2
etc

De paso me di cuenta de que ni siquiera usando "explode()" iba a conseguir lo que quiero; que es obtener esas fechas por separado para poder insertarlas en la BD.


Les dejo mi código por si me pueden dar una mano. De antemano muchas gracias!


$fecha1 = 20-08-2019

$fecha1 = 30-08-2019

for($i=$fecha1;$i<=$fecha2;$i = date("d-m-Y", strtotime($i ."+ 1 days")))
{

echo $i;

}
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 joel
Val: 2.481
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Convertir ciclo for en un array

Publicado por joel (747 intervenciones) el 02/09/2019 10:03:38
Hola Esteban, veo varias cosas...

Primeramente, tienes que poner la fecha en formato ingles... 2019-08-30 y para recorrerlo correctamente, tienes que utilizar DateTime... aquí te he dejado un ejemplo sencillo de como hacerlo:
https://www.lawebdelprogramador.com/codigo/PHP/5508-Mostrar-todos-los-dias-entre-dos-fechas-en-PHP.html
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 Mauro
Val: 1.299
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Convertir ciclo for en un array

Publicado por Mauro (476 intervenciones) el 02/09/2019 15:39:15
Te recomiendo que utilices las clase de la librería DateTime.

Particularmente puedes usar DatePeriod te hará más fácil el trabajo.

Respecto de esto que comentas:

Pensé en hacer la inserción de datos dentro del mismo ciclo ( INSERT INTO $tabla (fechas_intermedias) VALUES ('$i')), pero el programa se queda cargando por un buen tiempo y al final no inserta nada en la BD.


Probablemente te ayude imprimir en pantalla el SQL resultante de evaluar las variables y probarlo directamente contra el MySQL, al menos para ver qué error obtienes.
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

Convertir ciclo for en un array

Publicado por Esteban (13 intervenciones) el 02/09/2019 18:41:34
Hola Joel y Mauro, gracias por sus comentarios.
Ya he logrado que se inserten las fechas en la tabla, finalmente deje el codigo INSERT INTO... dentro del bucle y funciono.
Sin embargo se hace una inserción por cada fecha intermedia.
Asi:

...........usuario...................fecha1.................intermedios...........fecha_2

usuario@hotmail.com.....2019-08-20...........2019-08-21........30-08-2019

usuario@hotmail.com......2019-08-20..........2019-08-22........30-08-2019

usuario@hotmail.com......2019-08-20..........2019-08-23........30-08-2019



Supongo que es por el bucle for.
Lo que quiero es que todas las fechas intermedias queden guardadas en un mismo campo.
Asi:


...........usuario...................fecha1...............................intermedios...............................fecha_2

usuario@hotmail.com.....2019-08-20...........2019-08-21 2019-08-22 2019-08-23 etc ........30-08-2019



Gracias por sus comentarios. Estaré atento por si pueden seguir ayudándome




Mi código esta de la siguiente manera:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
$fecha1 = "2019-08-20";
$fecha2 = "2019-08-30";
 
 
 
for($i=$fecha1;$i<=$fecha2;$i = date("Y-m-d", strtotime($i ." + 1 days"))){
 
    include("abrir_conexion_2.php");
 
    $insercion = mysqli_query($conexion2, "INSERT INTO luis_florez_vargas_33 (usuario,fecha1,intermedios,fecha2) values ('usuario@hotmail.com','$fecha1','$i','$fecha2')");
 
    echo $i;
 
}
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