Temario

Este es la parte 5 de 6 del tutorial sobre "Registros de usuarios en Php y Mysql con validación de campos y activación por mail", y no está demás recordar lo que hemos visto hasta el momento:

Ya nos falta poco para terminar el tutorial, asi que ánimo.

Registrar Usuarios en PHP

En este tema vamos a aprender como insertar usuarios en nuestra base de datos desde php después de haber validado los datos introducidos por el usuario en el formulario.

Lo primero que tenemos que saber es ¿cómo se inserta un registro con MySQL?. Esta pregunta la podemos aclarar con el siguiente esquema:

MySQL:
  1. --Caso 1
  2. INSERT INTO nombretabla (campo1, campo2, campo3)
  3. VALUES(‘valor1’,’valor2’,’valor3’);
  4. --Caso 2
  5. INSERT INTO nombretabla VALUES(‘valor1’,’valor2’,’valor3’);

Como podéis ver, en principio, hay dos maneras de hacerlo, una en la que informamos todos los campos que vamos a insertar (puede que nos lleve a menos confusiones) y otra en la que solo informamos los valores. Nosotros vamos a usar el primer caso.

Nombretabla: Pondremos la tabla en la que vayamos a insertar el registro. En el caso de este tutorial, utilizamos la tabla users_temp.
Values: Lo que va en el paréntesis de los valores o VALUES depende de los campos que tengamos en nuestra tabla. Si tenemos 3 campos, pondremos 3 valores, si tenemos 5 campos, pondremos 5 valores.

En el caso de nuestra tabla users_temp, tenemos los campos (id_usersTemp, nombre, usersTemp, password, email, fecAlta). Por lo tanto todos estos campos los tenemos que tener en cuenta a la hora de dar de alta con la sentencia INSERT, aunque bien es cierto, que el campo id_usersTemp se puede descartar de la sentencia puesto que lo declaramos "Autonumeric", y nos incluirá un número en el campo que insertemos (suma automáticamente 1 al último número introducido).

Bien, ahora ya sabemos como insertar un registro en nuestra base de datos con MySQL, pero le toca el turno a conectar nuestro archivo PHP con la base de datos.

Para hacer esta conexión tendremos que abrir de nuevo el archivo "formulario.php" y añadir una función que se llamará insertarReg. Vamos a ver el código y después lo paso a explicar:

