Validación de mail en php

Como estas ,,,necesito hacer una pregunta sobre la existencia de un mail en una base de datos Mysql desde un formulario php, la idea es que el usuario regisatra en el campo mail como es obvio el correo electrónico y si ya esta dentro de la base de datos debe aparecerle el mensaje de que "El correo ya esta registrado"....de lo contrario si el mail es nuevo obviamente no esta dentro de la base de datos debe de aparecerle "Se a enviado información a su Email";
Tengo el siguiente código
$email=$_POST["Email2"];
// Hago la comnexion y la inserción de regiustros a la base de datos desde un formulario en Php
luegohago un select
$sql= mysql_query('SELECT COUNT(*) FROM boletín WHERE Email="$email"');
y mediante un condicional if hago la validación:
if ($sql >= 1) {
echo "Campo Email ya esta registrado";
}
elseif ($sql <1 ) { //comparando a 1 si ya esta el dato
echo "Se a enviado información a su Email";
}
Al hacer esto siempre se va por el primer condicional es decir de quie el campo Email ya esta registrado así se inserte en el formulario un mailñ que ya este dentr4o de la base de datos

1 respuesta

Respuesta
1
As Así
$sql= mysql_query('SELECT COUNT(*) FROM boletín WHERE Email="$email"',$conexion);
$resultados = mysql_affected_rows($conexión);
if ($resultados == 0) {
echo "Se a enviado información a su Email";
}ELSE{
echo "Campo Email ya esta registrado";
}
Hola muchas gracias por tu ayuda, te comernto que adecue el código que me diste a mi código y siempre se va por la primera condición es decir siempre me imprime "Campo Email ya esta registrado " así el mail ya este en la base de datos, que pena la molestia pues aquí te envío el código que tengo
function Conectarse(){
if (!($link=mysql_connect("localhost","root","califele2011"))){ //realiza la conexión a la base de datos
echo "Error conectando a la base de datos. Por favor comunique con el administrador ";
exit();
}
if (!mysql_select_db("omnilife",$link)){
echo "Error seleccionando la base de datos. Por favor comunique con el administrador";
exit();
}
return $link;
}
if ($_POST) { //si están vacíos los textos para que no me muestre "Digitar Nombre al abrir la // pagina"
$link = Conectarse(); # con esto me conecto a la DB
if (mysql_query("INSERT INTO boletín (Nombre,Email,Pais_Ciudad) values ('$nombre','$email','$pais_ciudad');")){
$sql= mysql_query('SELECT COUNT(*) FROM boletín WHERE Email = $email',$link);
$resultados = mysql_affected_rows($link);
// $sql= mysql_query('SELECT Email FROM boletín WHERE Email like "$email"');
//if ($email == 1) { //comparando a 1 si ya esta el dato
/*if ($sql >= 1) {
echo "Campo Email ya esta registrado";
//echo "Pagina "; $por; echo "";
}
elseif ($sql==0) { //comparando a 1 si ya esta el dato
//else { //comparando a 1 si ya esta el dato
echo "Se a enviado información a su Email";
echo "Pagina "; $por; echo "";
} */
if ($resultados == 0) {
echo "Se a enviado información a su Email";
}ELSE{
echo "Campo Email ya esta registrado";
}
}
}
mysql_select_db("omnilife", $link); //para que me borre campos vacíos al cargar la pagina
mysql_query("DELETE FROM boletín WHERE Nombre = '' "); //borre campos que queden en blanco
Nota: $conexión fue remplazado por $link
Gracias por su ayuda
Att. Hernán Camilo Martínez V.
Mm.. revisa la query te faltaton los parentes en $email
Hola gracias de nuevo el inconveniente que veo es que al poner paréntesis en  $email es decir que quedo:
$sql= mysql_query("SELECT COUNT(*) FROM suscripción WHERE Email_Suscripcion = '"(.$email.)"'",$link);
 se me presenta un problema que me ha sucedido desde hace tiempo y que me pone ha pensar si algo esta mal en mi compilador o en el dreamweawer o el xampp que es que la pagina se bloquea cuando la ejecuto para probar como esta funcionando y no es la primera vez que pasa hago un cambio en el código  php  y muy a menudome sucede esto me gustaría saber por que pasa eso..
Gracias!
Perdón no era paréntesis sino que comillas
es posible que tengas un problema con la bd o campos de tu bd, has esto para ver si te da respuesta mysql.
$sql= mysql_query("SELECT COUNT(*) FROM suscripción WHERE Email_Suscripcion = '$email' ",$link)or die(mysql_error());
Me comentas!
Hola muchas gracias por su atención y ayuda pero desafortunadamente persiste el error en la pagina siempre me dice que el mail ya esta registrado así en el campo email digite un mail nuevo que no este en la base de  datos, el código ahora quedo así:
$sql= mysql_query("SELECT COUNT(*) FROM boletín WHERE Email= '$email' ",$link)or die(mysql_error());
$resultados = mysql_affected_rows($link);
if ($resultados >= 1) {
echo "Campo Email ya esta registrado";
}ELSE{
echo "Se a enviado información a su Email";
}
De verdad no se que estará pasando.
Gracias
¿El nombre de la tabla la tienes con acentos o tu los pasaste ahora con acento?
el nombre de la tabla es sin acentos
$sql= mysql_query("SELECT COUNT(*) FROM boletín WHERE Email= '$email' ",$link)or die(mysql_error());
aquí se ve con acentos debido a que este editor de todoexpertos corrige el nombre de las tablas y debe de poner los acentos.
también te comento que hice lo siguiente:
$sql= mysql_query("SELECT COUNT(*) FROM boletín WHERE Email= '$email' ",$link)or die(mysql_error());
if ($sql > 1) {
echo "Campo Email ya esta registrado";
}ELSEif ($sql <= 1){
echo "Se a enviado información a su Email";
}
y sigue el problema.
Gracias :)!
Si aún te marca que el mail existe, entonces debe ser por que la coincidencia que le estas pasando en la variable de $email, debería existir, es mejor que vallas depurando tu código. Mostrando los pasos que va haciendo en las querys.
echo "SELECT COUNT(*) FROM boletín WHERE Email= '$email'"
Luego de esto verifica manualmente en la bd si realmente existe ese $email.
Me comentas.
hola muchas gracias por tu ayuda disculpa la demora trato de hacer lo que me dices pero me imprime SELECT COUNT(*) FROM boletín WHERE Email= '$email'", man no el numero de registros con el respectivo mail..
Gracias..
¿Te lo imprime así tal cual.. no reemplaza la variable de $mail?
debería verse el mail que le estas pasando por post en $email=$_POST["Email2"];
Es muy extraño que te aparezca eso. Favor confírmamelo.
como asi
Si es que lo imprimie así:
SELECT COUNT(*) FROM boletín WHERE Email= '$email'"
ya que debería ser así:
SELECT COUNT(*) FROM boletín WHERE Email= '[email protected]'"
No ...tampoco me imprime:.SELECT COUNT(*) FROM boletín WHERE Email= '[email protected]' y no me imprime 0 como debería de ser..
ojo que '[email protected]' era solo un ejemplo
Ahí debe salir el valor que recibes que le enviaste por post en :
$_POST["Email2"];
Ah si experto claro que es un ejemplo pero pese a que lo pongo con o sin ese mail reemplazándolo con uno existente, no me muestra  ningún resultado..
Gracias..
Cual es la collation de la tabla y la Charater set

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas