Ahora implementaremos el listado completo de la tabla articulos y recuperaremos la descripción del rubro que se encuentra en la otra tabla.
Tenemos que utilizar el comando select y la cláusula join para el emparejamiento con la tabla rubros.
El código completo de la página es:
pagina1.php
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Listado de artículos</title> <style> .tablalistado { border-collapse: collapse; box-shadow: 0px 0px 8px #000; margin: 20px; } .tablalistado th { border: 1px solid #000; padding: 5px; background-color: #ffd040; } .tablalistado td { border: 1px solid #000; padding: 5px; background-color: #ffdd73; } </style> </head> <body> <?php $mysql = new mysqli("localhost", "root", "", "base1"); if ($mysql->connect_error) die("Problemas con la conexión a la base de datos"); $registros = $mysql->query("select ar.codigo as codigoart, ar.descripcion as descripcionart, precio, ru.descripcion as descripcionrub from articulos as ar inner join rubros as ru on ru.codigo=ar.codigorubro") or die($mysql->error); echo '<table class="tablalistado">'; echo '<tr><th>Código</th><th>Descripción</th><th>Precio</th><th>Rubro</th></tr>'; while ($reg = $registros->fetch_array()) { echo '<tr>'; echo '<td>'; echo $reg['codigoart']; echo '</td>'; echo '<td>'; echo $reg['descripcionart']; echo '</td>'; echo '<td>'; echo $reg['precio']; echo '</td>'; echo '<td>'; echo $reg['descripcionrub']; echo '</td>'; echo '</tr>'; } echo '<table>'; $mysql->close(); ?> </body> </html>
Creamos alias para los campos que tienen el mismo nombre en las tablas de articulos y rubros. También creamos alias para las dos tablas con las que trabajamos.
En el from indicamos la tabla principal que estamos consultando que es la tabla articulos y luego con la cláusula inner join procedemos a indicar el nombre de la tabla relacionada y los dos campos por los que se emparejan: ru.codigo=ar.codigorubro
Luego dentro del while debemos hacer referencia a los alias que hemos creado:
while ($reg = $registros->fetch_array()) { echo '<tr>'; echo '<td>'; echo $reg['codigoart']; echo '</td>'; echo '<td>'; echo $reg['descripcionart']; echo '</td>'; echo '<td>'; echo $reg['precio']; echo '</td>'; echo '<td>'; echo $reg['descripcionrub']; echo '</td>'; echo '</tr>'; }
En el navegador obtenemos una salida similar a esta:
Podemos no utilizar alias y acceder por medio de un índice numérico a cada columna de los campos que recupera el select:
$registros=$mysql->query("select ar.codigo as codigoart, ar.descripcion as descripcionart, precio, ru.descripcion as descripcionrub from articulos as ar inner join rubros as ru on ru.codigo=ar.codigorubro") or die($mysql->error); echo '<table class="tablalistado">'; echo '<tr><th>Código</th><th>Descripción</th><th>Precio</th><th>Rubro</th></tr>'; while ($reg = $registros->fetch_array()) { echo '<tr>'; echo '<td>'; echo $reg[0]; echo '</td>'; echo '<td>'; echo $reg[1]; echo '</td>'; echo '<td>'; echo $reg[2]; echo '</td>'; echo '<td>'; echo $reg[3]; echo '</td>'; echo '</tr>'; } echo '<table>';
Como vemos ahora hacemos referencia a cada elemento por medio de un subíndice numérico que indica la posición del campo en el select: echo $reg[0];
La primer posición es la cero, luego sigue la uno y así sucesivamente.
NO PODEMOS indicar en el subíndice una cadena con el carácter punto: echo $reg['ar.descripcion'];
Copiar el contenido de este cuadro de texto al VS Code y almacenarlo en la carpeta c:\xampp\htdocs con un nombre con extensión php.
luego abrir el navegador (Chrome, FireFox, IExplorer etc.) y en la barra de direcciones tipear:
http://localhost/pagina1.php (o el nombre del
archivo que le dió)