PHP:
  1. //FUNCION PARA INSERTAR EL REGISTRO EN LA TABLA users_temp
  2. function insertarReg($name_, $username_, $password1_, $email_){
  3.         /*Teneis que declarar las variables $servidor, $usuario,$password y
  4.           $sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
  5.         $servidor = "localhost";
  6.         $usuario = "root";
  7.         $password = "";
  8.         $sdb = "prueba1";
  9.        
  10.         $ilink3=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
  11.         mysql_select_db($sdb,$ilink3);
  12.        
  13.         $inserta= "insert into users_temp (nombre,usersTemp,password,email,fecAlta) values ('$name_','$username_','$password1_','$email_',CURDATE())";
  14.         $resultado3=mysql_query($inserta,$ilink3) or die (mysql_error());
  15.        
  16.         if (!$resultado3)
  17.           return false;
  18.         else{
  19.             return true;
  20.            
  21.         }
  22. }

Lo que primero podemos ver es que la función recoge una serie de parámetros: name_, username_, password1_, email_ . Estos parámetros son exactamente los que se van a introducir en la tabla users_temp.

Ya dentro de la función vemos como declaramos unas variables, estos son los datos de acceso a nuestra base de datos: servidor, usuario, password y base de datos a la que nos conectamos.

PHP:
  1. $servidor = "localhost";
  2. $usuario = "root";
  3. $password = "";
  4. $sdb = "prueba1";

En vuestro caso, lo tendréis que modificar con los datos de acceso que hayáis configurado.

Lo siguiente que vemos es la conexión con la base de datos, de la siguiente forma:

PHP:
  1. $ilink3=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
  2. mysql_select_db($sdb,$ilink3);

Con esta línea ya hemos hecho la conexión entre PHP y MySql, ahora la función se va a encargar de ejecutar una sentencia (INSERT), que en nuestro caso se trata de insertar un registro, tal y como hemos visto al principio del tutorial.

Para hacerlo un poco más estructurado y limpio, guardamos la sentencia INSERT dentro de una variable.

PHP:
  1. $inserta= "insert into users_temp (nombre,usersTemp,password,email,fecAlta) values ('$name_','$username_','$password1_','$email_',CURDATE())";
  2. $resultado3=mysql_query($inserta,$ilink3) or die (mysql_error());

En estas líenas de código lo único que tengo que destacar es que en la parte VALUES de la sentencia, hemos puesto los valores que nos pasan en la función y que no hace falta poner en dicha sentencia el campo id_usersTemp ya que como hemos comentado anteriormente, es autonumérico.

Para comprobar si se ha dado de alta un nuevo usuario correctamente, lo único que tendremos que hacer es validar la variable resultado3, como podemos ver en el siguiente código:

PHP:
  1. if (!$resultado3)
  2.         return false;
  3. else
  4.         return true;

Ya tenemos la función creada, ahora ¿Qué falta?. Pues es sencillo, lo único que falta es hacer la llamada a esa función pasándole los parámetros nombre, usuario, password e email que previamente hemos validado (Ver tutorial Registro de usuarios en PHP y mySQL con validación y activación por mail).

Esta llamada a la función insertarReg la tendremos que posicionar justo después de que la validación de los datos introducidos por el usuario hayan sido satisfactorias.

Os voy a mostrar el código resumido para que veais mejor donde habría que colocar la función:

HTML:
  1.     <div class="wrapper">   
  2.         <div class="section">
  3.             <?php if(!isset($status)): ?>
  4.                 <!--resto de código: Error en validación
  5. …….
  6.                     …….
  7.                 -->
  8.             <?php else: <?>
  9.                 <!--resto de código: La validación ha sido correcta
  10. …….
  11.                     …….
  12.                 -->
  13.             <?php endif; ?>
  14.         </div>
  15.     </div>
  16. </body>

Recordar que la variable status es la que controla si los datos se han validado correctamente, estando vacía en caso de que haya algún error, y siendo valor 1 en caso de que no haya errores..

Así que donde tendríamos que poner la llamada a la función está bastante clara como seguramente habéis pensado. Por lo tanto el código resumido quedaría de la siguiente manera:

HTML:
  1.     <div class="wrapper">   
  2.         <div class="section">
  3.             <?php if(!isset($status)): ?>
  4.                 <!--resto de código: Error en validación
  5. …….
  6.                     …….
  7.                 -->
  8.             <?php else: <?>
  9.             <?php
  10.                 //INCLUIMOS LA LLAMADA A LA FUNCION
  11.                 //PARA INSERTAR EL REGISTRO.
  12.                 insertarReg($nameValue, $usernameValue, $passwordValue, $emailValue); ?>
  13.             <?php endif; ?>
  14.         </div>
  15.     </div>
  16. </body>

Llegados a este punto, aquí tenéis el código con todo lo que llevamos hasta ahora:

Código Fuente 1

Si vamos al navegador y ponemos la URL donde se encuentra formulario.php, en mi caso sería, "http://localhost/PRUEBA1/formulario.php" nos aparecerá el formulario que rellenaremos con datos válidos.

Una vez todo correcto si le damos a "Enviar Formulario" y hemos puesto todos los datos sin errores de validación, veréis que hay algo que no cuadra y es que aunque los datos se hayan introducido correctamente (lo puedes comprobar en phpMyAdmin accediendo a nuestra tabla users_Temp de la base de datos PRUEBA1) el usuario no tiene ni idea de lo que ha pasado, es decir, tanto si ha ido bien como si ha ido mal, ahora mismo tal y como esta el código no obtiene información del estado de su petición.

Asi que vamos a modificar un poco el código para solucionar esto. Lo primero que tenemos que tener claro es que las funciones pueden devolver valores, y como bien hemos codificado ya en ella, hemos puesto 2 returns (true y false).

Estos valores que devuelve la función nos servirán para verificar si se ha insertado el registro en la base de datos o no. Si es true, significa que se ha insertado y si es false ha habido algún problema. Así que jugaremos con este valor añadiendo una condición en la llamada a insertarReg.

El código quedaría de la siguiente manera:

PHP:
  1. <?php 
  2. if(insertarReg($nameValue, $usernameValue, $passwordValue, $emailValue)):?>
  3.         <h1>Registro introducido correctamente en la base de datos</h1>
  4. <?php  else: ?>
  5.         <?php if ($respuesta == 1) ?>
  6.             <h1 style="font-color: red">No se ha podido insertar el registro en nuestra base de datos</h1>
  7. <?php endif; ?>

Hemos incluido en un if la función para insertar el Registro en la base de datos. Si la función devuelve true entrará en el IF, por el contrario si devuelve false irá por el else. Así que lo que hemos hecho es, si todo ha ido bien, informar al usuario que el registro se ha introducido correctamente y si ha ido mal, informar con color rojo que no se ha podido insertar el registro en la base de datos.

Información registro usuario en php

Ahora ya tenemos completo el registro, informando al usuario tanto si se ha realizado correctamente como si no, como podéis ver en la imagen arriba.

El código completo lo tenéis en el siguiente enlace:

Código Fuente 2

¿Qué hemos aprendido?

En este tutorial, hemos aprendido a realizar altas de usuarios en MySql desde PHP gracias a un formulario.

En el siguiente tutorial que publicaremos en breve, veremos como mandar un mail desde PHP para activar usuario con el método GET.

Temario

Posts Relacionados