Tema:
Registro de Usuarios / Base de Datos
Pregunta:
¿Cómo evitar guardar registros duplicados en mi BD?
Respuesta:
Siguiendo estos pasos:
- Obtener los datos que se quieren guardar.
- Buscarlos en la Base de Datos.
- Ver si hubo coincidencias. Para esto se usa la función mysql_num_rows() que devuelve el número de resultados de una consulta.
- Si: Evita que se guarde el registro
- No: Guarda...
Código PHP:
<?php
/* Para este código (simplemente ilustrativo) suponemos se recive un formulario dónde se ingresó un "usuario" y un "password" para ser agregados en la BD.
Queremos evitar haya 2 usuarios iguales.
Nuestra Tabla tendría que tener 3 campos:
- id (INT autonumerico)
- usuario (VACHAR)
- password (VACHAR)
*/
// Paso 1: Recibimos el formulario:
$user= $_POST['user'];
$password= md5($_POST['password']); // www.php.net/md5
// Obviamente conectamos
mysql_connect("servidor", "usuario", "contraseña");
mysql_select_db("nombre_dela_BD");
// Paso 2: Hacemos la consulta a la Tabla por el usuario
$busqueda= mysql_query("SELECT usuario FROM tabla WHERE usuario='$user'");
// Paso 3: vemos si hubo coincidencias
if(mysql_num_rows($busqueda)>0) { // ó " !=0 " como se quiera ver
// Inciso a:
echo "El nombre de usuario no se encuentra disponible. Por favor intente con otro.<br>";
echo "<a href=\"javascript:history.back()\">Regresar</a>";
} else {
// Inciso b:
mysql_query("INSERT INTO tabla(usuario, password) VALUES ('$user', '$password')");
echo "$user ha sido registrado.";
}
Igual faltarían cosas como valiaciones y demás, pero son otros temas.