PHP - Update automatico de sql segun fecha

 
Vista:
sin imagen de perfil
Val: 53
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Update automatico de sql segun fecha

Publicado por alberto (21 intervenciones) el 20/12/2020 17:22:23
Buenas

estoy escribiendo este codigo, el cual tiene como idea, actualizar los registros que hay en la sql segun la fecha actual y la grabada en la sql

la idea es llamar a esta funcion cuando carga la web, la uso con datatables, asi que en el ajax, que llama al php para traerse los datos, la idea es introducir el codigo de abajo, para que actualice los registros cada vez que se cargue la pagina, pero el problema es que no me hace nada...

la $conexion si que funciona, porque la uso en otras partes del codigo y sin problemas, y el $conexion->Get_datetime(); tambien funciona, pero no se que estare haciendo mal.

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
<?php
 
//pruebas
 
include('vms.php');
 
$conexion = new vms();
 
 
$conexion->query = "
SELECT Fecha_caducidad, Validado FROM tickets
WHERE Fecha_caducidad < $hoy
";
 
$result = $conexion->get_result();
$hoy = $conexion->Get_datetime();
foreach($result as $row)
{
 
	if($row["Fecha_caducidad"] < $hoy)
		{
 
			if($row["Validado"] == 0)
				{
 
					$conexion->query = "
					UPDATE tickets
					SET	Validado = '2'
					WHERE Fecha_caducidad < $hoy
					";
 
					$conexion->execute();
 
 
				}
 
		}
 
}
 
?>

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

Update automatico de sql segun fecha

Publicado por joel (1269 intervenciones) el 20/12/2020 19:54:06
Hola Alberto, que valor tiene la variable $hoy en la linea 12?
Has comprobado si la conexión es correcta y la consulta sql devuelve algún registro?
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
Val: 53
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Update automatico de sql segun fecha

Publicado por Alberto (21 intervenciones) el 20/12/2020 22:03:32
Hola
La variable hoy contiene o debería contener la fecha de hoy en formato 20-12-2020 que es como están los registros guardados en la sql

La conexión si es correcta, en este ejemplo lo hice es un archivo de pruebas que uso cuando hago alguna función nueva, por no andar abriendo y cerrando llaves en el original ( que seguro me cargo algo jaja) y luego cuando me funciona, ya lo paso al original.
Y no, no me devuelve nada, ni errores en la consola, es muy raro
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
Val: 53
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Update automatico de sql segun fecha

Publicado por alberto (21 intervenciones) el 20/12/2020 22:35:54
puse un:

1
echo "<script>console.log('Debug Objects: " . $hoy . "' );</script>";

y efectivamente en la consola me sale la fecha de hoy.

tambien eh modido la declaracion de la variable hoy, a la linea 9 ya que la estaba declarando mas abajo y obviamente estaria vacia, pero ni aun asi.

tambien eh activado los errores

1
2
3
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

y me sale esto.

1
2
3
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; vms has a deprecated constructor in C:\AppServ\www\2\vms.php on line 5
 
Warning: PDO::setAttribute() expects exactly 2 parameters, 3 given in C:\AppServ\www\2\vms.php on line 15

pero no veo nada raro en el archivo vms, que es donde esta la conexion.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
//vms.php
 
class vms
{
	public $base_url = 'http://localhost/2/';
	public $connect;
	public $query;
	public $statement;
 
	function vms()
	{
		$this->connect = new PDO("mysql:host=localhost;dbname=prueba", "root", "");
		$this->connect->setAttribute($this->connect, PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		session_start();
	}

No se me ocurre que mas puede ser, ademas este archivo con la conexion lo uso en otras secciones para editar, insertar, actualizar y bien, solo me falla aqui con el codigo que puse mas arriba...
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
Val: 53
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Update automatico de sql segun fecha

Publicado por alberto (21 intervenciones) el 26/12/2020 19:04:42
Hola
Perdona no pude conestar antes, pero estuve bastante liado...

Haciendolo asi, me imprime la columna validado, eh puesto con // la funcion vms, que es de donde sale $conexion

Tal y como esta el codigo escrito tampoco me imprime nada, aunque si lo cambio por un <= o un = si que me imprime los resultados, pero no tiene en cuenta el WHERE, ya que ahora mismo tengo 5 regiostros en la base de datos, y me imprime los 5----

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
<?php
 
//function vms()
//{
  //  $this->connect = new PDO("mysql:host=localhost;dbname=prueba", "root", "");
    //$this->connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   // session_start();
//}
 
 
//pruebas
 
include('vms.php');
 
$conexion = new vms();
 
 
 
 
 
$conexion->query = "
		SELECT * FROM tickets
		WHERE Fecha_caducidad < date('d-m-Y')
		";
 
        $result = $conexion->get_result();
 
        foreach($result as $row)
		{
			echo $row['Validado'];
 
 
		}
 
 
 
 
 
 
 
?>
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
Val: 53
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Update automatico de sql segun fecha

Publicado por alberto (21 intervenciones) el 28/12/2020 13:12:46
Buenas

Al final lo consegui hacer, dejo aqui el codigo por si a alguien le sirviese...

le tuve que meter 3 condiciones en el where, porque lo hice con date, y se ve que se confunde si el año es 2021 , pero bueno...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
include('vms.php');
 
$conexion = new vms();
 
header('Acces-Control-Allow-Origin: *');
 
$fecha = date("d-m-Y");
$ano = date("Y");
$conexion->query = "
UPDATE tickets
SET Validado = '2'
WHERE Fecha_caducidad < '$fecha' and substr(Fecha_caducidad, -4) = '$ano' and Validado = '0'
";
 
$conexion->execute();
 
?>
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: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Update automatico de sql segun fecha

Publicado por Mauro (895 intervenciones) el 28/12/2020 20:01:28
Hola Alberto:

Ten cuidado con este mensaje que estás viendo:

1
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; vms has a deprecated constructor in C:\AppServ\www\2\vms.php on line 5

Seguramente estás usando una versión algo vieja de PHP (4??), cuando quieras migrar a algo más moderno esto no funcionará más...

De hecho, te diría que si estás usando esto en producción te puedes enfrentar a serios riesgos de seguridad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 53
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Update automatico de sql segun fecha

Publicado por alberto (21 intervenciones) el 28/12/2020 20:15:24
Hola

En principio no, esta todo OK, de exo no me volvio a salir, y php estoy con la 7, no se porque saldria la verdad

muchas 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