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
  • 0

(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!
  • 0
  • 0Calificación
  • 1Seguidores
  • 179Visitas
  • 0Favoritos

11 comentarios

@cangrinay91 Hace más de 10 meses
amigo pues tiene que hacer un condicion en que si el usuario llega a la fecha limite haga un update que actulize la informacion en la bd y si el sistema comprueba que no lo ha debuelto entonces aparesca como deudor con un ciclo condicional lo puedes hacer amigo
@lugolu Hace más de 10 meses
no entendí nada...

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



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.
@matman83 Hace más de 10 meses
no hace falta guardar la fecha de devolución, a menos que no sea siempre 24hs.
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.
@theasfo Hace más de 10 meses
Triggers...Ahora Googlea eso ..
@damian8585 Hace más de 10 meses
Te estás complicando de gusto. Si tenés la fecha de devolución guardada, no hace falta marcarlo como deudor luego de que se cumpla el plazo. Esa información está implícita ya que en todo momento podés comparar la fecha de la reserva con la fecha actual y determinar si es deudor o nó. Con esto te evitas usar cron, triggers o cualquier otro mecanismo de actualización programada..

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í...
@damian8585 Hace más de 10 meses
Al principio, me confundi, la idea es compara la fecha de DEVOLUCION con la fecha actual. Encará el problema así como te dije que es una buena solución (salvo que tu sistema necesite ser super eficiente, pero ahi entran en juego cosas más avanzadas que esto que aún no aprendiste).
Cualquier dificultad avisame!
@damian8585 Hace más de 10 meses
cholito09 dijo:

matman83 dijo:

no hace falta guardar la fecha de devolución, a menos que no sea siempre 24hs.
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


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.
@damian8585 Hace más de 10 meses
Otra cosa, hay que tener mucho cuidado con los cron jobs y triggers ya que cuando programas puede que te olvides que existen y hagas macana.

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)...
Tienes que ser miembro para responder en este tema