Foros del Web » Programando para Internet » PHP »

Evitar Registros Duplicados

Estas en el tema de Evitar Registros Duplicados en el foro de PHP en Foros del Web. hola, hice un formulario y me ayudaron con el php, pero ahora necesito que el campo "dni" no se repita en la BD, aqui les ...
  #1 (permalink)  
Antiguo 23/09/2010, 17:03
Avatar de Weslyghost  
Fecha de Ingreso: septiembre-2010
Ubicación: Arequipa - Peru
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Evitar Registros Duplicados

hola, hice un formulario y me ayudaron con el php, pero ahora necesito que el campo "dni" no se repita en la BD, aqui les dejo el codigo


del formulario
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Registro de Lista</title>


</head>
<body bgcolor="#000000">
<div style="background: url('discoteca.jpg') repeat scroll 0% 0% transparent" align="center"><font color="#ffffff"></font>
<h2><font color="#ffffff" face="tahoma">Registrate y entra gratis todos los viernes*</font></h2><br />
<form method="GET" action="insertar.php" name="formContactos" onSubmit="return ValidarEnvio();">
<font color="#ffffff"><strong>Nombre</strong>&nbsp;&nbsp;
<input name="nombre" type="text" /><br />
<strong>Apellido</strong>&nbsp;&nbsp;<input name="apellido" type="text" /><br />
<strong>DNI</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="dni" maxlength="8" type="text"/><br />
<strong>E-mail</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="email" type="text" /><br />
<br /><input value="Registrar" name="submit" type="submit"></font></form><br />
<strong><font color="#ffffff" face="arial black" size="2px">*PREVIA PRESENTACION DE DNI</font></strong></div>
</body>
</html>
del PHP

Código:
<HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY bgcolor="#000000">
<?php
function Conectarse()
{
   if (!($link=mysql_connect("localhost","user","pass")))
   {
      echo "Error conectando a la base de datos.";
      exit();
   }
   if (!mysql_select_db("base_datos",$link))
   {
      echo "Error seleccionando la base de datos.";
      exit();
   }
   return $link;
}

$link=Conectarse();

	$nombre = $_GET['nombre'];
	$apellido = $_GET['apellido'];
	$dni = $_GET['dni'];
	$email = $_GET['email'];

	mysql_query("insert into lista (nombre,apellido,dni,email) values ('$nombre','$apellido','$dni','$email')",$link);

?>
<font color="#ffffff">
<h2><div align="center">Gracias por registrarte</div></h2>
<div align="center"><a href="lectura.php" target="blank_">Haz clic aqui si deseas ver la lista completa</a><br><br><br>
<a href="javascript: self.close ()">Cerrar esta Ventana</a></div>  
</BODY>
</HTML>
  #2 (permalink)  
Antiguo 23/09/2010, 17:08
Avatar de eZakto  
Fecha de Ingreso: julio-2008
Mensajes: 214
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Evitar Registros Duplicados

Antes de hacer el insert en la base de datos, primero debes hacer un select con el dni. En caso de no devolver resultados, quiere decir que el dni aún no ha sido registrado, y puedes proceder.

Saludos.
__________________
eZakto™
  #3 (permalink)  
Antiguo 23/09/2010, 17:11
Avatar de ylellan  
Fecha de Ingreso: mayo-2010
Ubicación: en un lugar de Veracruz
Mensajes: 432
Antigüedad: 14 años
Puntos: 36
Respuesta: Evitar Registros Duplicados

corazon antes de hacer la inserccion de datos verifica si existe alguno registro con ese campo y si es repetido, regresalo:

Código PHP:
<HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY bgcolor="#000000">
<?php
function Conectarse()
{
   if (!(
$link=mysql_connect("localhost","user","pass")))
   {
      echo 
"Error conectando a la base de datos.";
      exit();
   }
   if (!
mysql_select_db("base_datos",$link))
   {
      echo 
"Error seleccionando la base de datos.";
      exit();
   }
   return 
$link;
}

$link=Conectarse();

    
$nombre $_GET['nombre'];
    
$apellido $_GET['apellido'];
    
$dni $_GET['dni'];
    
$email $_GET['email'];
$b=mysql_query("select *from lista where dni='$dni'") or die ("Error: "mysql_error());
$num=mysql_num_rows($b);
if(
$num>0){
echo 
'<script>alert("Ya existe un user con ese dni");history.back(-1);</script>';
}else{
    
mysql_query("insert into lista (nombre,apellido,dni,email) values ('$nombre','$apellido','$dni','$email')",$link);

?>
<font color="#ffffff">
<h2><div align="center">Gracias por registrarte</div></h2>
<div align="center"><a href="lectura.php" target="blank_">Haz clic aqui si deseas ver la lista completa</a><br><br><br>
<a href="javascript: self.close ()">Cerrar esta Ventana</a></div>  
<?php}></BODY>
</
HTML>
  #4 (permalink)  
