Duplicidad de registros

De nuevo por aquí para molestarle.

Tiempo atrás le pregunte por la duplicidad si el usuario registra 2 veces.

Por ejemplo se registra la carnicería pepito dirección av. La paz 35.

Bueno supongamos que este negocio cierra después de unos meses y en este mismo lugar se instala una farmacia lourdes dirección av. La paz 35. Como se puede ver la dirección es la misma pero son dos negocios diferentes.

Quisiera advertir al usuario que se va a registrar que ya existe un negocio en esa misma dirección y que nos envíe un email diciendo que es un nuevo negocio para eliminar el anterior. Esto lo tendría que hacer yo. ¿Es así?

Ahora he probado a hacer lo siguiente:

¿

?php
$empresa = $_POST['empresa'];
$cif = $_POST['cif'];
$usuario = $_POST['usuario'];
$passwd1 = $_POST['passwd1'];
$reppass = $_POST['rpass'];
$categorías = $_POST['categorías'];
$descripción = $_POST['descripción'];
$dirección = $_POST['dirección'];
$cod_postal = $_POST['cod_postal'];
$población = $_POST['población'];
$provincia = $_POST['provincia'];
$teléfono = $_POST['teléfono'];
$fax = $_POST['fax'];
$móvil = $_POST['móvil'];
$mail = $_POST['mail'];
$web = $_POST['web'];
$horario = $_POST['horario'];
$map_empresa = $_POST['$map_empresa'];
$payimgprn = $_POST['$payimgprn'];
$imagenprin = $_POST['$imagenprin'];
$fechareg = date('y-m-d');
$reqlen = strlen($empresa) * strlen($cif) * strlen($usuario) * strlen($passwd1) * strlen($reppass) * strlen($categorías) * strlen($descripción) * strlen($dirección) *
strlen($cod_postal) * strlen($población) * strlen($provincia) * strlen($teléfono) * strlen($fax) * strlen($móvil) * strlen($mail) * strlen($web) *
strlen($horario) * strlen($map_empresa) * strlen($payimgprn) * strlen($imagenprin) * strlen($fechareg);
if ($reqlen > 0) {
if ($passwd1 === $reppass) {
include ("conexión.php");
$b_user= mysql_query("SELECT mail FROM dato_empresa WHERE mail='$mail'");
if($b_user=0)
{
mysql_query("INSERT INTO dato_empresa (empresa, cif, usuario, passwd1, idcategoria, descripción, dirección, cod_postal, población, provincia, teléfono, fax, móvil, mail, web, horario, map_empresa, payimgprn, imagenprin, fechareg) VALUES('$empresa', '$cif','$usuario', '$passwd1', '$categorías'
, '$descripción', '$dirección', '$cod_postal', '$población', '$provincia', '$teléfono', '$fax', '$móvil',
'$mail', '$web', '$horario', '$map_empresa', '$payimgprn', '$imagenprin', '$fechareg')");
mysql_close($conexión);
echo ' se ha registrado exitosamente';
}else{
echo 'El nombre de usuario o el email ya esta registrado.';
}
}else{
echo 'por favor, introduzca dos contraseñas idénticas.';
}
} else {
echo 'por favor rellene todos los campos requeridos.';
}
?>

En este programa recibo los datos y hago 3 preguntas

1)Si los campos están vacíos de error

2)Si la contraseña no es igual al campo contraseña de verificacion correcta de error

3) Hago una consulta a la base de datos preguntando si el email no es igual.

Aquí quisiera agregar además que verifique la dirección.

Bueno el if de los campos están vacíos funciona, el de la contraseña también el problema es que cuando ingreso dos email iguales me lo registra (se ha registrado exitosamente)

Bueno nada más amigo.

1 Respuesta

Respuesta
1

Creo que tu error se encuentra es aquí

if($b_user=0)

debería ser

if($b_user==0)

en las condicionales se usan doble ==

Si persiste el problema verifica que te estés recibiendo la variable $mail. Imprime por ahí esa variable para verificar que llega al hacer el submit. Puesto que si no llega tu búsqueda siempre sera vacía.

Ok gracias mientras lo pruebo quisiera hacerle algunas preguntas debido a mi ignorancia en el tema:

Cuando el cliente se registra yo he puesto al final de la pagina un checkbox diciendo acepto los términos y las condiciones.

Este checkbox lo tengo que incluir en la base de datos?

En que parte debo chequear si el cliente lo ha marcado en la pagina de registro o en esta que esta aquí arriba.

y necesitaría incluir una validación del email osea que el usuario introduzca un email valido esto como se hace y en que parte de este programa tendría que ponerlo.

Una vez que el sitio este terminado hay que subirlo a un servidor para hacer unas pruebas que todo funciona bien es correcto.

