EstiloCSSTutoriales y tips en español

RSS

Métodos para conectarse a MySQL con PHP

Por Fernando Loor en . Actualizado: 22/12/2011. Visitado 561 veces. Compartir en LinkedIn

PobreExcelente 

Basado en 1 votaciones.

Fernando LoorFernando Loor, un ingeniero en Computación de la República del Ecuador, especializado en el trabajo web y multimedia con especial gusto por trabajos creativos. En sus tiempos libres se convierte en un colaborador de Estilocss.com.

Aprenda más en:
http://twitter.com/ferchoxlm

Clases y Métodos en PHP y SQL

Siguiendo con el tutorial Otra estructura para conectarse a MySQL con PHP, en este tutorial vamos a definir las clases de nuestro proyecto, recuerden que las clases hacen referencia a las tablas ya definidas en MySQL.

Para este ejemplo vamos a tener la siguiente tabla MySQL:

Tabla Usuario

  • idUsuario int (Clave Primaria)
  • nombrevarchar(50)
  • contrasenia varchar(50)

Para efecto del tutorial vamos a dejarlo con esos campos, obviamente ustedes pueden tener una infinidad de campos, dependiendo de lo que necesiten.

Lo siguiente es ya teniendo las clases Conexion y Query, vamos a crear la clase Usuario, que va a tener la siguiente codificación:

  1. <?php
  2. include_once('classQuery.php');
  3. class Usuario extends Query{
  4.    var $idUsuario = NULL;
  5.    var $nombre = NULL;
  6.    var $contrasenia = NULL;
  7.    function __construct(){ //constructor de la clase
  8.     parent::__construct();
  9.     parent::MET_conectar();
  10.    }//end construct
  11.    //metodos que explicaré abajo
  12.    //....
  13.    //....
  14. }// end class
  15. ?>

Inicialmente tendríamos esto, como en toda clase, al inicio referenciamos a la clase Query, y esta a su vez referencia a la clase conexion como ya vimos en el tutorial pasado, seguimos con la palabra reservada en php para las clases, esta es "class", ponemos el nombre de la clase, en este caso es Usuario, y usamos la palabra extends Query, para especificar que esta clase extiende de la clase Query, y que sus variables se pueden usar en esta clase, definimos los tres campos que teníamos en la tabla (idUsuario, nombre, contrasenia) y le damos un valor inicial de NULL,

Seguimos definiendo el constructor, para esto utilizamos la palabra reservada "parent", lo hacemos inicializando su constructor y ejecutando el método conectar ya vistos en el tutorial anterior.

Teniendo esto, empezamos creando los métodos, vamos a crear un método en el cual me devuelva todos los registros de la tabla, sería algo así:

  1. function MET_todosUsuarios(){   
  2.    $sql = 'SELECT * FROM Usuario';
  3.    $this->__set('sql',$sql);
  4.    $reg = parent::MET_select();
  5.    return $reg;   
  6. }//end function

Tenemos el método MET_todosUsuarios(), este método se encargara de retornarme un arreglo de todos los registros de la tabla, primero inicializamos una variable llamada $sql con la instrucción SQL respectiva a lo que queremos obtener, en este caso quiero todos los registros por eso uso el asterisco, seguido de esto, lo que hago es iniciar la variable $sql, ya que como extendemos de Query podemos manipular sus variables con los métodos get() y set(), ahora creamos una variable llamada $reg que es donde van a retornar los datos, utilizamos la palabra parent para referenciar que utilizaremos un método de la clase Query, en este caso será MET_select() ya visto en el tutorial anterior, con todos los valores ya puestos en la variable $reg, lo único que hacemos es retornarlo con la palabra return $reg;, y cerramos el método, así de sencillo ya tenemos un método que me retorna todos los valores,

Siguiendo el mismo estilo voy a poner el método para retornar un valor de la tabla, ya no todos los registros sino solo uno, sería algo así:

  1. function MET_usuarioPorId(){
  2.    $sql = 'SELECT nombre FROM Usuario WHERE idUsuario = 1';
  3.    //o si tienes un valor variable seria así:
  4.    //$sql = 'SELECT nombre FROM Usuario WHERE idUsuario = '.$idUsuario;
  5.    $this->__set('sql',$sql);
  6.    $reg = parent::MET_selectOne();
  7.    return $reg;   
  8. }//end function

Como vemos es bastante sencillo, si entendemos bien los métodos de la clase Query, es bastante parecida al anterior método, y la diferencia esta en la instrucción SQL, y en el método de Query que estamos utilizando en este caso MET_selectOne().

