Consultar una base de datos MySQL desde CodeIgniter 4 – Cuarta Parte

A este nivel ya estamos aptos para aprender a mostrar datos desde una base de datos, tipo MySQL, en una Vista. En esta parte del tutorial te explico cómo consultar una base de datos MySQL con CodeIgniter 4.


Nota: Yo estoy suponiendo que ya sabemos trabajar con Bases de Datos, por eso no entro en muchos detalles al respecto. Puedes revisar mi post sobre Querys y Comandos Útiles de MySQL Server.


En nuestra Vista, debemos adicionar algunos elementos que veamos el funcionamiento de las consultas a la base de datos. La página resultante nos puede quedar así:

La vista

Tengamos lista la base de datos en MySQL. Yo la llamé ECOMMERCE y le he colocado una tabla llamada USERS que tiene la siguiente estructura:

Conectar a CodeIgniter con una Base de Datos


Debemos editar el archivo de configuración app/Config/Database.php, y escribirle nuestra información de conexión a la BD. El mio ha quedado así:

Para efectos de nuestro aprendizaje, puedes crear dentro de MySQL un usuario con todos los privilegios, de la siguiente forma:

CREATE USER ‘superusuario’@’localhost’ IDENTIFIED BY ‘la contraseña’;
GRANT ALL PRIVILEGES ON *.* TO ‘superusuario’@’localhost’;
FLUSH PRIVILEGES;

(Ten cuidado con las comillas cuando copies en tu sistema estos comandos)


Nota: Por seguridad, el motor de base de datos MySQL no permite realizar operaciones desde un desarrollo con el usuario root.


Podemos consultar a la base de datos desde el mismo controlador, pero lo recomendable es respetar la arquietectura MVC, y hacer la consulta desde el Modelo y pasamos los datos a la Vista, por medio del Controlador. Pero por ahora hagamos la consulta desde el Controlador.

Ahora nuestro «encabezado.php» tiene este código:

<body>
<header>
<div class="encabezado">
<table>
<tr>
    <td colspan="3">
      <form method="post" action="<?php echo base_url('public/miapp/busqueda');?>">
        <input type="text" name="criterio">
        <input type="submit" value='BUSCAR'>
      </form>
<tr>
    <td><a href="<?php echo base_url('public/miapp/ascendente'); ?>"> ORDENAR ASC</a></td>
    <td><a href="<?php echo base_url('public/miapp/descendente'); ?>"> ORDENAR DESC</a></td>
    <td><a href="<?php echo base_url('public/miapp/restaura_lista');?>">Restaurar vista</a></td>
</table>
</div>
</header>
<br><br><br><br><br>

Nuestro archivo «miapp.php» también tiene cambios, y ahora tiene este código:

<table>
   <tr>
      <td><b>NOMBRE</td><td><b>CORREO</td>
      <?php
              foreach ($result as $row) {
                   echo "<tr>"; 
                                    echo "<td>".$row['name']."<td>".$row['email'];
                      }
      ?>
</table>

Consultar una base de datos MySQL desde CodeIgniter 4


Viene la consulta a la BD. Ahora nuestro controlador «Miapp.php» ha sido modificado así:

<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\ContactModel;

class Miapp extends BaseController
{
    function __construct(){
        $db = \Config\Database::connect();
        $this->data = $db->query("SELECT name, email FROM USERS");
}

public function index()
{
       $query1 = $this->data;
       $datos['result'] = $query1->getResultArray();
       echo view('head');
       echo view('encabezado');
       echo view('miapp', $datos);
       echo view('piedepagina');
  }
}

?>

 

El controlador en este caso merece más explicación. Tenemos una función principal, index(), que es la que carga la página inicial o principal (ya lo sabemos). Ahí, en su variable $query1, cargamos los datos consultados de la BD en forma de array con el método getResultArray().

También tenemos una función construct(), que se encarga de crear un objeto para poder usarlo rn cualquier parte de la clase. Ese objeto es la consulta a la base de datos

Bien, al cargar la página debemos obtener algo como esto:

 

Ya está, pero la lista generada está algo desordenada. Vamos a asignarle una función al hipervínculo ORDENAR ASC, para generar una consulta a la BD ordenada por orden alfabético. Entonces este sería el código del controlador:

<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\ContactModel;

class Miapp extends BaseController
{
    function __construct(){
      $db = \Config\Database::connect();
      $this->data = $db->query("SELECT name, email FROM USERS");
      $this->data2 = $db->query("SELECT name, email FROM USERS ORDER BY name ASC");
}

public function index()
{
    $query1 = $this->data;
    $datos['result'] = $query1->getResultArray();
    echo view('head');
    echo view('encabezado');
    echo view('miapp', $datos);
    echo view('piedepagina');
}

public function ascendente()
{
    $query2 = $this->data2;
    $datos2['result'] = $query2->getResultArray();
    echo view('head');
    echo view('encabezado');
    echo view('miapp', $datos2);
    echo view('piedepagina');
 }
}

?>

Y ahí está:

consultar una base de datos mysql

Nota: la direcciones de correos son ficticias. Me las inventé.

Debo resaltar a la función construct(), porque sin ella tendríamos que crear el objeto data y data2 dentro de la función index() y ascendente(), y en todas las funciones que tengamos. Es decir, sin la función construct() tendríamos que repetir el código $db = \Config\Database::connect(); dentro de cada función.

Te comparto el código completo del Controlador de esta clase con todas las demás funciones completas, en este archivo: Miapp.php.zip

En nuestra siguiente sección veremos cómo hacer la consulta desde el Modelo, como debe ser.

 

< TERCERA PARTE       QUINTA PARTE >


Valora este artículo:

Consultar una base de datos MySQL desde CodeIgniter 4
5,0 rating based on 12.345 ratings
Overall rating: 5 out of 5 based on 1 reviews.

 

Nombres
Email
Titulo
Calificanos
Contenido

 

Super

★★★★★
“ Genial, está mejor que esos videos en Youtube Esperamos más clases”
- José Fernando Bomba
Comparte esto en
Publicado en CodeIgniter.