Foros del Web » Programando para Internet » PHP »

registro email para newsletter

Estas en el tema de registro email para newsletter en el foro de PHP en Foros del Web. Hola, a ver si me pueden ayudar. estoy intentando hacer un registro de usuarios para enviar uun boletin de noticias (newsletter). estoy trabajando en el ...
  #1 (permalink)  
Antiguo 15/04/2014, 05:55
Avatar de gerbmx  
Fecha de Ingreso: enero-2013
Ubicación: buenos aires
Mensajes: 41
Antigüedad: 11 años, 3 meses
Puntos: 0
registro email para newsletter

Hola, a ver si me pueden ayudar. estoy intentando hacer un registro de usuarios para enviar uun boletin de noticias (newsletter). estoy trabajando en el siguiente codigo pero no logro que envie la informacion a la base de datos.

que estoy haciendo mal?

archivo conexion.php
Código PHP:
<?php 
$conexion 
mysql_connect("localhost","root","");
mysql_select_db ("locales"$conexion) OR die ("La base de datos esta inaccesible, o no existe");
?>
archivo newsletter.php

Código PHP:

<?php
if ($new == "del") {
include (
"conexion.php");

$sql mysql_query ("SELECT * FROM usuarios WHERE mail LIKE '$mail'",$conexion);
if (
mysql_num_rows ($sql) != 0) {
mysql_query ("DELETE FROM usuarios WHERE email LIKE '$mail'",$conexion);
echo 
"Haz sido borrado con éxito, No recibiras mas mails con novedades.";
}
else {
echo 
"Ya haz borrado el mail, o no existe en la base de datos :).";
}
}
elseif (
$new == "ins") {
include (
"conexion.php");
$sql mysql_query ("SELECT * FROM usuarios WHERE mail LIKE '$mail'",$conexion);
if (
mysql_num_rows ($sql) == 0) {
mysql_query ("INSERT INTO usuarios (nombre,mail) VALUES ('$nombre','$mail')",$conexion);
echo 
"Registrado con éxito :).";
}
}
else {
?>
<form action="<?php $PHP_SELF ?>" method="post">
Suscribirse a Newsletter.<br><br>

Ingresa tu nombre (o nick): <input type="text" name="nombre"><br>
Ingresa tu Mail: <input type="text" name="mail"><br>
<select name="new">
<option value="ins">Suscribir</option>
<option value="del">DesSuscribir</option>
</select>
<input type="submit">
</form>
<?php
}
?>
me esta volviendo loco. gracias por su ayuda!
  #2 (permalink)  
Antiguo 15/04/2014, 07:08
 
Fecha de Ingreso: diciembre-2013
Mensajes: 81
Antigüedad: 10 años, 3 meses
Puntos: 1
Respuesta: registro email para newsletter

por lo que se en el localhost no se pueden enviar correo tiene que estar subido a internet
  #3 (permalink)  
Antiguo 15/04/2014, 07:24
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 10 años
Puntos: 10
Respuesta: registro email para newsletter

@el__tamer, si tiene bien configurado el servidor SMTP se puede :)

Al problema

Consejos:
-Si no tienes varias bases de datos, NO tienes que poner la variable $conexion detras de cada query

Mira ver si es esto que no veo las variables definidas

Código PHP:
Ver original
  1. elseif ($new == "ins") {
  2.     include ("conexion.php");
  3.     $nombre = mysql_real_escape_string($_POST['nombre']);
  4.     $mail = mysql_real_escape_string($_POST['mail']);
  5.     $sql = mysql_query ("SELECT * FROM usuarios WHERE mail LIKE '$mail'");
  6.     if (mysql_num_rows ($sql) == 0) {
  7.         mysql_query ("INSERT INTO usuarios (nombre,mail) VALUES ('$nombre','$mail')");
  8.         echo "Registrado con éxito :).";
  9.     }
  10. }

