Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Newsletter con verificación en la misma página

Estas en el tema de Newsletter con verificación en la misma página en el foro de PHP en Foros del Web. Hola a todos amigos del web. Estoy luchando con un form de newsletter con confirmación de email. Les cuento. Tengo este form para introducir los ...
  #1 (permalink)  
Antiguo 19/03/2016, 07:56
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Newsletter con verificación en la misma página

Hola a todos amigos del web. Estoy luchando con un form de newsletter con confirmación de email. Les cuento.
Tengo este form para introducir los datos para el newsletter:
Código PHP:
        <table width="80%" align="center" border="0" cellspacing="0" cellpadding="0" class="formulario_contacto_li2">
        <
form name="form_newsletter" method="post" action="comprobarregistro.php">
            <
tr>
                <
td colspan="2" class="formulario_contacto_li2" style="width:60%; height:auto"><h2 class="formulario_contacto_h2">Subscribirse al Newsletter</h2></td>
                <
td class="formulario_contacto_li2" style="width:40%;height:auto; vertical-align: bottom"><span class="campos_obligatorios">* Campos obligatorios</span></td>
            </
tr>
            <
tr class="formulario_contacto_ul" height="auto">
                <
td class="formulario_contacto_li" style="width:20%; height:auto"><label for="nombre" class="formulario_contacto_label">Nombre:&nbsp;</label></td>
                <
td class="formulario_contacto_li" style="width:30%; height:auto"><input type="text" name="nombre_newsletter" id="nombre_newsletter" class="formulario_contacto_input" placeholder="Vicky Armas" required /></td>
                <
td class="formulario_contacto_li" style="width:50%; height:auto; padding-bottom:70px" rowspan="3">
                    <
span class="validacion_formato" style="text-align:center">Recibir&aacuteun enlace en el eMail proporcionado para verificar su direcci&oacute;n de correo electr&oacute;nico</span>
                </
td>
            </
tr>
            <
tr class="formulario_contacto_ul" height="auto">
                <
td class="formulario_contacto_li" style="width:20%; height:auto"><label for="email" class="formulario_contacto_label">eMail:&nbsp;</label></td>
                <
td class="formulario_contacto_li" style="width:40%; height:auto"><input type="email" name="email_newsletter" class="formulario_contacto_input" placeholder="[email protected]required  /></td>
            </
tr>
            <
tr class="formulario_contacto_ul" height="auto">
                <
td class="formulario_contacto_li" style="width:20%; height:auto"><label for="ciudad" class="formulario_contacto_label">Ciudad:&nbsp;</label></td>
                <
td class="formulario_contacto_li" style="width:40%; height:auto"><input type="text" name="ciudad_newsletter" id="ciudad_newsletter" class="formulario_contacto_input" required /></td>
            </
tr>
            <
tr height="30px">
                <
td style="width:20%; height:auto"></td>
                <
td style="width:40%;height:auto;padding-right:1%;padding-top:5px;" align="right">
                    <
button class="formulario_contacto_boton_submit" type="submit" style="padding:5px">Enviar</button>
                    <
a href="#" class="cerrarmodalNewsletter"><button class="formulario_contacto_boton_reset" type="reset" style="padding:5px">Cancelar</button></a>
                </
td>
                <
td style="width:40%; height:auto"></td>
            </
tr>
        </
form>
        <
iframe name="pp" style="position:absolute;top:-1500px;"></iframe>
        </
table
... que recoge los datos y los envía a 'comprobarregistro.php', donde si el email existe le devuelve un mensaje informándole y si no existe ingresa los datos en la BD. Este es el code:
Código PHP:
$email trim($_POST['email_newsletter']);
$nombre urlencode($_POST['nombre_newsletter']);
$ciudad urlencode($_POST['ciudad_newsletter']);

$total mysqli_query($mysqli"SELECT * FROM newsletter_tabla WHERE email_newsletter = '$email'");
$row_total mysqli_fetch_assoc($total);
$totalRows_total mysqli_num_rows($total);
$conteo $totalRows_total;

