Foros del Web » Programando para Internet » PHP »

Sistema de Alarma

Estas en el tema de Sistema de Alarma en el foro de PHP en Foros del Web. Necesito si alguien puede orientarme en este tema. Tengo un sitio desarrollado y mi cliente quiere que el usuario pueda tener su sistema de alarmas ...
  #1 (permalink)  
Antiguo 29/10/2012, 14:11
 
Fecha de Ingreso: octubre-2012
Mensajes: 4
Antigüedad: 11 años, 5 meses
Puntos: 0
Sistema de Alarma

Necesito si alguien puede orientarme en este tema. Tengo un sitio desarrollado y mi cliente quiere que el usuario pueda tener su sistema de alarmas para noticias, es decir que elija ciertas clasificaciones de su interés y cuando una noticia así sea ingresada en la base de datos el sistema le avise por mail automáticamente.

Tengo tres tablas:
1º Tabla: Noticias
2º Tabla: Clasificación (qui es donde el usuario elige la categorías de noticias de las cuales le interesa recibir la noticias)
3º Tabla: Usuarios

Modo de uso

Las noticias las carga el administrador en la base de datos, dándole una clasificación.
El usuario está dado de alta en el sistema con su mail correspondiente.

Todo hasta ahi lo tengo resuelto y andando. Mi duda surge al comparar las tablas y si las condiciones se dan, se envie el mail. Es decir: que cuando se cargue una noticia, y cumpla con la clasificación que al usuario le interesa, automáticamente se envíe un mail avisando que la noticia ha sido dada de alta en el sistema con el link de la noticia.

Si alguien pudiera sugerirme por donde ir para desarrollar esta ultima parte se los agradecería.
  #2 (permalink)  
Antiguo 29/10/2012, 14:37
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Sistema de Alarma

nos puedes pasar la estructura de la tabla clasificacion?
  #3 (permalink)  
Antiguo 29/10/2012, 15:50
 
Fecha de Ingreso: junio-2012
Mensajes: 90
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Sistema de Alarma

Yo agregaría campos de clasificados a mi tabla users y a mi tabla news, y con joins de tablas no se algo asi..

if "preferencias de usuario actual" = " [status] de alguna(s) noticias" Then
... código de envió de mail,necesitarías relacionar ambas tablas, puedes manejar varios status numéricos, teóricamente es fácil, todo depende de tu lógica/
  #4 (permalink)  
Antiguo 29/10/2012, 17:13
 
Fecha de Ingreso: octubre-2012
Mensajes: 4
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Sistema de Alarma

Copio la estructura de las tablas

Tabla usuarios:

CREATE TABLE `Usuarios` (
`userID` bigint(11) unsigned NOT NULL,
`userEstado` enum('A','B','P') COLLATE latin1_spanish_ci NOT NULL DEFAULT 'P',
`userNombre` varchar(40) COLLATE latin1_spanish_ci NOT NULL,
`userApellido` varchar(40) COLLATE latin1_spanish_ci NOT NULL,
`userPassword` varchar(32) COLLATE latin1_spanish_ci NOT NULL,
`userEmail` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
`userDomicilio` varchar(60) COLLATE latin1_spanish_ci NOT NULL,
`userTelefono` varchar(25) COLLATE latin1_spanish_ci NOT NULL,
`userCelular` varchar(25) COLLATE latin1_spanish_ci DEFAULT NULL,
`pciaID` smallint(2) unsigned NOT NULL,
`usermail2` varchar(100) COLLATE latin1_spanish_ci DEFAULT NULL,
`usercel2` varchar(100) COLLATE latin1_spanish_ci DEFAULT NULL,
`userFecAlt` date NOT NULL,
`userFecMod` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`userFecBaj` date DEFAULT NULL,
PRIMARY KEY (`userID`),
KEY `userEstado` (`userEstado`),
KEY `userNombre` (`userNombre`),
KEY `userApellido` (`userApellido`),
KEY `pciaID` (`carID`),
CONSTRAINT `Usuarios_ibfk_1` FOREIGN KEY (`pciaID`) REFERENCES `Provincias` (`pciaID`) ON UPDATE CASCADE
)


Tabla Clasificación

CREATE TABLE `Clasificacion` (
`clasID` int(8) NOT NULL AUTO_INCREMENT,
`userID` bigint(11) unsigned NOT NULL,
`clasEstado` enum('A','B') COLLATE latin1_spanish_ci NOT NULL DEFAULT 'A',
`finicio` date DEFAULT '0000-00-00',
`general` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`gastronomia` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`politica` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`finanzas` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`negocios` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`oportunidad` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`estado` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,

PRIMARY KEY (`clasID`),
KEY `profID` (`userID`),
CONSTRAINT `Clasificacion_ibfk_1` FOREIGN KEY (`userID`) REFERENCES `Usuarios` (`userID`)
)