Bueno no lo molesto más por el momento.

Muchas gracias

Y saludos

Para las validaciones en formulario te recomiendo paginas como esta.. son plugin que validan en tiempo real sin usar php ni nada solo js pero ya vienen programados.

http://abreo.co/8-excelentes-plugins-de-jquery-para-validar-formularios/

http://www.actualidadjquery.es/2010/10/25/formulario-con-validaci%C3%B3n-de-campos-en-jquery/

Yo he usado varios de esos plugin, son validaciones con estilos muy buenos en jquery, son fáciles de instalar y solo debes llamar a la librería e indicar el ID de cada campo. En fin son muy buenos no hay que programar nada.

Por otra parte en cuanto a tu pregunta del checkbox puedes validar en php. No es necesario guardar ese dato al menos que lo desees o lo necesites. Pero se supone que todo el que pase ese formulario es porque acepto las condiciones.

Entonces recbies tu checkbox

$condiciones=$_POST['condiciones'];

if($condiciones=='Acepto'){ Metes tus otras validaciones y tus funciones

}else{ echo '<script>alert('Debe Aceptar las Condiciones Para Continuar');</script>' ; }

Es solo una idea tambn lo puedes hacer con js.

Estimado buenos días,
Sigo teniendo problemas con la validación del email he
probado a cambiar == como me aconsejo.
he puesto un echo para ver si llega el valor del email y va bien. el problema
es que ahora cualquier valor que ingrese no lo registra porque dice que el
email es repetido.
if ($reqlen > 0) {
if ($passwd1 === $reppass) {
include ("conexión.php");
echo $mail;
$b_user= mysql_query("SELECT mail FROM
dato_empresa WHERE mail='$mail'");
echo $b_user;
if($b_user==0)
{
mysql_query("INSERT INTO dato_empresa
(empresa, cif, usuario, passwd1, idcategoria, descripción, dirección,
cod_postal, población, provincia, teléfono, fax, móvil, mail, web, horario,
map_empresa, payimgprn, imagenprin, fechareg, ipuser) VALUES('$empresa', '$cif','$usuario',
'$passwd1', '$categorías'
, '$descripción', '$dirección',
'$cod_postal', '$población', '$provincia', '$teléfono', '$fax', '$móvil',
'$mail',
'$web', '$horario', '$map_empresa', '$payimgprn', '$imagenprin', '$fechareg',
'$ipuser')");
mysql_close($conexión);
echo
' se ha registrado exitosamente';
$insertGoTo
= "Usuarioregistrado.php";
}else{
echo 'El nombre de usuario o el email ya
esta registrado.';
}
}else{
echo 'por favor, introduzca dos
contraseñas idénticas.';
}
} else {
echo 'por favor rellene todos los campos requeridos.';
}
?>
------------------------------------------------------------------------------------------------
este es el error que
muestran los echo y el email 1234 no existe en la base de datos
------------------------------------------------------------------------------------
1234Resource id #10El
nombre de usuario o el email ya esta registrado.
En la espera gracias
y saludos

Intenta no poner 0 sino vacío

if($b_user=='')
{

Hola,

He probado lo que me dijo pero sigo teniendo el mismo problema

1234 Resource id #10 (el 1234 seria el email que envío y me parece que resource id#10 es lo que me arroja en la pregunta cuando va a la base de datos si son iguales echo $b_user;

No se si el error está en la pregunta a la base de datos y no me está guardando nada.

Ojalá me pueda ayudar.

Gracias y saludos

Creo que el error lo tienes acá

$b_user= mysql_query("SELECT mail FROM
dato_empresa WHERE mail='$mail'");
echo $b_user;
if($b_user==0)
{

Intentalo de esta manera

$buscar= mysql_query("SELECT mail FROM dato_empresa WHERE mail='$mail'");
$arreglo=mysql_fetch_array($buscar);
$b_user=$arreglo[0];
if($b_user==0)
{

Estimado,

He puesto lo que me dijo pero sigo teniendo el problema.

Tengo un email registrado [email protected] y cuando lo vuelvo a ingresar me lo registra de nuevo. Así como si ingreso un email nuevo osea graba todos.

He puesto dos echo para la verificación; un echo de lo que he enviado del otro programa, y un echo de $b_user y los dos me muestran el mismo email osea [email protected] y después la respuesta de "se ha registrado correctamente".

He probado a cambiarlo por $b_user>0 pero así no graba nada me dice que el usuario o email ya registrados.

Es un gran dolor de cabeza, gracias por ayudarme.

En la espera de sus noticias

Saludos

Ok solucionado,
Hice lo siguiente:
$buscar= mysql_query("SELECT mail FROM dato_empresa WHERE mail='$mail'");
if (mysql_num_rows($buscar)==0)
{
Gracias, de todas maneras

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas