Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Variables en base de datos

Estas en el tema de Variables en base de datos en el foro de Bases de Datos General en Foros del Web. Hola, estoy realizando un script para enviar emails de acuerdo a la cantidad de dias que hayan pasado desde una fecha se envian distintos emails, ...
  #1 (permalink)  
Antiguo 03/09/2009, 16:43
 
Fecha de Ingreso: febrero-2009
Mensajes: 151
Antigüedad: 15 años, 2 meses
Puntos: 1
Variables en base de datos

Hola, estoy realizando un script para enviar emails de acuerdo a la cantidad de dias que hayan pasado desde una fecha se envian distintos emails, el problema que estoy teniendo es que nose si se puede colocar variables dentro de una base de datos, me explico mejor, lo que hace el script es recoger el cuerpo del email correspondiente a ese dia desde una tabla en la base de datos y enviarlo mediante la funcion mail, pero lo que quiero hacer es que en el mail que tengo guardado vayan variables, por ej la tabla de mensajes la tengo dividida en asunto, mensaje, me gustaria poner en el campo mensaje Hola $nombre para que salga el nombre de cada uno de los usuarios que tengo en otra tabla de nombre usuarios, si lo hago escribiendo en el script php el curpo del mensaje como por ejemplo: $email:fulano"arroba"nada.com $asunto:hola $cuerpo: Hola $nombre y despues hago mail($email, $asunto, $cuerpo), no tengo ningun problema funciona bien, pero como el email cambia para cada usuario esto no me sirve ademas me limita cosa que no hace mysql en caso de que siga queriendo agregar emails. Se que puede estar enredada mi explicacion pero hice lo mejor que puede, espero que alguien me pueda ayudar. Saludos y desde ya gracias
  #2 (permalink)  
Antiguo 04/09/2009, 01:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Variables en base de datos

Vamos a empezar por el principio....

En la bbdd tenemos:


mensajes

idmen
asunto
mensaje

usuarios
idusu
nombre
email

lo que necesitas para hacer lo que dices es combinar los datos procedentes de las dos tablas, para ello tendras algun criterio que por lo que dices depende de la fecha pero no nos dices con que fecha comparas... tendras otra tabla donde se guardaran pedidos o algo que habran hecho los usuarios y por tanto tendran el id de usuario, la fecha y algo mas....

Supongamos...

Pedidos
idped
idusu
fecha
datospedido


aún nos falta algo pada distinguir los mensajes a mandar...

modifico la tabla mensajes


mensajes

idmen
asunto
mensaje
dias<=dias transcurridos para mandar ese mensaje


Con esto si podriamos montar una sentencia SQL que selecione aquellos usuarios cuyo ultimo pedido sea de hace X dias así como el mensaje a mandarle...

Luego a tu pregunta de las variables en la bbdd....

De lo que se trata es de obtener toda la información que necesitas de la base de datos y luego combinarla....

Se podria complicar la sentencia para obtenerlo todo con una sola consulta pero no lo voy a hacer por que estoy suponiendo demasiadas cosas....

Simplificando

SELECT mensaje, asunto from mensajes where dias=0

Esto nos daria el mensaje a mandar el dia en que se a generado el pedido, guardo el resultado en variable php.

SELECT nombre, email
from usuarios
where idusu in (SELECT idusu from pedidos
where fecha=DATE())

Esto nos da los usuarios que han hecho un pedido hoy...

En php recorro el resultado de la sengunda consulta con lo que podré combinar nombre y email con las variables que contienen el asunto y el mensaje....

En mensaje no pongas "Hola" pon solo el cuerpo, puedes hacer

"Hola " . $registro('nombre') . "\n\n" . $mansaje

donde Hola es un string constante y \n son saltos de linea

Quim
  #3 (permalink)  
Antiguo 06/09/2009, 19:28
 
Fecha de Ingreso: febrero-2009
Mensajes: 151
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Variables en base de datos

Cita:
Iniciado por quimfv Ver Mensaje
Vamos a empezar por el principio....

En la bbdd tenemos:


mensajes

idmen
asunto
mensaje

usuarios
idusu
nombre
email

lo que necesitas para hacer lo que dices es combinar los datos procedentes de las dos tablas, para ello tendras algun criterio que por lo que dices depende de la fecha pero no nos dices con que fecha comparas... tendras otra tabla donde se guardaran pedidos o algo que habran hecho los usuarios y por tanto tendran el id de usuario, la fecha y algo mas....

