Foros del Web » Programando para Internet » PHP »

(Consulta) Evitar registros duplicados en una BD con PHP

Estas en el tema de (Consulta) Evitar registros duplicados en una BD con PHP en el foro de PHP en Foros del Web. Que tal gente del Foro!! Antes que nada, gracias por toda la info ya que me ha servido muchísimo para llegar hasta donde llegué. No ...
  #1 (permalink)  
Antiguo 03/10/2013, 07:38
Avatar de andreslado  
Fecha de Ingreso: octubre-2013
Ubicación: Ensenada, Buenos Aires
Mensajes: 2
Antigüedad: 10 años, 7 meses
Puntos: 0
Pregunta (Consulta) Evitar registros duplicados en una BD con PHP

Que tal gente del Foro!!
Antes que nada, gracias por toda la info ya que me ha servido muchísimo para llegar hasta donde llegué.
No soy experto ni nada por el estilo, pero me encomendaros hacer una web para cargar datos y el tema es el siguiente...
Necesito saber como puedo evitar que se carguen datos duplicados desde el código PHP.
Todo viene de un formulario que hasta ahora lo único que pude hacer es que si el DNI está repetido, no permita la carga, pero necesito tambien que no deje cargar el teléfono, el domicilio y el nombre.
Les paso el código que tengo funcionando ahora con el dni:

<?php
include ('funciones2.php');
//uso de la funcion verificar_usuario()
if (verificar_usuario())
{

}
else
{
//si el usuario no es verificado volvera al formulario de ingreso
header('Location:index.php');
}
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
body {
background-color: #069;
}
</style>
</head>

<body>
<p><img src="logo-web.png" width="343" height="90" />
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center"><?php
require_once('funcion.php');
conectar('localhost','root','', 'prueba');

//Recibir
$nombre = strip_tags($_POST['nombre']);
$dni = strip_tags($_POST['dni']);
$telefono = strip_tags($_POST['telefono']);
$direccion = strip_tags (($_POST['direccion']));
$zona = strip_tags(($_POST['zona']));
$casilla = strip_tags(($_POST['casilla']));
$estadocasilla = strip_tags(($_POST['estadocasilla']));
$comprobante = strip_tags(($_POST['comprobante']));
$recibo = strip_tags(($_POST['recibo']));
$beneficiario = strip_tags(($_POST['beneficiario']));
$factura = strip_tags(($_POST['factura']));
$ordendepago = strip_tags(($_POST['ordendepago']));
$expediente = strip_tags(($_POST['expediente']));
$urgencia = strip_tags(($_POST['lista']));
$estado = strip_tags(($_POST['estado']));
$notas = strip_tags(($_POST['notas']));
$usuario = strip_tags (($_SESSION['usuario']));


$query = @mysql_query('SELECT * FROM usuarios WHERE dni="'.mysql_real_escape_string($dni).'"');
if($existe = @mysql_fetch_object($query))
{
echo 'El DNI '.$dni.' ya existe.';
}

else{
$meter = @mysql_query('INSERT INTO usuarios (nombre, dni, telefono, direccion, zona, casilla, estadocasilla, comprobante, recibo, beneficiario, factura, ordendepago, expediente, urgencia, estado, notas, usuario) values ("'.mysql_real_escape_string($nombre).'", "'.mysql_real_escape_string($dni).'", "'.mysql_real_escape_string($telefono).'", "'.mysql_real_escape_string($direccion).'", "'.mysql_real_escape_string($zona).'", "'.mysql_real_escape_string($casilla).'", "'.mysql_real_escape_string($estadocasilla).'" , "'.mysql_real_escape_string($comprobante).'", "'.mysql_real_escape_string($recibo).'", "'.mysql_real_escape_string($beneficiario).'", "'.mysql_real_escape_string($factura).'", "'.mysql_real_escape_string($ordendepago).'", "'.mysql_real_escape_string($expediente).'", "'.mysql_real_escape_string($urgencia).'", "'.mysql_real_escape_string($estado).'", "'.mysql_real_escape_string($notas).'", "'.mysql_real_escape_string($usuario).'")');

if($meter)
{
echo 'Usuario registrado con exito';
}else{
echo 'Hubo un error en el registro.';
}
}

?>
<br/>
<form name="form1" method="post" action="registrar.php">
<p>
<label>
<div align="center">
<div align="center">
<input type="submit" name="Volver" id="Volver" value="Volver">
</div>
</div>
</label>
</p>
</form>&nbsp;</p>
<div align="center"></div>
<form id="form2" name="form2" method="post" action="salir.php">
<label>
<div align="center">
<input type="submit" name="salir" id="salir" value="Salir" />
</div>
</label>
</form>
<p>&nbsp;</p>
</body>
</html>

Ahora necesito agregarle que tampoco me deje cargar en la base de datos si el teléfono, la dirección o el nombre y apellido están ya registrados.
Desde ya les agradezco y espero que puedan ayudarme.

Saludos!
  #2 (permalink)  
Antiguo 03/10/2013, 10:18
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: (Consulta) Evitar registros duplicados en una BD con PHP

En tu consulta agrega los demás campos a buscar:

query = @mysql_query('SELECT * FROM usuarios WHERE dni="'.mysql_real_escape_string($dni).'" OR telefono ="'.mysql_real_escape_string($telefono ).'" OR direccion ="'.mysql_real_escape_string($direccion ).'"' );///etc
  #3 (permalink)  
Antiguo 03/10/2013, 13:59
Avatar de andreslado  
Fecha de Ingreso: octubre-2013
Ubicación: Ensenada, Buenos Aires
Mensajes: 2
Antigüedad: 10 años, 7 meses
Puntos: 0
Pregunta Respuesta: (Consulta) Evitar registros duplicados en una BD con PHP

Cita:
Iniciado por ocp001a Ver Mensaje
En tu consulta agrega los demás campos a buscar:

query = @mysql_query('SELECT * FROM usuarios WHERE dni="'.mysql_real_escape_string($dni).'" OR telefono ="'.mysql_real_escape_string($telefono ).'" OR direccion ="'.mysql_real_escape_string($direccion ).'"' );///etc
Que tal! Gracias por la respuesta.
Eso ya lo intenté ya que efectivamente sería la solución a todo.
El tema es que necesito que la respuesta si alguno de esos campos están repetidos, me diga "Que" campo está repetido.
Ya que si lo dejo por defecto como está, me va a decir que el DNI está repetido cuando capaz que no es así.
La pregunta en realidad sería: ¿Como puedo configurar este script para que cuando alguno de los campos esté repetido, el echo me indique cuál de los campos son los que ya están cargados?

Saludos y espero que puedan ayudarme! Se que no es algo muy complicado, pero como ya dije, no soy ni programador ni nada y me estoy tratando de dar maña como puedo! je!

Etiquetas: configuración-php
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 08:52.