Simular una base de datos con ficheros y vectores

Como hemos visto en la entrada anterior, podemos almacenar las tablas de mysql en un fichero y volcarlas en vectores para trabajar con ellas. Profundizando más en el algoritmo de la entrada anterior, podemos hacer una pequeña librería de funciones para trabajar con ficheros provenientes de Mysql. Recordar que usaremos estos ficheros.
Se muestra aquí como quedaría la librería, la llamaremos bd_vector.php

Juego de funciones para simular una base de datos

<?php
/*
Función que recibe el nombre de un fichero y retorna el fichero volcado lina a linea en un vector.
*/
function leer_fichero($nombre)
    {
    $fichero = file($nombre);
    for ($i=0;$i<count($fichero);$i++)
        $fichero[$i]=chop($fichero[$i]);
    return $fichero;
    }
    
/*
Función que recibe el nombre de un fichero donde tenemos almacenado datos procedentes de una tabla mysql
y retorna el fichero volcado tupla a tupla y elemento a elemento en un vector en un vector.
Dependiendo la tabla que pidamos para leer tendremos que leer más o menos caracteres.
*/   
function cargar_tablas($tabla)
	{
	$aux=leer_fichero($tabla);
	if ($tabla=="city")
		{
		foreach($aux as $elemento)
			$leidos[]= sscanf($elemento, "%d %s %s %s %d");
		return $leidos;
		}
	elseif ($tabla=="country")
		{
		foreach($aux as $elemento)
	   		$leidos[] = sscanf($elemento, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s");
		return $leidos;
		}
	else
		{
		foreach($aux as $elemento)
   			$leidos[] = sscanf($elemento, "%s %s %s %s ");
		return $leidos;
		}
	}
/*
Función que recibe una tupla y la muestra como fila de una tabla
*/
function mostrar_tupla($tupla)
	{
		echo "<tr>";
		foreach($tupla as $campo)
			echo "<td>$campo</td>";
		echo "</tr>";
	}
/*
Función que recibe una tabla y la muestra por pantalla
*/
function mostrar_tabla($tabla)
	{
	echo "<table>";
	foreach ($tabla as $tupla)
		{
		if (isset($tupla))
			mostrar_tupla($tupla);
		}
	echo "</table>";
	}
/*
Función que recibe una base de datos dentro de una matriz y la muestra completa por pantalla
*/
function mostrar_bd($bd)
	{
	foreach ($bd as $tabla)
		mostrar_tabla($tabla);
	}
	
?>

Ejercicios

  1. Entiende como funciona la librería, y crea un fichero gestor_bd.php, donde se incluirá la librería y desde donde se lanzarán códigos como este
  2. <?php
    include("bd_vector.php");
    $bd['ciudades']=cargar_tablas("city");           //Aquí creo la base de datos
    $bd['paises']=cargar_tablas("country");
    $bd['idiomas']=cargar_tablas("laguage");
    mostrar_bd($bd); //muestro la base de datos.
    //De esta forma mostrariamos el país con mayor Esperanza de vida
    $mayor=0;
    foreach ($bd['paises'] as $pais)
    	{	
    	if ($pais[7]>$mayor)
    		{
    		$mayor=$pais[7];
    		$pais_mayor=$pais;
    		}	
    	}
    echo $pais_mayor[2];
    ?>
    
  3. Muestra solamente los países, luego solamente los idiomas
  4. Cual es el país con más población
  5. Haz que las tablas se pinten de colores alternos
  6. Muestra la población de España
  7. Cuantas ciudades tenemos en España
  8. ¿Cuantos países tenemos?
  9. ¿Cuantos lenguas distintas tenemos (Idea.- Si vamos metiendo todos los lenguajes (nombre) en un array y luego aplicamos array_unique lo podremos hacer.)
  10. Muestra los códigos de países en minúsculas
  11. Intentemos simular un join, busca el nombre completo del país para cada ciudad con este código ESP

Originally posted 2011-02-28 16:14:11.

Deja un comentario