Antiguo 23/09/2010, 17:11
 
Fecha de Ingreso: abril-2005
Mensajes: 38
Antigüedad: 19 años
Puntos: 0
De acuerdo Respuesta: Evitar Registros Duplicados

asi quedaria el codigo viejo



Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Registro de Lista</title>


</head>
<body bgcolor="#000000">
<div style="background: url('discoteca.jpg') repeat scroll 0% 0% transparent" align="center"><font color="#ffffff"></font>
<h2><font color="#ffffff" face="tahoma">Registrate y entra gratis todos los viernes*</font></h2><br />
<form method="GET" action="insertar.php" name="formContactos" onSubmit="return ValidarEnvio();">
<font color="#ffffff"><strong>Nombre</strong>&nbsp;&nbsp;
<input name="nombre" type="text" /><br />
<strong>Apellido</strong>&nbsp;&nbsp;<input name="apellido" type="text" /><br />
<strong>DNI</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="dni" maxlength="8" type="text"/><br />
<strong>E-mail</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="email" type="text" /><br />
<br /><input value="Registrar" name="submit" type="submit"></font></form><br />
<strong><font color="#ffffff" face="arial black" size="2px">*PREVIA PRESENTACION DE DNI</font></strong></div>
</body>
</html>
del PHP

Código:
<HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY bgcolor="#000000">
<?php
function Conectarse()
{
   if (!($link=mysql_connect("localhost","user","pass")))
   {
      echo "Error conectando a la base de datos.";
      exit();
   }
   if (!mysql_select_db("base_datos",$link))
   {
      echo "Error seleccionando la base de datos.";
      exit();
   }
   return $link;
}

$link=Conectarse();

	$nombre = $_GET['nombre'];
	$apellido = $_GET['apellido'];
	$dni = $_GET['dni'];
	$email = $_GET['email'];
    
$S=mysql_query("SELECT dni FROM lista  WHERE dni='".$dni."' ",$link);
if( $R=mysql_fetch_array( $S ) ){
   ////no insertamos nada
}else{
//insertamos
	mysql_query("insert into lista (nombre,apellido,dni,email) values ('$nombre','$apellido','$dni','$email')",$link);

}

?>
<font color="#ffffff">
<h2><div align="center">Gracias por registrarte</div></h2>
<div align="center"><a href="lectura.php" target="blank_">Haz clic aqui si deseas ver la lista completa</a><br><br><br>
<a href="javascript: self.close ()">Cerrar esta Ventana</a></div>  
</BODY>
</HTML>
[/QUOTE]
  #5 (permalink)  
Antiguo 24/09/2010, 10:30
Avatar de Weslyghost  
Fecha de Ingreso: septiembre-2010
Ubicación: Arequipa - Peru
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Evitar Registros Duplicados

bueno el codigo ke modifico w4lck si funciona, es decir no ingresa los datos si el campo esta repetido pero no da ningun mensaje de error aunke no ingrese nada igual sale "gracias por registrarte" , en el codigo ke modifico ylellan pues no funciona es decir al enviar el formulario la siguiente pagina se queda en blanco sin respuesta alguna.
Entonces como hago para que aparesca un mensaje de error/alerta con el codigo de w4lck
  #6 (permalink)  
Antiguo 24/09/2010, 10:40
Avatar de ylellan  
Fecha de Ingreso: mayo-2010
Ubicación: en un lugar de Veracruz
Mensajes: 432
Antigüedad: 14 años
Puntos: 36
Respuesta: Evitar Registros Duplicados

solo tienes que poner un echo despues del if, mira:

Código PHP:
if( $R=mysql_fetch_array$S ) ){
  echo 
'<script>alert("tu mensaje");</script>';
}else{ 
y mi codigo si sirve, solo que me falto algo:

Código PHP:
$b=mysql_query("select *from lista where dni='$dni'",$link) or die ("Error: "mysql_error()); 
  #7 (permalink)  
Antiguo 24/09/2010, 12:57
Avatar de Weslyghost  
Fecha de Ingreso: septiembre-2010
Ubicación: Arequipa - Peru
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Evitar Registros Duplicados

ylellan i love u sooooooooooooooooooo much, no sabes lo mucho que me ayudaste muchas gracias... funciona perfectamente

Etiquetas: duplicados, registros
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 02:26.