if(
$conteo==0){
    
$mysqli->query("insert into newsletter_tabla(nombre_newsletter, email_newsletter, ciudad_newsletter, fecha_newsletter) values('$nombre', '$email', '$ciudad', NOW())");
    echo 
'perfecto';
}else{
echo 
'Su eMail ya estaba subscrito al Newsletter';

Funciona todo bien. Pero lo que necesito para poder enviar el mensaje de confirmación de email al usuario es
que la línea del action del form sea:
Código PHP:
<form name="form_newsletter" method="post" action="NL-process.php" onsubmit="return comprobar()"
...donde 'NL-process.php es quién envía el email de confirmación y 'comprobar()' sería la función que comprueba si el email existe.

Lo que ocurre es que necesito que la los datos de 'comprobar.php' sean la función 'comprobar()' que debería estar en la misma página del form y que al final de comprobar si el email no existe deje que el form continúe con el submit.
Tengo una idea de cómo cambiar algunas cosas, por ejemplo el php comprobar() sería algo así:
Código PHP:
$email trim($_POST['email_newsletter']);
$nombre urlencode($_POST['nombre_newsletter']);
$ciudad urlencode($_POST['ciudad_newsletter']);

$total mysqli_query($mysqli"SELECT * FROM newsletter_tabla WHERE email_newsletter = '$email'");
$row_total mysqli_fetch_assoc($total);
$totalRows_total mysqli_num_rows($total);
$conteo $totalRows_total;

if(
$conteo==0){
    echo 
'AQUI ES DONDE PIENSO QUE DEBERÍA DEJAR CONTINUAR AL SUBMIT DEL FORM';
}else{
echo 
'Su eMail ya estaba subscrito al Newsletter';

Me encuentro con dos cosas que no se solucionar.
---- Meter el code de 'comprobar.php' en la función 'comprobar()' en la misma página del form
---- Y que si no existe el email, deje correr el submit a NL-process.php que es la página que envía el email al usuario para su confirmación.

Tengo la idea de qué es lo que tengo que hacer.... pero no consigo llevarlo a cabo.

PD: En realidad no se si estoy en el foro adecuado... me pregunto si mi duda es de php o de js o de ambas!!! (nunca acierto con el foro )
  #2 (permalink)  
Antiguo 19/03/2016, 09:17
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Newsletter con verificación en la misma página

porque mejor no controlas todos con el js de comprobar, es decir, utilizas ajax para enviar la peticion de comprobacion a tu php y configuras dos codigos de respuesta, 200 y 205 por ejemplo, si es 200 esta bien y procede a enviar el formulario para registro y si es 205 detiene el escript y emite el mensaje de informacion, tan simple como eso
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 19/03/2016, 09:21
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Newsletter con verificación en la misma página

Cita:
Iniciado por xfxstudios Ver Mensaje
porque mejor no controlas todos con el js de comprobar, es decir, utilizas ajax para enviar la peticion de comprobacion a tu php y configuras dos codigos de respuesta, 200 y 205 por ejemplo, si es 200 esta bien y procede a enviar el formulario para registro y si es 205 detiene el escript y emite el mensaje de informacion, tan simple como eso
Algo así es a lo que me refiero... se que ese es el procedimiento... pero no soy capaz de sacar las líneas
  #4 (permalink)  
Antiguo 19/03/2016, 09:22
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Newsletter con verificación en la misma página

Código Javascript:
Ver original
  1. function comprobar(){
  2.  
  3. var email = $("input[name=email]").val();
  4.  
  5. $.ajax({
  6. url: 'comprueba.php?email='+email,
  7. type: get,
  8. success function(respuesta){
  9.  
  10. if(respuesta == "200"){
  11.  
  12. form[0].submit();
  13.  
  14. }else{
  15.  
  16. /*EL CÓDIGO QUE QUIERAS PARA EL MENSAJE*/
  17.  
  18. }
  19.  
  20. }
  21.  
  22. })
  23.  
  24.  
  25. }

algo asi mas o menos, verifica el código y modifica según el caso
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 19/03/2016, 09:24
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Newsletter con verificación en la misma página

Cita:
Iniciado por xfxstudios Ver Mensaje
Código Javascript:
Ver original
  1. function comprobar(){
  2.  
  3. var email = $("input[name=email]").val();
  4.  
  5. $.ajax({
  6. url: 'comprueba.php?email='+email,
  7. type: get,
  8. success function(respuesta){
  9.  
  10. if(respuesta == "200"){
  11.  
  12. form[0].submit();
  13.  
  14. }else{
  15.  
  16. /*EL CÓDIGO QUE QUIERAS PARA EL MENSAJE*/
  17.  
  18. }
  19.  
  20. }
  21.  
  22. })
  23.  
  24.  
  25. }

algo asi mas o menos, verifica el codigo y modifica segun el caso
...pero saldría de la página?? es decir url:comprueba.php ¿qué página sería?
  #6 (permalink)  
Antiguo 19/03/2016, 09:26
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Newsletter con verificación en la misma página

recuerda que el control lo tiene el boton:

Código HTML:
Ver original
  1. <button type="button" onClick="comprobar();">Enviar</button>
__________________
[email protected]
HITCEL
  #7 (permalink)  
Antiguo 19/03/2016, 09:27
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Newsletter con verificación en la misma página

Cita:
Iniciado por raulgranadosraul Ver Mensaje
...pero saldría de la página?? es decir url:comprueba.php ¿qué página sería?
dios es solo un ejemplo, me refiero a la pagina que tengas para ello comprobarregistro.php
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 19/03/2016, 09:36
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Newsletter con verificación en la misma página

Cita:
Iniciado por xfxstudios Ver Mensaje
dios es solo un ejemplo, me refiero a la pagina que tengas para ello comprobarregistro.php
Seguramente es más fácil... para vosotros, pero como digo siempre.. yo no tengo tanto conocimiento, lo mío es algo muy casero.

Por eso todo esto que me cuentas, y que te doy la razón de que seguro es muchiisimo más fácil, para mí no lo es... desconozco el lenguaje por completo.

De ahí mi interés en trabajar lo que conozco... cada uno sabe sus limitaciones. Aunque sea más engorroso lo que me interesa es meter el php de 'comprobarregistro.php' en la misma página del form y que cuando compruebe que no existe continúe con el submit en la otra página.
Ya digo que 'seguramente no sea lo más lógico o limpio'.... para alguien que sabe. Yo solo hago esto para amigos y para mi mismo... no para clientes que me pidan perfeccionismo.... yo solo necesito que funcione con mis pocos conocimientos.

Espero no faltar a nadie... pero hay mucho que desconozco, de veras.
  #9 (permalink)  
Antiguo 19/03/2016, 09:59
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Newsletter con verificación en la misma página

no vas a continuar con el submit desde el mismo php, lo que podrias hacer es luego de comprobar que no existe simplemente lo registras y si existe imprimes una alerta con js por ejemplo

Código PHP:
Ver original
  1. //AQUI RECIBES TODAS TUS VARIABLES
  2. /*
  3. $xxxA = XX
  4. $xxxB = XX
  5. $xxxC = XX
  6. $xxxD = XX
  7.  
  8. */
  9.  
  10. //AQUI REALIZAS LA CONSULTA PARA VERIFICAR
  11.  
  12. /*
  13.  
  14. $a = $db->query("bla bla bla
  15.  
  16. */
  17.  
  18. if($total >=1){
  19.  
  20. //emito la alerta
  21.  
  22. ////emito la alerta y redireccion si es el caso
  23. echo "<script>alert('Disculpe, ese email ya esta registrado en nuestro sitio'); window.location='paginaquesea.php';</script>"
  24.  
  25. }else{
  26.  
  27. //si no existe lo registro
  28.  
  29. $b = $db->query("INSERT INTO bla bla bla
  30.  
  31. }

y no se trata de saber mas o menos, se trata de que programas incluye analizar la información e investigar a fondo lo que no se sabe, recuerda que estar en la famosa zona de confort te limita de tener éxito en tus labores, es un consejo, no te mantengas en ninguna zona de confort ni te conformes con lo que sabes, siempre busca la manera de aprender más, recuerda que tu apetito de conocimiento es quien alimenta a tu apetito de éxito, mientras más conoces mas éxito tienes.
__________________
[email protected]
HITCEL
  #10 (permalink)  
Antiguo 19/03/2016, 12:18
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Newsletter con verificación en la misma página

Ya, ya lo se. Si es que tampoco tengo el tiempo que me gustaría para dedicar tiempo a aprender más sobre todo esto. y es una pena porque me encanta pero con el poco tiempo que me queda solo puedo aprovechar para hacer pequeñas cosas, y la verdad, sé que pregunto mucho por aqui, y es que los manuales y demás no tengo mucha experiencia para estudiarlos y entenderlos con claridad y...bueno, en fin, que ya me gustaría.

Así exactamente es como tengo la programación... pero pensé que podría hacer toda esa consulta en la misma página. Y luego que siguiera con el submit. Ok, entendido. Y muchas gracias, siempre. Me ayudáis mucho siempre por aqui.

Etiquetas: fecha, formulario, mysql, newsletter, página, registro, select, 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 14:08.