Y deberias verificar si los campos que recibes del formulario estan bien antes de guardarlos en la base de datos, es decir, si los campos estan vacios, no los metas.
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #4 (permalink)  
Antiguo 15/04/2014, 08:31
Avatar de gerbmx  
Fecha de Ingreso: enero-2013
Ubicación: buenos aires
Mensajes: 41
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: registro email para newsletter

Cita:
Iniciado por Qazser Ver Mensaje
@el__tamer, si tiene bien configurado el servidor SMTP se puede :)

Al problema

Consejos:
-Si no tienes varias bases de datos, NO tienes que poner la variable $conexion detras de cada query

Mira ver si es esto que no veo las variables definidas

Código PHP:
Ver original
  1. elseif ($new == "ins") {
  2.     include ("conexion.php");
  3.     $nombre = mysql_real_escape_string($_POST['nombre']);
  4.     $mail = mysql_real_escape_string($_POST['mail']);
  5.     $sql = mysql_query ("SELECT * FROM usuarios WHERE mail LIKE '$mail'");
  6.     if (mysql_num_rows ($sql) == 0) {
  7.         mysql_query ("INSERT INTO usuarios (nombre,mail) VALUES ('$nombre','$mail')");
  8.         echo "Registrado con éxito :).";
  9.     }
  10. }

Y deberias verificar si los campos que recibes del formulario estan bien antes de guardarlos en la base de datos, es decir, si los campos estan vacios, no los metas.
probe esto que me indicas pero no hace nada tampoco. es q ni siquiera muestra el cartel de registro con exito u otra cosa. solo re refresca la pagina.

puede que el problema este en la varieble $new ? que no toma el correctamente el valor "ins" o "del"...

gracias por la ayuda!
  #5 (permalink)  
Antiguo 15/04/2014, 08:44
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 10 años
Puntos: 10
Respuesta: registro email para newsletter

Es verdad, no lo vi...Si

Al principio del archivo pon esto

$new = $_POST['new'];

Recuerda que los datos de un formulario siempre llegan en la variable $_POST, no puedes usarlas directamente
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #6 (permalink)  
Antiguo 15/04/2014, 09:16
Avatar de gerbmx  
Fecha de Ingreso: enero-2013
Ubicación: buenos aires
Mensajes: 41
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: registro email para newsletter

Cita:
Iniciado por Qazser Ver Mensaje
Es verdad, no lo vi...Si

Al principio del archivo pon esto

$new = $_POST['new'];

Recuerda que los datos de un formulario siempre llegan en la variable $_POST, no puedes usarlas directamente
funciono perfectamente!! muchas gracias.
te consulto tambien a ver si me podes ayudar con el archivo enviar.php

Código PHP:

<?php
if (isset ($enviar)) {
include (
"conexion.php");
$resp mysql_query ("SELECT * FROM usuarios",$conexion);
while (
$row mysql_fetch_array ($resp)) {
$nombre $row ["nombre"];
$mail $row ["mail"];
$mensaje $_POST ["mensaje"];
$men "Estimado ".$nombre.", \n ".$mensaje."";
mail ($mail,"texto q se va a enviar",$men,"FROM: [email protected]");
}
}
else {
?>
<form action="<?php $PHP_SELF ?>" method="post">
Introduce el mensaje:<br><br>
<textarea name="mensaje"></textarea>
<br><br>
<input type="submit" name="enviar" value="Enviar Newsletter">
</form>
<?php
}
?>
estoy siguiendo la misma linea pero no me envía.
gracias
  #7 (permalink)  
Antiguo 15/04/2014, 09:31
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 10 años
Puntos: 10
Respuesta: registro email para newsletter

Si tu problema es enviar el correo...Sabes que necesitas un servidor SMTP instalado. Si no te funciona en tu ordenador y no sabes montar un servidor de correos en tu ordenador, subelo a un hosting y te deberia funcionar. No veo errores en el código
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #8 (permalink)  
Antiguo 15/04/2014, 09:35
Avatar de gerbmx  
Fecha de Ingreso: enero-2013
Ubicación: buenos aires
Mensajes: 41
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: registro email para newsletter

