Agenda en vector unidimensional con PHP

Vamos a hacer una agenda usando un array asociativo en PHP. Para ello se entregan ya implementadas las siguientes funciones:

  • Funcion para mostrar un contacto
  • Función para mostrar todos los contactos de una agenda
  • Función que borra un contacto

agenda.php

<?php
/*
Disponemos de un array asociativo almacenado en $agenda.
El índice de cada elemento de este array es el nombre del contacto.
El número de teléfono es el contenido del vector
*/
$agenda = array("Manolo"=>678985678,
		"Benito"=>689345687,
		"Andres"=>675324312,
		"Francisco"=>674321543,
		"José"=>698099089);

/*
 Pintar_cabecera: Esta función pintará la cabecera de una tabla donde se muestran los contactos
*/
function pintar_cabecera()
	{
	?>
	<table align="center" border="1"  width="750px">
	<thead>
		<tr>
		<th>Nombre</th>
		<th>Teléfono</th>
		</tr>
	</thead>
	<tbody>
	<?php 
	}

/* función que pinta el fin dela tabla para la agenda, no recibe parámetros*/
function pintar_fin_tabla()
	{
	?>
	</tbody>
	</table>
	<?php
	}
	
	
/*
Función mostrar persona, es una función que muestra un contacto en la tabla.
Será utilizada para mostrar la agenda persona por persona
*/
function mostrar_persona($nombre,$telefono)
	{
	echo "<tr><td>";
	echo $nombre;
	echo "</td><td>";
	echo $telefono;
	echo "</td></tr>";	
	}

/*Función que muestra toda la tabla, recibe un vector tipo agenda y llama a mostrar persona por cada elemento*/
function mostrar ($agenda)
	{
	pintar_cabecera();
	foreach ($agenda as $indice=>$persona)
		{
		mostrar_persona($indice,$persona);
		}
	pintar_fin_tabla();
	}

/*Función que busca una persona en la agenda, si la encuetra la muestra por pantalla
Recibe un vector tipo agenda y un nombre*/
function buscar($agenda,$nom)
	{
	echo "<p>Resultado para la busqueda de $nom</p>";
	pintar_cabecera();
	foreach ($agenda as $nombre=>$telefono)
		if ($nom==$nombre)
			mostrar_persona($nombre,$telefono);
	pintar_fin_tabla();
	}

/*
Función que borra una persona de la agenda. si la encuetra
Recibe un vector tipo agenda y un nombre, retorna la agenda borrada
*/
function borrar($agenda,$nom)
	{
	echo "<p>Resultado para el borrado de $nom</p>";
	if (isset ($agenda[$nom]))  //Si exite $agenda['pepito'] entonces borra pepito
		unset($agenda[$nom]);
	return $agenda;
	}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<title>Gestor de agenda</title>
<meta charset="UTF-8">
<meta name="description" content="Gestionar una agenda de contactos con PHP"/>
<meta name="keywords" content="contactos, agenda, php"/>
<meta name="author" content="Juan Luis Mora Blanco" />
<meta name="robots" content="index,follow,noarchive">
</head>
<body>
<?php
	mostrar($agenda);  //Aquí se ponen las llamadas correspondientes para que se lanzen las funciones
?>
</body>
</html>

Preguntas

  1. Explica como funciona la función de borrado
  2. Llama a la función de borrado para que borre a Manolo y haz un posterior mostrado para comprobar que la agenda se ha borrado
  3. Modifica el mostrar persona para que muestra las filas de colores alternativos
  4. Añade una función que busque por telefonos
  5. Haz un mostrar que reciba como parámetros una agenda y un carácter, entonces mostrará sólo los nombres que empiezan por ese carácter. Recuerda que a los elementos de una cadena de caracteres se puede acceder como si de un vector se tratase, por tanto el primer caracter de cada contacto es $nombre[0]. A la nueva función se la llamaría así: mostrar_por($agenda,$caracter);
  6. Crea una nueva función que borre toda la agenda y pruebala (puedes usar una global)
  7. La tabla podría estar mejor pintada:
    • Modifica el pintar cabecera para que muestre el caption.
    • Modifica la función pintar_fin_tabla para que pinte el footer (Con el mismo contenido que la cabecera). No olvides probarla
  8. Automatiza el proceso de mostrar la cabecera, creando una función que pinte una cabecera personalizada con los parámetro $title y $description

Cambiar filas de una tabla usando una variable estática

<?php
function cambia_color()
	{
	static $valor;  
	if ($valor==FALSE)
		{
		$valor=TRUE;
		return "blue";
		}
	else
		{
		$valor=FALSE;
		return "red";
		}
	}

function pinta_tabla($lineas,$columnas)
	{
	echo "<table align=\"center\">";
	for ($i=0;$i<$lineas;$i++)
		{
		echo "<tr bgcolor=\"".cambia_color()."\">";
		for ($j=0;$j<$columnas;$j++)
			{
			echo "<td>Casilla:".$i.$j."</td>";
			}
		echo "</tr>";
		}
	}
pinta_tabla(10,5);
?>

Originally posted 2011-02-22 09:19:37.

One Response to “ Agenda en vector unidimensional con PHP ”

  1. […] Ordena la agenda de teléfonos que usamos en la práctica: Agenda en vector unidimensional con PHP […]

Deja un comentario