Realimentar array de dos dimensiones

Ya hemos visto como se puedo realimentar un vector de una sola dimensión usando formularios, observa ahora este código y aprende a realimetar un vector de dos dimensiones (lee atentamente los comentarios del código)

Realimentar un vector de dos dimensiones

<?php
//erasmus.php
// Si acabamos de empezar crearé una base de datos con dos alumnos.
$db=NULL;
//Aquí sumularemos una base de datos para estudiantes erasmus

//Si se esta rellenando la tabla, recupero los datos antiguos y añado los nuevos.
//Los datos antiguos se pasan siempre que se envia el formulario.
//La nomenclatura elegida es nombre0, apellido0, telefono0,nombre1,apellido1, telefono1...
//luego puedo acceder a ellos concatenadoles un contador a la parte fija.  

if (isset($_POST['nombre']) && ($_POST['nombre']<>""))
	{
	$cantidad=(count($_POST)/3)-1;			//Cuento los alumnos ya insertados (Vienen en $_POST)
	for ($i=0;$i<$cantidad; $i++)           //Como cada alumno tiene tres campos tendré que dividir entre 3
	    	{					//Concateno los índices para formar nombre0,nombre1....
		    $n="nombre".$i;
		    $d="direccion".$i;
	     	    $t="telefono".$i;
		    $db[$i][0]=$_POST[$n];		//Reconstruyo $db, $db será un array de dos dimensiones
		    $db[$i][1]=$_POST[$d];
		    $db[$i][2]=$_POST[$t];
		}
	$db[$i][0]=$_POST['nombre'];
	$db[$i][1]=$_POST['direccion'];			//añado el nuevo Erasmus
	$db[$i][2]=$_POST['telefono'];
	}
//En caso de pulsarse el botón enviar sin lenar el nombre, simplemento recumeramos los datos antiguos
elseif (isset($_POST['nombre']) && ($_POST['nombre']==""))
	{
	$cantidad=(count($_POST)/3)-1;	
	for ($i=0;$i<$cantidad; $i++)           //Como cada alumno tiene tres campos tendré que dividir entre 3
	    	{ 
		    $n="nombre".$i;
		    $d="direccion".$i;
	     	    $t="telefono".$i;
		    $db[$i][0]=$_POST[$n];		//Reconstruyo $db
		    $db[$i][1]=$_POST[$d];
		    $db[$i][2]=$_POST[$t];
		}
	}

/**
 * @retorna void
 * @descripción Muestra por pantalla un formulario con los Erasmus
 * Escribiremos los name de cada input con la terminación variable para poder acceder a ellos después.
 */

function mostrar_erasmus($db)
	{
	$n=count($db);
	if ($n>0)
	{
		echo "<h2>Listado de Erasmus españoles en el Mundo</h2>
		<p> Puede borrar un estudiante borrando su nombre o también puede actualizar la información</p>";
	for ($i=0;$i<$n; $i++) 
		{
		    $erasmus = $db[$i];
		    $nombre = $erasmus[0];
		    $direccion = $erasmus[1];
		    $telefono = $erasmus[2];
		    if ($nombre<>"")
			    {
			    echo "<fieldset>";
			    echo "<ol>";
			    echo "<li>";
			    echo "<b>Nombre:</b><input type=\"text\" value=\"$nombre\" name=\"nombre$i\" size=\"8\" required/>";
			    echo "<b>Direcc.:</b><input value=\"$direccion\" name=\"direccion$i\" size=\"20\"/>";
			    echo "<b>Telefono:</b><input type=\"text\" value=\"$telefono\" name=\"telefono$i\" size=\"14\" />";
		    	    echo "</li>";
		 	    echo "</ol>";
		    	    echo "</fieldset>";
		    	    }
		}
	echo "<input type=\"submit\" value=\"Actualizar/borrar datos\" />";
	}
	echo "</form>";
	}
/**
 * @retorna void
 * @descripción Muestra por pantalla parte del formulario para pedir datos
 */
function pedir_erasmus()
	{
	?>
	<fieldset> 
	<ol>
	<li><label>Nombre:</label></li><li><input type="text" name="nombre" autofocus required/></li>
	<li><label>Direccion:</label></li><li><input type="text" name="direccion" /></li>
	<li><label>Telefono:</label></li><li><input type="tel" name="telefono" /></li>
	<li><input type="submit" value="Enviar" /></li>
	</ol>
	</fieldset>
	<?php
	}
	?>
<!DOCTYPE html>
<html>
	<head> 
		<meta name="description" content="Simulacion base de datos en PHP"/> 
		<meta name="keywords" content="Bases de datos, PHP"/> 
		<meta name="author" content="Juan Luis Mora Blanco" /> 
		<meta charset="UTF-8"/> 
		<link rel="stylesheet" href="styles.css" type="text/css" media="screen" /> 
		<title>Simulacion de acceso a Base de datos con PHP</title> 
	</head> 
	<body>
	<form action="erasmus.php" method="post">
	<section>
		
		<h2>Isertar nuevos Erasmus</h2>
		<p>Recuerde que debe rellenar el nombre (El nombre actúa como clave primaria) para se produzca la inserción</p>
		<?php
		pedir_erasmus();	//Muestro el formulario para pedir erasmus
		mostrar_erasmus($db);  //Muestro la tabla de los erasmus
		?>
		
	</section>
</body>
</html>
?>

Ejercicio

  1. Haz para que no inserte duplicados atendiendo al nombre

Originally posted 2011-02-16 09:17:17.

Deja un comentario