Comunidad oficial de diseñadores web, web developers y Webmasters. Aqui podemos tratar temas actuales sobre diseño y tecnología. Podemos compartir y actualizarnos. Flash, PHP, ASP, Java, HTML, CSS, MySQL, CMS, etc. Unite YA y lee los Sticky
Ver más- 17,203 Miembros
- 12,952 Temas
- 4,968 Seguidores
(ayuda) Insertar automaticamente datos en BD con Php?
Hola gente!Vengo a comentarles el problema que tengo, resulta que estoy haciendo un sistema de una biblioteca, pero me tope con un problema q es el de las reservas de libros, estas no pueden tener mas de 1 dia(24Hs) puesto que si pasa este tiempo, el usuario que hizo la reserva se marca como "deudor"
El problema esque nose como implementarlo, lo que pude hacer fue que al presionar el boton "reservar" me mande a una pagina donde obtengo todos los datos del libro a reservar y tambien el nombre de usuario. Esos datos se ingresan en la BD junto con la fecha actual.
El tema es que nose como hacer para que se inserte la fecha en que el usuario tienen que devolver el libro sin que tenga que ponerla a mano y tambien nose como hacer para que pasado el tiempo de reserva el usuario se marque automaticamente como "deudor".
Talvez lo que trato de hacer es totalmente imposible, pero bue. Mi profesor siempre me decia que el limite de un programador esta en su imaginacion xD
Cabe aclarar que puedo hacerlo mas simple, y colocar las cosas a mano, pero esa no era la idea principal.
Si alguno entendio lo que trato de hacer y sabe de que manera puedo empezar le agradeceria que me lo dijera. Saludos!
- 0Calificación
- 1Seguidores
- 179Visitas
- 0Favoritos
Global
Argentina
Chile
Colombia
España
México
Perú
Uruguay
Venezuela
11 comentarios
cómo que insertar la fecha a devolver el libro? no son 24hs más de la hora actual?
lo de marcarlo como deudor, querés que pasadas las 24hs se inserte/modifique un registro de manera que el usuario quede como deudor? si es así lo que puedes hacer es un cron job que corra cada x tiempo (ponele 1 hora) y valide todos los libros que no están devueltos.
es asi, yo soy un usuario y reservo un libro. Se inserta la fecha de hoy(fecha de reserva) y se inserta la fecha en que tengo que devolver el libro(fecha de devolucion). Eso es una de las cosas que no se hacer. Que se inserte la fecha de devolucion automaticamente, osea yo reservo hoy(1/7/2012) y automaticamente se inserta la fecha de devolucion (2/07/2012). Espero que se entienda.
Voy a probar lo de cron job, gracias
Cuando hacés la consulta SQL podés buscar los libros que se llevaron hace más de 24 horas y todavía no devolvieron. Para eso mirá las funciones de manejo de fechas de mysql o el motor que uses.
Gracias los voy a probar
Supongamos que usas mysql.
Vamos a suponer que los plazos de devolución puedan ser variables (para eso definimos mas adelante el campo fecha_devolucion ).
En primer lugar deberías tener en la base de datos una tabla llamada "reserva" con los siguientes campos (acostumbrate a usar ids para todas las tablas)
id (de tipo int y autoincrementable)
devuelto (de tipo bool)
id_usuario (de tipo int)
id_libro (de tipo int)
fecha_reserva (de tipo datetime)
fecha_devolucion (de tipo datetime)
La consulta para insertar una reserva es la siguiente:
/* Supongo que en este punto tenes guardado el id de usuario en una variable
* llamada $id_usuario y el id del libro en $id_libro
*/
$fecha_reserva= time();
$fecha_devolucion= $fecha_reserva + 24 * 60 * 60;
$fecha_reserva_formateada= date("Y-m-d H:i:s", $fecha_reserva);
$fecha_devolucion_formateada= date("Y-m-d H:i:s",$fecha_devolucion);
$query= "INSERT INTO reserva VALUES(default, 0, {$id_usuario}, {$id_libro}, '$fecha_reserva_formateada', '$fecha_devolucion_formateada');";
mysql_query($query);
Con ese código insertas una reserva de un dia. Fijate que guardaste la fecha y la hora, a esto lo podes usar después si lo queres tener en cuenta, por ejemplo, si lo reserva a las 16, que lo devuelva al otro día a las 16. Por otro lado, si no te interesa la hora no le das bolilla y listo, pero te queda guardada igual.
Esta información es suficiente para saber si un usuario es deudor o nó y para obtener las reservas vencidas:
$fecha_actual= date("Y-m-d H:i:s", time());
// El siguiente query selecciona las reservas vencidas
$query1= "SELECT * FROM reserva WHERE fecha_devolucion < '{$fecha_actual}' AND devuelto != 1";
// El siguiente query selecciona los usuarios deudores
$query2= "SELECT usuario.* FROM usuario, reserva WHERE reserva.fecha_devolucion < {$fecha_actual} AND reserva.devuelto != 1 AND usuario.id = reserva.id_usuario";
Lo único que tendrías que actualizar es el campo "devuelto" cuando el usuario devuelve el libro. Eso lo tendría que actualizar un administrador, bibliotecario, o algo así...
Cualquier dificultad avisame!
La solución que te propuse no usa funciones de manejo de fechas de mysql ya que las fechas ya las deja preparada con funciones de manejo de fechas de php (time() y date()).
Desde mi punto de vista, todo lo que puedas hacer con php no se lo dejes a mysql. Es conveniente esto ya que mysql se vuelve bastante tedioso con el temas de las funciones y si cambias de base de datos puede que las funciones cambien de nombre.
Además se vuelve muy tedioso cuando trabajas tener que hacer estas tres cosas a la vez:
Programar en php
Agregar o quitar cron jobs
Programar triggers o modificarlos
Tenes que andar abriendo y cerrando programas...
Pocas veces tuve que usar cron jobs a la fuerza porque no me quedaba otra y triggers usé al principio porque era un chiche nuevo y quería usarlos, pero luego siempre le encontré la vuelta para evitar usarlos (fijate que con la solución que te planteo no hace falta usar triggers)...
Muy datallado todo, esta buenisima tu idea, ahora la implemento y veo que onda. Cualquier cosa no dudo a recurrir nuevamente a este tema. Gracias