Tabla Noticias


CREATE TABLE `Noticias` (
`notID` int(8) NOT NULL AUTO_INCREMENT,
`notEstado` enum('A','B','P','M') COLLATE latin1_spanish_ci NOT NULL DEFAULT 'P',
`general` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`gastronomia` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`politica` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`finanzas` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`negocios` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`oportunidad` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`estado` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`titulo` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`descripcion` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`notfile` varchar(200) COLLATE latin1_spanish_ci DEFAULT NULL,
`finicio` date DEFAULT '0000-00-00',
PRIMARY KEY (`notID`))
  #5 (permalink)  
Antiguo 29/10/2012, 17:24
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Sistema de Alarma

suponiendo que los campos de la tabla clasificacion son para marcar verdadero o falso si alguien esta inscrito

pues entonces si acabas de escribir en el apartado finanzas haces una consulta de todos los usuarios que tengan finanzas a 1 y (pero tal y como esta ahora deberias consultar los datos relacionados) luego con todos los valores recibidos por la consulta y con un for te pones a enviar correos con la funcion mail... aunque de todos modos tal y como lo tienes montado parece un poco innecesario tenerlo en una tabla aparte, eso podria estar perfectamente en la tabla clientes ¿no?
  #6 (permalink)  
Antiguo 29/10/2012, 17:35
 
Fecha de Ingreso: octubre-2012
Mensajes: 4
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Sistema de Alarma

Gracias por tu respuesta. El tema de las noticias sugió después de tener el sitio terminado, por eso lo puse aparte, pero lo voy a agregar a la tabla Usuarios.

Voy a tratar con lo que me decis, ...si alguien mas tiene una sugerencia... bienvenido!!
  #7 (permalink)  
Antiguo 29/10/2012, 20:03
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Sistema de Alarma

Cita:
Iniciado por valealeiaef Ver Mensaje
Gracias por tu respuesta. El tema de las noticias sugió después de tener el sitio terminado, por eso lo puse aparte, pero lo voy a agregar a la tabla Usuarios.

Voy a tratar con lo que me decis, ...si alguien mas tiene una sugerencia... bienvenido!!
Siento diferir, pero a menos que los usuarios solo puedan seleccionar una clasificación es lo peor que puedes hacer, ya que lo que pretendes hacer es una relación de 1 a muchos, por lo tanto necesitas una tabla usuarios, una tabla clasificación y por ultimo, una tabla usuario_clasificación, en donde guardarás el ID del usuario y el ID de la clasificación que desea recibir, así puede seleccionar las clasificaciones que desee y te dará flexibilidad a futuro...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 29/10/2012, 20:22
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Sistema de Alarma

lo que me referia no es crear un único campo relacion a cada cliente,

lo que me refiero es que tal y como tiene creada la tabla clasificacion podia colocar esos campos a cada usuario en la tabla usuarios ya que tal y como lo tiene ahora mismo no le ofrece flexibilidad ninguna tenerlo en otra tabla.

pero si que es verdad que lo mas práctico seria una tabla como ha dicho Nemutagk con dos campos para hacer relaciones uno a muchos como dios manda.

eso simplificaría y flexibilizaria mucho las consultas futuras y la creacion de nuevas categorias
  #9 (permalink)  
Antiguo 29/10/2012, 20:24
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Sistema de Alarma

y no sientas diferir... solo es que en ese momento me daba un poco de pereza ponerme a contarle que tiene que cambiar el planteamiento de sus tablas....
  #10 (permalink)  
Antiguo 30/10/2012, 07:06
 
Fecha de Ingreso: octubre-2012
Mensajes: 4
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Sistema de Alarma

Cita:
Iniciado por Nemutagk Ver Mensaje
Siento diferir, pero a menos que los usuarios solo puedan seleccionar una clasificación es lo peor que puedes hacer, ya que lo que pretendes hacer es una relación de 1 a muchos, por lo tanto necesitas una tabla usuarios, una tabla clasificación y por ultimo, una tabla usuario_clasificación, en donde guardarás el ID del usuario y el ID de la clasificación que desea recibir, así puede seleccionar las clasificaciones que desee y te dará flexibilidad a futuro...
Gracias! esto me parece lo mejor para poder desarrollarlo. Por eso lo planificamos de esa manera:
El usuario esta registrado
Las noticias estan aparte
y la tabla Clasificación es la que hace la conexión entre la tabla usuarios y las clasificaciones que seleccionará.

Hasta ahi lo tenemos andando...el tema es lograr que cuando una noticia ingrese, el sistema haga las relaciones y dispare el mail cuando sea oportuno. Gracias a todos por su tiempo nuevamente.

Etiquetas: sistema, tabla, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:22.