lo estoy probando desde un servidor y no me esta enviando y por otro lado hice algunas modificaciones al codigo anterior. tengo problemas para desuscribir los usuarios.

Los agrega correctamente pero no los borra

Código PHP:

<?php 

include ("conexion.php");

$new $_POST['new'];

if (
$new == "del") {
    
    include (
"conexion.php");
    
$nombre mysql_real_escape_string($_POST['nombre']);
    
$mail mysql_real_escape_string($_POST['mail']);
    
$sql mysql_query ("SELECT * FROM usuarios WHERE mail LIKE '$mail'");
    if (
mysql_num_rows ($sql) != 0) {
        
mysql_query ("DELETE FROM usuarios WHERE email LIKE '$mail')");
        echo 
"Haz sido borrado con éxito, No recibiras mas mails con novedades.";
    }
else {
echo 
"Ya haz borrado el mail, o no existe en la base de datos :).";
}
}


elseif (
$new == "ins") {
    include (
"conexion.php");
    
$nombre mysql_real_escape_string($_POST['nombre']);
    
$mail mysql_real_escape_string($_POST['mail']);
    
$sql mysql_query ("SELECT * FROM usuarios WHERE mail LIKE '$mail'");
    if (
mysql_num_rows ($sql) == 0) {
        
mysql_query ("INSERT INTO usuarios (nombre,mail) VALUES ('$nombre','$mail')");
        echo 
"Registrado con éxito :).";
    }
}


else {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Suscribirse a Newsletter.<br><br>

Ingresa tu nombre (o nick): <input type="text" name="nombre"><br>
Ingresa tu Mail: <input type="text" name="mail"><br>
<select name="new">
<option value="ins">Suscribir</option>
<option value="del">DesSuscribir</option>
</select>
<input type="submit">
</form>
<?php
}
?>
  #9 (permalink)  
Antiguo 15/04/2014, 09:43
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 10 años
Puntos: 10
Respuesta: registro email para newsletter

$sql = mysql_query ("SELECT * FROM usuarios WHERE mail LIKE '$mail'");
if (mysql_num_rows ($sql) != 0) {
mysql_query ("DELETE FROM usuarios WHERE email LIKE '$mail')");

La columna se llama o mail o email....Como abajo tambien tienes mail, me imagino que tienes que borrar la "e" de email en la columna del delete

Con respecto al correo, mirastes en la bandeja de correo no deseado?
__________________
Pautas php:
No usar libreria mysql, usa mysqli; Separar siempre los controladores de la vista; Procedual es feo, ama los objetos
  #10 (permalink)  
Antiguo 15/04/2014, 10:03
Avatar de gerbmx  
Fecha de Ingreso: enero-2013
Ubicación: buenos aires
Mensajes: 41
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: registro email para newsletter

correcto, esta mal definido mail... muchas gracias.

Con respecto al envio estoy haciendo pruebas pero no llega nada a ninguna de las bandejas...

el codigo es este:

Código PHP:
<?php
if (isset ($enviar)) {
include (
"conexion.php");
$resp mysql_query ("SELECT * FROM usuarios",$conexion);
while (
$row mysql_fetch_array ($resp)) {
$nombre $row ["nombre"];
$mail $row ["mail"];
$mensaje $_POST ["mensaje"];
$men "Estimado ".$nombre.", \n ".$mensaje."";
mail ($mail,"Newsletter ",$men,"FROM: [email protected]");
}
}
else {
?>
<form action="<?php $PHP_SELF ?>" method="post">
Introduce el mensaje:<br><br>
<textarea name="mensaje"></textarea>
<br><br>
<input type="submit" name="enviar" value="Enviar Newsletter">
</form>
<?php
}
?>
puede que sea algo del metodo de envio: "<?php $PHP_SELF ?>" ??

Etiquetas: email, mysql, newsletter, registro, select, sql, 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 12:50.