Tema: FAQ's de PHP
Ver Mensaje Individual
  #154 (permalink)  
Antiguo 04/08/2005, 00:34
Avatar de jam1138
jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Tema: Registro de Usuarios / Base de Datos
Pregunta: ¿Cómo evitar guardar registros duplicados en mi BD?
Respuesta:

Siguiendo estos pasos:
  1. Obtener los datos que se quieren guardar.
  2. Buscarlos en la Base de Datos.
  3. Ver si hubo coincidencias. Para esto se usa la función mysql_num_rows() que devuelve el número de resultados de una consulta.
    1. Si: Evita que se guarde el registro
    2. 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'];
$passwordmd5($_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
$busquedamysql_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.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 01/07/2006 a las 03:43 Razón: Faltó cerrar unas comillas :-s