Para la inserción de datos tendríamos algo parecido a esto:

  1. function MET_insertarUsuario(){
  2.    $sql = 'INSERT INTO Usuario (nombre,contraseña) VALUES ("' . $this->nombre . '","' . $this->contrasenia. '")';
  3.    $this->__set('sql',$sql);
  4.    $flag = parent::MET_insert();
  5.    return $flag;
  6. }//end function

Lo único que hacemos es modificar la instrucción SQL, con las variables respectivas, en este caso (nombre y contrasenia), idUsuario no lo estamos ingresando porque en SQL puse una opción para que se auto incremente automáticamente cada vez que ingreso un registro, utilizamos lo mismo de las funciones pasadas y cambiamos al método MET_insert() de la clase Query, también vemos la nueva variable $flag, esta lo que me retorna es false si la inserción no se realizó con éxito, y obviamente true si se hizo con éxito, ya veremos como podemos utilizar esto posteriormente.

Así pondré el método para actualizar y borrar:

  1. function MET_actualizarUsuario(){
  2.    $sql = 'UPDATE Usuario SET nombre = "'.$this->nombre.'" ,contrasenia = "'.$this->contraseña.'" WHERE idUsuario = '.$this->idUsuario.'';
  3.    $this->__set('sql',$sql);   
  4.    $flag = parent::MET_update();
  5.    return $flag;  
  6. }//end function
  7. function MET_borrarUsuario(){
  8.    $sql = 'DELETE FROM Usuario WHERE idUsuario = '.$this->idUsuario.'';
  9.    $this->__set('sql',$sql);
  10.    $flag = parent::MET_delete();
  11.    return $flag;
  12. }//end function

Como podemos ver es bastante sencillo crear una clase en PHP, desde aquí podemos hacer cualquier consulta que necesitemos, solo tenemos que saber lo básico de SQL y listo.

Ahora veamos cómo puedo utilizar esta clase y sus métodos, siguiendo una estructura modularizada y ordenada, vamos a instaurar un nuevo nombre, sería la interface o un controlador bastante básico, la interface va a utilizar los métodos de la clase y en esta interface podemos realizar las operaciones que necesitemos mostrar, en este caso solo voy a utilizar el método para mostrar todos los registros de la tabla y las pondré en una tabla HTML:

Nota: recuerden que esto estaría en un nuevo archivo PHP, en el cual el nombre seria indiferente.

  1. function mostrarUsuarios(){
  2.    //Referenciamos a la clase Usuario con la direccion en nuestro proyecto
  3.    include_once('classUsuario.php');
  4.    //Creamos el objeto usuario y lo inicializamos  
  5.    $obj_usuario = new Usuario();
  6.    //Ejecutamos el metodo respectivo, en este caso MET_todosUsuarios
  7.    //La variable registros contiene los datos respectivos
  8.    $registros = $obj_usuario->MET_todosUsuarios();
  9.    //Decimos si $registros no es falso, osea si tiene datos  
  10.    if($registros){
  11.     //Creamos el tag html table antes del for
  12.     echo '<table>';
  13.     //Utilizamos la sentencia foreach, y decimos que $registros lo utilizaremos como $datos  
  14.     foreach($registros as $datos){
  15.     //Creamos la fila con el tag tr
  16.     echo '<tr>';
  17.     //A cada columna le damos un valor de los registros
  18.     echo '<td>'.$datos['nombre'].'</td>';
  19.     echo '<td>'.$datos['contrasenia'].'</td>';
  20.     echo '</tr>';
  21.     }
  22.     //Cerramos la tabla
  23.     echo '</table>';   
  24.    }else{
  25.     echo 'No hay usuarios';   
  26.    }   
  27. }

Así de sencillo ya aplicamos los métodos de la clase Usuario, ahora lo único que nos toca es utilizarla en el documento html, lo único que hacemos es poner el método que creamos y listo:

  1. <?php
  2.    include_once(\'MostrarUsuarios.php\');
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6.    <head>
  7.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8.     <title>Todos los Usuarios</title>
  9.    </head>
  10.    <body>
  11.     <?php mostrarUsuarios(); ?>
  12.    </body>
  13. </html>

Y así de sencillo tenemos un html libre de tanto código php, solo hacemos una pequeña llamada a una función y nos deberían salir todos los datos de la tabla sql.

Sigan viéndonos para la continuación del tutorial, nos tocaría ver formularios en HTML y como enlazarlos con el método insert de la clase.

Dios los bendiga.

El 15 de julio de 2011, Edwin Estrada dijo:

Excelente artículo

El 18 de febrero de 2012, Fernando Benavides dijo:

Excelente articulo, pero me gustaria que me explicaras un poco mas lo del uso de this y set.

Haga clic en cualquier etiqueta para ver más tutoriales

EstiloCSS.com | Creative Commons License | Otro sitio más de Iván Bustoshttp://www.ivanbustos.com/Miami, FL 33166United States.