Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/03/2016, 07:56
raulgranadosraul
 
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 )