Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Newsletter con Insert en DB

Estas en el tema de Newsletter con Insert en DB en el foro de PHP en Foros del Web. Hola a todos amigos del web. Estoy implementando un newsletter en una web y me encuentro con el siguiente problema: El usuario introduce su nombre, ...
  #1 (permalink)  
Antiguo 17/03/2016, 11:52
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Newsletter con Insert en DB

Hola a todos amigos del web.
Estoy implementando un newsletter en una web y me encuentro con el siguiente problema:

El usuario introduce su nombre, email y ciudad para la suscripción en el siguiente formulario:
Código PHP:
$emailmanager '[email protected]';

$scriptUrl 'http://www.xxx.com/NL-confirm.php';

$urlok 'NL-ok.htm';
$urlko 'NL-ko.htm';

error_reporting(0);

set_magic_quotes_runtime (0);
if (
get_magic_quotes_gpc()) {
    foreach(
$_POST as $k=>$v)
        
$_POST[$k] = stripslashes($v);
    foreach(
$_COOKIE as $k=>$v)
        
$_COOKIE[$k] = stripslashes($v);
}

$msg '';
foreach(
$_POST as $k=>$v) {
    if (
strtolower($k) != "submit" && trim($v) != '')
        
$msg .= "$k:$v\n";
}

$id md5($msg);
setcookie("sb$id",$msg,time()+86400,'','',0);

$email trim($_POST['email_newsletter']);
$nombre urlencode($_POST['nombre_newsletter']);
$ciudad urlencode($_POST['ciudad_newsletter']);

$body "¡Muchas gracias por subscribirse a mi canal!

Con el fin de confirmar su solicitud, por favor haga click
en el siguiente enlace o pege el link en su navegador
(Utilice el mismo navegador que utilizó para suscribirse)

$scriptUrl?email=$email&nombre=$nombre&ciudad=$ciudad&id=$id

Si usted no ha solicitado subscribirse a esta web,
por favor ignore este mensaje.
"
;

$Ok ereg("^([a-zA-Z0-9_\.-]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"$email);
if (
$Ok) {
    
mail($email,'Por vafor, confirme su subscripción',$body,'From: '.$emailmanager);
    
Header("Location: $urlok");
} else {
    
Header("Location: $urlko");

Esto funciona perfecto, llega el enlace de confirmación y al clickar en él recibe los datos y los comprueba en el siguiente archivo:
Código PHP:
$emailmanager '[email protected]';
$urlok 'confirm-ok.htm';
$urlko 'confirm-ko.htm';

error_reporting(0);
set_magic_quotes_runtime (0);
if (
get_magic_quotes_gpc()) {
    foreach(
$_POST as $k=>$v)
        
$_POST[$k] = stripslashes($v);
    foreach(
$_COOKIE as $k=>$v)
        
$_COOKIE[$k] = stripslashes($v);
}

$msg $_COOKIE['sb'.$_GET['id']];

$email trim($_GET['email']);
$Ok ereg("^([a-zA-Z0-9_\.-]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"$email);
$nombre $_GET['nombre'];
$ciudad $_GET['ciudad'];

$headers  'From: ' $email "\n"
$headers .= 'MIME-Version: 1.0' ."\n"
$headers .= 'Content-Type: text/plain; charset=iso-8859-1' ."\n"
$headers .= 'Content-Transfer-Encoding: 8bit'"\n\n";

if (
$Ok && ($msg != '')) {
    
mail($emailmanager,'Subscribe',$msg,$headers);
    
Header("Location: $urlok");

} else {
    
Header("Location: $urlko");

...y todo perfecto, comprueba los datos recibidos por GET de nombre, email, ciudad e id y envía un email con los datos a emailmanager (el email de la web).

El caso es que me interesa que en vez de enviarse los datos al email, se haga un insert en la tabla newsletter_tabla... claro, tendría que hacerlo automáticamente... pero no logro saber cómo hacerlo.
He puesto el insert en éste último archivo quedando así:
Código PHP:

$urlok 
'confirm-ok.htm';
$urlko 'confirm-ko.htm';

error_reporting(0);
set_magic_quotes_runtime (0);
if (
get_magic_quotes_gpc()) {
    foreach(
$_POST as $k=>$v)
        
$_POST[$k] = stripslashes($v);
    foreach(
$_COOKIE as $k=>$v)
        
$_COOKIE[$k] = stripslashes($v);
}

$msg $_COOKIE['sb'.$_GET['id']];

$email trim($_GET['email']);
$Ok ereg("^([a-zA-Z0-9_\.-]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"$email);
$nombre $_GET['nombre'];
$ciudad $_GET['ciudad'];

$headers  'From: ' $email "\n"
$headers .= 'MIME-Version: 1.0' ."\n"
$headers .= 'Content-Type: text/plain; charset=iso-8859-1' ."\n"
$headers .= 'Content-Transfer-Encoding: 8bit'"\n\n";

if (
$Ok && ($msg != '')) {
    
mysql_query("INSERT INTO newsletter_tabla (nombre_newsletter, email_newsletter, ciudad_newsletter, fecha_newsletter) VALUES ($nombre, $email, $ciudad, NOW())");

    
Header("Location: $urlok");

} else {
    
Header("Location: $urlko");

... pero no me consigo hacer el INSERT. He cambiado el Header("Location: $urlok"); por un echo $nombre, $email, $ciudad... y me devuelve los valores correctos pero no me los inserta en la BD.

Alguna ayuda por favor???
Gracias

Última edición por raulgranadosraul; 17/03/2016 a las 13:08

Etiquetas: fecha, formulario, insert, mysql, newsletter, sql, tabla
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 19:58.