martes, 16 de julio de 2013

Hacer un Sistema de Registro de Usuarios en PHP y MySQL incluyendo un campo autoincremental

Hola amig@s,

Realizando pruebas en PHP con MYSQL para un proyecto de una maratón, he encontrado un código básico de registro en PHP y MYSQL que realiza un insert en una tabla en concreto. El código original lo pueden encontrar aqui: http://web.tursos.com/como-hacer-un-sistema-de-registro-de-usuarios-en-php-mysql/.

La particularidad de este proyecto es que por cada usuario registrado se debía generar un único identificador, es decir, cuando un usuario se registra en el formulario, se le asigna un ID y así por cada registro. Luego mediante consultas SQL se asocia el nombre del usuario y otros datos con su ID.

Utilizando la opción AUTO_INCREMENT de MYSQL podemos decirle a la bbdd a la hora de crear la tabla que este campo que definimos como AUTO_INCREMENT será gestionado por ella y que por cada registro, generará un numero siguiendo un patrón o una secuencia. En oracle se llaman secuencuales y se llaman con la sentencia .NEXTVAL.

Este es el script para crear la tabla:

CREATE TABLE 'usuarios' (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  'usuario' VARCHAR(20) NOT NULL,
  'password' VARCHAR(10) NOT NULL,
  'nombre' VARCHAR(20) NOT NULL,
  'apellido' VARCHAR(20) NOT NULL,
  'email' VARCHAR(30) NOT NULL,
  'facebook' VARCHAR(30) NOT NULL,
  'twitter' VARCHAR(30) NOT NULL,
  PRIMARY KEY  ('id')
)

Como pueden ver, el ID no puede ser nulo y tiene tiene el parámetro AUTO_INCREMENT al final de la definición del campo. Definimos aparte la PK ID para que sea único.

Recordar que para crear la tabla pueden utilizar (si su hosting lo permite) la herramienta PHPMYADMIN.

Luego creamos un fichero para definir los parámetros de conexión a nuestra bbdd MYSQL, por ejemplo conexion.php:

<?php

// dirección del servidor de bbdd, si es nuestro hosting, lo dejamos como localhost
define('DB_SERVER','localhost');
// nombre de la instancia
define('DB_NAME','TU_BASE_DE_DATOS');
// usuario de bbdd
define('DB_USER','TU_USUARIO');
// contraseña de bbdd
define('DB_PASS','TU_CLAVE');

    $con = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
    mysql_select_db(DB_NAME,$con);

?>

Por ultimo creamos un fichero php en donde utilizaremos el código de inserción y el html para mostrar al usuario:

<?php
session_start();
// aqui definimos el fichero que utilizaremos para la conexion a la bbdd
include_once "conexion.php";

?>
<html>
<head>
<title>Ejemplo de formulario de registro en PHP+MYSQL</title>
<style>
*{
font-size: 14px;
font-family: sans-serif;
}
form.registro{
   background: none repeat scroll 0 0 #F1F1F1;
   border: 1px solid #DDDDDD;
   margin: 0 auto;
   padding: 20px;
   width: 278px;
}
form.registro div {
   margin-bottom: 15px;
   overflow: hidden;
}
form.registro div label {
   display: block;
   float: left;
   line-height: 25px;
}
form.registro div input[type="text"], form.registro div input[type="password"] {
   border: 1px solid #DCDCDC;
   float: right;
   padding: 4px;
}
form.registro div input[type="submit"] {
   background: none repeat scroll 0 0 #DEDEDE;
   border: 1px solid #C6C6C6;
   float: right;
   font-weight: bold;
   padding: 4px 20px;
}
.error{
color: red;
   font-weight: bold;
   margin: 10px;
   text-align: center;
}
</style>
</head>
<body>
<form action="" method="post" class="registro">
<div><label>Usuario:</label>
<input type="text" name="usuario"></div>
<div><label>Clave:</label>
<input type="password" name="password"></div>
<div><label>Repetir Clave:</label>
<input type="password" name="repassword"></div>
<div><label>Nombre:</label>
<input type="text" name="nombre"></div>
<div><label>Apellido:</label>
<input type="text" name="apellido"></div>
<div><label>Email:</label>
<input type="text" name="email"></div>
<div><label>Perfil Facebook:</label>
<input type="text" name="facebook"></div>
<div><label>Perfil Twitter:</label>
<input type="text" name="twitter"></div>
<div>
<input type="submit" name="enviar" value="Registrar"></div>
</form>
</body>
</html>

<?
if(isset($_POST['enviar']))
{
    if($_POST['usuario'] == '' or $_POST['password'] == '' or $_POST['repassword'] == '')
    {
        echo 'Por favor llene todos los campos.';
    }
    else
    {
        $sql = 'SELECT * FROM usuarios';
        $rec = mysql_query($sql);
        $verificar_usuario = 0;

        while($result = mysql_fetch_object($rec))
        {
            if($result->usuario == $_POST['usuario'])
            {
                $verificar_usuario = 1;
            }
        }

        if($verificar_usuario == 0)
        {
            if($_POST['password'] == $_POST['repassword'])
            {
                $usuario = $_POST['usuario'];
                $password = $_POST['password'];
                $sql = "INSERT INTO usuarios (usuario,password,nombre,apellido,email,facebook,twitter) VALUES ('$usuario','$password','$nombre','$apellido','$email','$facebook','$twitter')";
                mysql_query($sql);

                echo 'Usted se ha registrado correctamente.';
            }
            else
            {
                echo 'Las claves no son iguales, intente nuevamente.';
            }
        }
        else
        {
            echo 'Este usuario ya ha sido registrado anteriormente.';
        }
    }
}

Este es el aspecto que tiene el formulario una vez terminado:



Recordemos que el campo ID lo gestiona la bbdd por lo que no es necesario incluirlo en el INSERT.

Espero que les resulte útil este código.

Saludos.




No hay comentarios:

Publicar un comentario