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 tal motivo no entro en muchos detalles al respecto. Si gustas, 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铆:

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 鈥榮uperusuario鈥橜鈥檒ocalhost鈥 IDENTIFIED BY 鈥榣a contrase帽a鈥;
GRANT ALL PRIVILEGES ON *.* TO 鈥榮uperusuario鈥橜鈥檒ocalhots鈥;
FLUSH PRIVILEGES;

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.

 

Name
Email
Review Title
Rating
Review Content

 

Super

★★★★★
Genial, est谩 mejor que esos videos en Youtube Esperamos m谩s clases
- Jos茅 Fernando Bomba
Comparte esto en
Publicado en Desarrollo Web.