PHP - Programar Accion

   
Vista:

Programar Accion

Publicado por pablogarcia013 (14 intervenciones) el 28/10/2013 23:39:14
Buenas noches! tengo una duda y estoy bastante perdido a ver si me podeis echar un cable!

Estoy haciendo una pagina web con una base de datos donde tengo una tabla con los siguientes campos : ID, titulo, imagenPath, fecha,estado.

en la pagina se muestra solo una imagen (ImagePath), y quiero que se cambie automaticamente dependiendo de la fecha. lo que hago es hacer una consulta y preguntar cual tiene el estado a 'on' y es la que muestro. Me gustaria que si yo añado una nueva fila con una fecha proxima, cuando llegue esa fecha se haga una consulta (alter table....) cambiando la que estaba a 'on' a 'off' y que la que corresponde a la fecha se ponga a 'on' de esa manera se publicaria automaticamente. Por asi decirlo me gustaria hacer como una programacion de publicaciones dependiendo de la fecha.

Espero que me podais ayudar :)

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 xve

Programar Accion

Publicado por xve (5520 intervenciones) el 29/10/2013 07:39:44
Hola Pablo, por lo que entiendo, creo que no te haria falta el campo "estado"...

Me esplico... si lo que quieres es mostrar un registro cuando coincide la fecha, únicamente tienes que buscar en la base de datos los registros que coincidan con la fecha actual... de esta manera, no hace falta poner un "estado", simplemente se muestra la imagen del día, no?

No se si me he explicado bien, o te he entendido correctamente.
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

Programar Accion

Publicado por Pablo (3 intervenciones) el 29/10/2013 09:07:42
Buenos dias! gracias por contestar! el caso es que no hay publicaciones todos los dias, osea habra fotos que se queden 2 o 3 dias, y claro me gustaria hacer algo que si por ejemplo tengo una publicacion para el 30-10-2013 y nadie visite la pagina, se hiciera la consulta automaticamente.

Muchas gracias otra vez!
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 xve

Programar Accion

Publicado por xve (5520 intervenciones) el 29/10/2013 15:06:59
Hola Pablo, no se que motor de base de datos estas utilizando, pero si utilizas MySQL, puedes utilizar eventos (event) de mysql: http://dev.mysql.com/doc/refman/5.1/en/events.html

Coméntanos, si te sirve, ok?
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

Programar Accion

Publicado por Elier (92 intervenciones) el 29/10/2013 17:01:29
Hola Pablo. Dime si la lógica que quieres implementar es así. Este código no lo he probado así que puede tener errores y se puede optimizar.

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
<?php
 
$hoy = date("Y-m-d");
$consulta_imagen_fecha = "SELECT * FROM imagenes WHERE fecha = '$hoy'";
 
// Poner datos de conexion a tu base de datos
$dbc = mysqli_connect("localhost", "my_user", "my_password", "imagenesdb");
 
if (mysqli_connect_errno())
{
    echo "Fallo de conexion";
}
else
{
	$resultado = mysqli_query($dbc, $consulta_imagen_fecha);
 
	if ($resultado)
	{
		$imagen_fecha = mysqli_fetch_assoc($resultado);
		$imagenPath = $imagen_fecha['imagenPath'];
		if($imagen_fecha['estado']=='ON'){
			echo "<img src=\"$imagenPath\">";
		}
		else {
			// Obtenemos la imagen que tiene el estado en ON
			$consulta_imagen_on = "SELECT * FROM imagenes WHERE estado = 'ON'";
			$resultado = mysqli_query($dbc, $consulta_imagen_on);
			if ($resultado){
				$imagen_on = mysqli_fetch_assoc($resultado);
 
				// Actualizar el estado de la imagen activa de ON a OFF
				$id = $imagen_on['id'];
				$actualizar_imagen_on = "UPDATE imagenes SET estado='OFF' WHERE id = $id";
				$resultado = mysqli_query($dbc, $actualizar_imagen_on);
 
				// Actualizar la imagen con fecha de hoy de estado OFF a ON
				$id = $imagen_fecha['id'];
				$actualiza_imagen_off = "UPDATE imagenes SET estado='ON' WHERE id = $id";
				$resultado = mysqli_query($dbc, $actualizar_imagen_off);
				echo "<img src=\"$imagenPath\">";
 
			}
			else{
				// Si no hay ninguna imagen activa la imagen con fecha de hoy de estado OFF a ON
				$id = $imagen_fecha['id'];
				$actualiza_imagen_off = "UPDATE imagenes SET estado='ON' WHERE id = $id";
				$resultado = mysqli_query($dbc, $actualizar_imagen_off);
				echo "<img src=\"$imagenPath\">";
			}
		}
	}
	else {
		// Si no hay imagenes para la fecha actual
		$consulta_imagen_on = "SELECT * FROM imagenes WHERE estado = 'ON'";
		$resultado = mysqli_query($dbc, $consulta_imagen_on);
			if ($resultado){
				$imagen_on = mysqli_fetch_assoc($resultado);
				$imagenPath = $imagen_on['imagenPath'];
				echo "<img src=\"$imagenPath\">";
			}
	}
}
?>
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

Programar Accion

Publicado por Pablo (3 intervenciones) el 30/10/2013 09:20:07
Primero de todo, Gracias por contestar:

La logica que me pones yo creo que esta bien, tengo que probarla pero mas o menos es lo que habia pensado, pero mi pregunta es,¿Este codigo se ejecuta solo cuando alguien visita la pagina? o se ejecuta independientemente? lo que busco es algo que se ejecute y te cambie a 'on' una publicancion justo cuando sea su fecha, independientemente de si visitan o no la pagina. No se si se podra realizar, estoy mirando el enlace de xve.

Muchas gracias otra vez!
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

Programar Accion

Publicado por Elier (92 intervenciones) el 30/10/2013 17:39:48
Se ejecuta cuando un cliente visite la pagina. Pero lo que importa es que lo reciba el cliente sea correcto.

Puedes poner una EVENT en MYSQL que se ejecute cada dia para que cambie el estado.

CREATE EVENT event1
ON SCHEDULE EVERY '1' DAY
STARTS '2013-10-30 00:00:00'
DO
BEGIN
-- el codigo para cambiar el estado aqui
END
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

Programar Accion

Publicado por Pablo (14 intervenciones) el 04/11/2013 09:55:20
Ya probe el codigo! y funciona perfectamente! es lo que estaba buscando :) 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