Supongamos...

Pedidos
idped
idusu
fecha
datospedido


aún nos falta algo pada distinguir los mensajes a mandar...

modifico la tabla mensajes


mensajes

idmen
asunto
mensaje
dias<=dias transcurridos para mandar ese mensaje


Con esto si podriamos montar una sentencia SQL que selecione aquellos usuarios cuyo ultimo pedido sea de hace X dias así como el mensaje a mandarle...

Luego a tu pregunta de las variables en la bbdd....

De lo que se trata es de obtener toda la información que necesitas de la base de datos y luego combinarla....

Se podria complicar la sentencia para obtenerlo todo con una sola consulta pero no lo voy a hacer por que estoy suponiendo demasiadas cosas....

Simplificando

SELECT mensaje, asunto from mensajes where dias=0

Esto nos daria el mensaje a mandar el dia en que se a generado el pedido, guardo el resultado en variable php.

SELECT nombre, email
from usuarios
where idusu in (SELECT idusu from pedidos
where fecha=DATE())

Esto nos da los usuarios que han hecho un pedido hoy...

En php recorro el resultado de la sengunda consulta con lo que podré combinar nombre y email con las variables que contienen el asunto y el mensaje....

En mensaje no pongas "Hola" pon solo el cuerpo, puedes hacer

"Hola " . $registro('nombre') . "\n\n" . $mansaje

donde Hola es un string constante y \n son saltos de linea

Quim

Hola Quim, mil gracias por tu respuesta y por ayudarme tan bien de forma tan desinteresada, es por eso que este sitio siempre sera el mejor foro que conosco. En cuanto a mi problema entiendo muy bien lo que me dices y tambien estoy al tanto que no fui muy claro en la explicacion pero te cuento, el problema de mi script es la parte del mensaje "en si" por ej tu me pones:

"Hola " . $registro('nombre') . "\n\n" . $mansaje

eso esta muy bien pero lo que sucede es que con ello solo personalizo el nombre y el mensaje una parte aunque poca en el scrit y el mensaje que quiero enviar lleva varias cosas personalizadas y con ello varias variables es por ello que yo quiero saber si existe la forma de que yo ponga en el campo de mensaje de mi base de datos mysql todo esto:

"Hola " . $registro('nombre') . "\n\n" . me cominico.... y luego vendian mas variables con mas informacion precisa...

De esta forma tendria 1 solo campo de mensaje con todo el mensaje y de acuerdo a cada usuario se iria personalizando el mail no solamente con el nombre, al introducirlo asi como esta a la base de datos no me reemplaza las variables que coloco por ej esta . $registro('nombre') . no me la remplaza con el nombre.

Como te comente tambien puedo poner todo el email en el script con sus respectivas variables y funciona perfecto, pero son como 20 emails distintos por lo que tendria que escribir 20 emals con su respectivos if y me quita la facilidad que me da la base de datos de que cuando quiera agregar mas emails en lugar de estar volviendo al scriupt y recordar lo que hice y como era directamente agrego en la base de datos con los datos que me pide como dias transcurridos para enviar el mail, asunto y cuerpo. Bueno espero averme explicado un poco mejor y que me puedas ayudar. Saludos y gracias
  #4 (permalink)  
Antiguo 08/09/2009, 02:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Variables en base de datos

"Hola " . $registro('nombre') . "\n\n" . $mansaje . "\n\nDato 1:" . $registro('dato1') . "\n\nDato2" .$registro('dato2')."\n\nAtentamente."

Lo que podria resultar un email como el siguiente

"

Hola dunga007

Cuerpo del mensaje. Cuerpo del mensaje. Cuerpo del mensaje. Cuerpo del mensaje. Cuerpo del mensaje. Cuerpo del mensaje. Cuerpo del mensaje. Cuerpo del mensaje. Cuerpo del mensaje. Cuerpo del mensaje. Cuerpo del mensaje. Cuerpo del mensaje. Cuerpo del mensaje.

Sus datos son los siguientes:

Dato 1: El que sea
Dato 2: El suiguiente

Atentamente

"

Intercalar las variables dentro del texto puede complicarte la viada.

Podrias hacerlo usando eval() para que se interpreten las variables...


Quim
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 15:46.