Mostrar como Tabla HTML los detalles de los campos de las tablas de una base de datos MySQL con PHP

Creo que es el título más largo que he usado en un post… “Mostrar como Tabla HTML los detalles de los campos de las tablas de una base de datos MySQL con PHP“… no encontré una mejor forma de resumirlo.

Hace poco tuve la necesidad de mostrar como tablas HTML los detalles de los campos (sus nombres, tipos, llaves, valores por defecto, etc) de las tablas de una base de datos MySQL en particular, utilizando PHP. Tomando la idea de David, la modifiqué y traduje según mis requerimientos (intentando dejar el script lo más general posible), y el resultado fué el siguiente código.

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8" />
<title>Detalles de las Tablas de una Base da Datos</title>
 
<style type="text/css">
body			{ font-family: Arial, Verdana, Sans; font-size: 14px; }
table.tabla-bd		{ border-right:1px solid #ccc; border-bottom:1px solid #ccc; }
table.tabla-bd th	{ background:#eee; padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; }
table.tabla-bd td	{ padding:5px; border-left:1px solid #ccc; border-top:1px solid #ccc; }
</style>
 
</head>
<body>
 
<?php
# Datos de Conexión a la Base de datos
# (Hay que ajustarlos a tus necesidades particulares)
$servidor  = 'miservidor';
$usuario   = 'miusuario';
$password  = 'miclave';
$basedatos = 'mibasededatos';
 
# Establecer la conexión a la Base de Datos
$conexion = mysql_connect($servidor,$usuario,$password);
mysql_select_db($basedatos,$conexion);
 
# Consulta SQL que devuelve los nombres de las tablas de la Base de Datos
$tablas = mysql_query('SHOW TABLES',$conexion) or die('Imposible mostrar tablas');
 
 
while($tabla = mysql_fetch_row($tablas)) {
 
	$nombreTabla = $tabla[0];
	echo '<h3>Tabla: ',$nombreTabla,'</h3>';
 
	# Consulta SQL que devuelve los campos de cada tabla
	$campos = mysql_query('SHOW COLUMNS FROM '.$nombreTabla) or die('Imposible mostrar campos de '.$nombreTabla);
 
	# Muestra como tabla HTML los detalles de los campos de la tabla correspondiente
	if(mysql_num_rows($campos)) {
		echo '<table class="tabla-bd" cellpadding="0" cellspacing="0"><thead><tr><th>Campo</th><th>Tipo</th><th>Nulo</th><th>Llave</th><th>Defecto</th><th>Extra</th></tr></thead><tbody>';
		while($detalles = mysql_fetch_row($campos)) {
			echo '<tr>';
			foreach($detalles as $detalle=>$valor) {
				echo '<td>',$valor,'</td>';
			}
			echo '</tr>';
		}
		echo '</tbody></table><br />';
	}
}
 
#Cerrar la conexión a la Base de Datos
mysql_close($conexion);
?>
 
</body>
</html>

¿Simple no? También podrías reutilizar el código anterior, por ejemplo: Si tienes una clase que encapsule el manejo de tus bases de datos, podrías usar el script anterior como método, y así invocarlo con un simple $basedatos->mostrarTablas(); … bueno, es sólo una idea.

6 thoughts on “Mostrar como Tabla HTML los detalles de los campos de las tablas de una base de datos MySQL con PHP”

  1. interesante y como aprendiz, puedo dudar de un detalle: quedaría expuesta la clave del servidor, dando así el acceso a cualquier malintencionado. Bueno hasta donde entiendo sería esto lo que pasaría, pero está muy bueno.

  2. Hola,
    yo he utilizado parte de tu código y ahora que lo tengo funcionando me gustaria añadir una especie de rowListener. Vamos que cuando pase el puntero por la fila de turno pueda ir a otra página u obtener el detalle.

    Alguna sugerencia??
    Gracias

    1. No es complicado, pues si en cada fila despliegas la clave (ID) de cada registro de la tabla, podrías crear un vínculo a otro archivo PHP usando un parámetro GET con la clave, que muestre los detalles del registro, o bien, hacer un llamado AJAX con JavaScript (o jQuery) para mostrar los datos de una manera más moderna.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>