Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I. OBJETIVOS
Que el estudiante:
• Desarrolle la capacidad de utilizar eficazmente matrices para almacenar valores y acceder a sus valores en
los scripts PHP.
• Sea capaz de utilizar estructuras de control repetitivas para trabajar con datos procedentes de una matriz
escalar o asociativa.
• Adquiera el dominio de matrices unidimensionales y multidimensionales utilizando ciclos o lazos
repetitivos anidados.
• Haga uso de diversas funciones para manejo de matrices con PHP.
Matrices en PHP
Una matriz o arreglo es un tipo de dato compuesto que permite almacenar bajo un mismo nombre un
conjunto de valores que pueden ser de tipos de datos diferentes. Cuando se define una matriz se hace de
forma similar a las variables escalares con la diferencia de que la asignación de valores se debe realizar a cada
una de las posiciones del arreglo. También se puede utilizar en lugar de la asignación directa estructuras de
control como ciclos repetitivos o funciones para asignar varias posiciones de una vez, como veremos más
adelante.
1 / 23
Guía # 3: Matrices en PHP
b) Por el número de dimensiones de la matriz. Esto es, cuántos índices son necesarios para hacer
referencia a un elemento específico.
Luego, si deseamos mandar a imprimir el tercer elemento de este arreglo, tendríamos que escribir:
echo $numero[2];
Ahora bien, si lo que deseamos es imprimir todos los elementos de la matriz, la mejor solución sería utilizar
una sentencia repetitiva como esta:
for($i=0; $i<count($numeros); $i++){
echo $numeros[$i] . "<br />\n";
}
b) Matrices asociativas
Estas matrices también son conocidas como tablas hash. Se caracterizan por
utilizar una cadena de caracteres como índice de la matriz. Lo normal es
utilizar una cadena que permita asociar fácilmente el índice con el valor que
almacena el elemento.
Por ejemplo, se puede crear una matriz llamada $monedas con cuatro
elementos y asociar valores a cada uno de estos elementos de la siguiente
forma:
$monedas["El Salvador"] = "dólar";
$monedas["Guatemala"] = "quetzal";
$monedas["Costa Rica"] = "colón";
$monedas["Honduras"] = "lempira";
a) Matrices unidimensionales
Es una matriz que utiliza un único índice para hacer referencia a todos los elementos de la misma. Este índice
puede ser escalar o asociativo.
b) Matrices multidimensionales
Es una matriz que necesita utilizar más de un índice para hacer referencia a un elemento específico. De todas
las matrices multidimensionales, las más utilizados son las de dos dimensiones. Los arreglos de tres o más
dimensiones no se utilizan tanto debido a que son más difíciles de comprender y manejar.
El siguiente bloque de código muestra la definición de un arreglo multidimensional (con índices asociativos) y
luego manda a imprimir en la ventana del navegador uno de sus elementos:
<?
$pais=array
(
"espana" =>array
(
"nombre"=>"España",
"lengua"=>"Castellano",
"moneda"=>"Peseta"
),
"francia" =>array
(
"nombre"=>"Francia",
"lengua"=>"Francés",
"moneda"=>"Franco"
)
);
echo $pais["espana"]["moneda"]; //Imprime en la ventana del navegador: "Peseta"
?>
La función array() se utiliza para crear una variable de tipo matriz y asignarle los valores que va a contener en
una sola instrucción. En tanto que, con range() se puede crear una matriz que comienza desde el
$valorinicial y termina con el $valorfinal.
Donde,
$mi_array, es la matriz o arreglo del que se extraerán los elementos.
$variable1, $variable2, … , $variablen, son las variables escalares independientes en las que
se asignarán los diferentes elementos de la matriz.
sizeof(): También se utilize para obtener el número de elementos de una matriz. Por ejemplo:
for($i=0; $i<sizeof($matriz); $i++)
next(): Devuelve el valor del elemento siguiente al actual (si existe), avanzando el puntero interno una
posición. En caso de que el elemento actual sea el último de la matriz, devuelve false.
prev(): Devuelve el valor del elemento anterior al actual (si existe), retrocediendo el puntero interno una
posición. En caso de que el elemento actual sea el primero, devuelve false.
current(): Devuelve el valor del elemento situado en la posición actual del cursor. Si la matriz está vacía o no
hay más elementos, la función devolverá false.
key(): Devuelve el índice del elemento situado en la posición actual del cursor. Si la matriz está vacía, o no
hay más elementos, devuelve la constante NULL.
reset(): Sitúa el cursor interno de la matriz en el primer elemento de la misma y devuelve el valor de dicho
elemento. Si la matriz está vacía, la función devuelve el valor false.
end(): Avanza el cursor interno de la matriz hasta el último elemento de la misma y devuelve el valor de
dicho elemento. Si la matriz está vacía devuelve false.
each(): Se usa para recorrer matrices (especialmente matrices asociativas), devolviendo simultáneamente el
índice y el valor asociado al índice actual de un elemento. Además, avanza el puntero interno de la matriz
hacia el siguiente elemento. Si el puntero interno apunta a la última posición de la matriz, la función devuelve
false.
list(): Asigna una lista de variables en una sola operación. Suele utilizarse en combinación con la función
each().
OBSERVACIÓN: El argumento de todas las funciones anteriores es una matriz. A excepción de la función
list().
Ejemplo:
$matriz = array("Primavera", "Verano", "Otoño", "Invierno");
do{
$index = key($matriz);
$value = current($matriz);
echo $index . ": " . $value . "<br>\n";
}while(next($matriz));
foreach
PHP4 y PHP5 incluyen la instrucción foreach, tal como Perl y algunos otros lenguajes. Esta instrucción
permite recorrer los elementos de una matriz de una forma sencilla. La instrucción permite obtener cada uno
de los valores almacenados en el arreglo y asignarlos automáticamente en una variable para trabajar con ellos
dentro del bloque de instrucciones del foreach. También es posible obtener el índice si acaso, se ha utilizado
un matriz asociativa. Hay dos sintaxis; la segunda es una extensión menor, pero útil de la primera:
foreach(expresion_array as $value) //sentencias;
foreach(expresion_array as $key => $value) //sentencias;
La primera forma recorre el array dado por expresion_array. En cada iteración, el valor del elemento
actual se asigna a $value y el puntero interno del array se avanza en una unidad (así en la siguiente
iteración, se estará apuntando de forma automática el elemento siguiente).
La segunda manera hace lo mismo, salvo que la clave del elemento actual será asignada a la variable $key en
cada iteración.
Notas:
• Cuando foreach comienza su primera ejecución, el puntero interno a la lista (array) se reinicia
automáticamente al primer elemento del array. Esto significa que no se necesita llamar a reset() antes de
un bucle foreach.
• Hay que tener en cuanta que foreach trabaja con una copia de la lista (array) especificada y no la lista en si,
por ello el puntero de la lista no es modificado como en la construcción each.
foreach($a as $v) {
print "Valor actual de \$a: $v.\n";
}
foreach($a as $v) {
print "\$a[$i] => $v.\n";
$i++;
}
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";
foreach($a as $v1) {
foreach ($v1 as $v2) {
print "$v2\n";
}
}
foreach(array(1, 2, 3, 4, 5) as $v) {
print "$v\n";
}
?>
IV. PROCEDIMIENTO
Indicaciones: Asegúrese de digitar el código de los siguientes ejemplos que se presentan a continuación.
Tenga en cuenta que el PHP Designer no es compilador solamente un editor. Por lo tanto, los errores de
sintaxis los podrá observar únicamente hasta que se ejecute el script cargando la página en el navegador de su
preferencia.
Ejercicio #1: El siguiente ejemplo muestra una lista de estudiantes y su nota registrada en una matriz
asociativa.
Archivo 1: notasalumnos.php
<?php
$nombres = array(
'Mariela Salazar' => 6.4,
'Mauricio López' => 6.3,
'Carlos Ávalos' => 7.5,
'Jennifer Sánchez' => 6.2,
'Jonathan Calderón' => 7.5,
'Pedro Cruz' => 5.8,
'Morena Barraza' => 6.0,
'Beatriz Hernández' => 5.0,
'Alberto Figueroa' => 9.5,
'Julia García' => 8.5,
'Roxana Vásquez' => 8.2,
'Oscar Hernández' => 8.5,
'Lorena Linares' => 4.8,
'Ramiro Zepeda' => 5.5,
'Luis Peñate' => 9.6,
'José Menjivar' => 6.0,
Archivo 2: notasalumnos.css
h1 {
font:bold 20pt "Myriad Pro","Bodoni MT Black",Rockwell,Helvetica,sans-serif;
color:#033006;
text-align:center;
}
table {
width:20%;
position:relative;
margin-left:50%;
left:-10%;
border-collapse:collapse;
border:8px outset DarkSlateBlue;
}
tr {
th {
font:bold 12pt "Lucida Sans","Century Gothic",Helvetica,sans-serif;
color:Gold;
line-height:1.4em;
text-align:center;
border:1px solid DarkSlateBlue;
background-color:rgb(0,100,100);
}
td {
font:normal 11pt "Century Gothic","Lucida Sans",Helvitica,sans-serif;
color:rgb(60,0,90);
}
.cum {
text-align:center;
}
Ejercicio #2: El siguiente ejercicio permite crear una serie de letras o números dependiendo de la selección
del usuario en un control de menú desplegable. Para crear la serie generado se utiliza la función range(),
proporcionando todos argumentos: el valor inicial y final de la serie, así como, el desplazamiento para la
secuencia de cada elemento.
Archivo 1: series.php
<!DOCTYPE html>
<html lang="es">
<head>
<title>Uso de la función range</title>
<link type="text/css" rel="stylesheet" media="screen" href="css/series.css" />
</head>
</body>
<header>
<h1>Generación de series con función de matrices</h1>
</header>
<section>
<article>
<form action="series.php" method="POST">
<fieldset>
<legend>Tipos de series</legend>
<label for="seltipo">Escoja el tipo de serie:</label>
<select name="seltipo">
<option value="AlfabetoMin" selected="selected">Alfabeto en
minúsculas</option>
<option value="AlfabetoMay">Alfabeto en mayúsculas</option>
<option value="NumerosPares">Números pares</option>
<option value="NumerosImpares">Números impares</option>
</select><br />
<input type="submit" name="enviar" value="Enviar">
</fieldset>
</form>
<?php
if(isset($_POST['enviar'])){
$tiposecuencia = isset($_POST['seltipo']) ? $_POST['seltipo'] : "";
switch($tiposecuencia){
case "AlfabetoMin":
$inicio = 'a';
$final = 'z';
$salto = '1';
break;
case "AlfabetoMay";
$inicio = 'A';
$final = 'Z';
$salto = '1';
break;
case "NumerosPares":
$inicio = '0';
$final = '50';
$salto = '2';
break;
case "NumerosImpares":
$inicio = '1';
$final = '50';
$salto = '2';
break;
}
$secuencia = range($inicio,$final,$salto);
foreach($secuencia as $letra)
echo "<span class=\"caracter\">" . $letra . "</span> \n";
}
?>
</article>
</section>
</body>
</html>
Archivo 2: series.css
h1 {
font: bold 20pt "Myriad Pro","Bodoni MT Black",Rockwell,Helvetica,sans-serif;
color: Brown;
text-align: center;
text-shadow: 5px 2px 2px rgba(90,42,35,0.75);
}
fieldset {
width:36%;
position:relative;
margin-left:50%;
left:-18%;
background-color:Lavender;
}
legend {
font:bold 12pt "Lucida Sans","Calisto MT","Bodoni MT",Helvetica,sans-serif;
color:Indigo;
}
label {
font:600 10.5pt "Lucida Sans","Bodoni MT",Helvetica,sans-serif;
color:DarkGreen;
}
.caracter {
font:600 10pt "Lucida Sans Unicode",Georgia,Helvetica,sans-serif;
color:Indigo;
}
Ejercicio #3: El siguiente ejemplo muestra cómo recorrer y mostrar una matriz bidimensional asociativa
con ciclos foreach para mostrar en forma ordenada la información de cada registro en una tabla.
Archivo 1: registro.php
<!DOCTYPE html>
<html lang="es">
<head>
<title>Mi agenda</title>
<link type="text/css" rel="stylesheet" media="screen" href="css/registros.css" />
</head>
<body>
<header>
<h1>Estudiantes registrados</h1><hr />
</header>
<?php
$alumnos = array(
"registro 1" => array(
"carnet" => 'EG070425',
"nombre" => 'Mario Alexander',
"apellido" => 'Erazo Gutiérrez',
"telefono" => '2221-0916'
),
"registro 2" => array(
"carnet" => 'RD070316',
"nombre" => 'Edgard Antonio',
"apellido" => 'Rodríguez Dur´n',
"telefono" => '2221-0673'
),
"registro 3" => array(
"carnet" => 'FS060546',
"nombre" => 'Gerardo Arturo',
"apellido" => 'Fonseca Saravia',
"telefono" => '2226-1539'
),
"registro 4" => array(
"carnet" => 'SG063125',
"nombre" => 'Ana Lilian',
"apellido" => 'Santana Godínez',
"telefono" => '2292-0425'
),
"registro 5" => array(
"carnet" => 'EJ052105',
"nombre" => 'Clara Asunción',
"apellido" => 'Escamilla Jovel',
"telefono" => '2221-1385'
),
"registro 6" => array(
"carnet" => 'EJ052105',
"nombre" => 'Pedro José',
"apellido" => 'Cruz Rodríguez',
"telefono" => '2256-6340'
)
);
//Imprimir los elementos de la matriz
echo "<section>\n";
echo "\t<article>\n";
echo "\t\t<table>\n";
echo "\t\t\t<tr><th>Campo</th><th>Dato</th></tr>\n";
foreach($alumnos as $registro => $datos){
echo "\t\t\t<tr><th colspan=\"2\">$registro</th></tr>\n";
foreach($datos as $indice => $valor){
echo "\t\t\t<tr><td>$indice</td><td>$valor</td></tr>\n";
}
}
echo "\t\t</table>\n";
echo "\t</article>\n";
echo "</section>\n"
?>
</body>
</html>
Archivo 2: registros.css
h1 {
font:bold 22pt "Bodoni MT Black","Cooper Black",Helvetica,sans-serif;
text-align:center;
color:rgb(200,250,180);
border:2px double rgb(20,80,40);
background-color:Brown;
}
table {
background-color:rgb(190,240,180);
border:5px groove Brown;
position:relative;
width:18%;
margin-left:50%;
left:-9%;
}
th {
background-color:Orange;
border:3px solid BurlyWood;
font-family:Garamond;
font-weight:800;
font-size:11pt;
}
td {
border:3px solid SeaGreen;
font-family:Georgia;
font-weight:400;
font-size:10pt;
}
Ejercicio #4: En este ejemplo se ingresan una serie de productos a través de un formulario. Los nuevos
productos se ingresan en un cuadro de texto y mediante un botón son agregados a un cuadro de lista.
Mediante un botón de envío los datos ingresados y seleccionados del cuadro de lista son enviados para
que sean procesados por el script PHP. La aplicación incluye un script .js que se encarga de la
funcionalidad de agregar productos al cuadro de lista.
Archivo 1: productos.html
<!DOCTYPE html>
<html lang="es">
<head>
<title>Listado de productos</title>
<link type="text/css" rel="stylesheet" media="screen" href="css/productos.css" />
<script type="text/javascript" src="js/productos.js"></script>
</head>
<body>
<section>
<article>
<form name="frmproductos" action="productos.php" method="POST">
<fieldset>
<legend><span>Ingreso de productos:</span></legend>
<ul>
<li>
<label for="producto">Nuevo producto:</label>
<div class="campo">
<input type="text" name="producto" id="producto" maxlength="60"
required="required" />
<input type="reset" name="agregar" id="agregar" value="Agregar" />
</div>
</li>
<li>
<label for="ingresados">Productos ingresados:</label>
<div class="campo">
<select name="ingresados[]" id="ingresados" size="6"
multiple="multiple"></select>
</div>
</li>
<li>
<div class="campo">
<input type="submit" name="enviar" id="enviar" value="Enviar" class="boton"
/>
</div>
</li>
</ul>
</fieldset>
</form>
</body>
</article>
</section>
</html>
Archivo 2: productos.js
window.onload = initForms;
function initForms(){
document.getElementById("agregar").onclick = function(){
addProducts(document.frmproductos.ingresados, document.frmproductos.producto.value);
}
document.getElementById("enviar").onclick = function(){
var contador = 0;
for(var i=0;
i<document.frmproductos.ingresados.options.length; i++){
if(document.frmproductos.ingresados.options[i].selected){
contador++;
}
}
if(contador == 0){
alert("No se han seleccionado
elementos.");
return false;
}
}
}
Archivo 3: productos.css
fieldset {
width:46%;
position:relative;
margin-left:50%;
left:-23%;
background-color:rgb(190,220,230);
border:6px ridge rgb(50,100,150);
}
legend span {
display:block;
border:3px ridge rgb(50,100,150);
background-color:rgb(20,20,100);
font:bold 9pt "Century Gothic","Arial Rounded MT Bold",Helvetica,sans-serif;
color:rgb(225,250,250);
padding:2px 5px;
}
label {
font:normal 9pt "Arial Rounded MT Bold","Century Gothic",Helvetica,sans-serif;
color:rgb(30,60,100);
display:block;
float:left;
width:30%;
text-align:right;
padding-top:0.6em;
padding-bottom:0.6em;
}
.campo {
width:68%;
display:block;
position:relative;
float:right;
}
.boton {
display:block;
width:5em;
margin-left:50%;
left:-2.5em;
bottom:-0.2em;
position:relative;
}
ul {
list-style-type:none;
margin:0;
padding:0;
}
li {
line-height:2.1em;
display:block;
}
table {
width:18%;
position:relative;
margin-left:50%;
left:-9%;
border-collapse:collapse;
border:8px groove rgb(100,10,5);
}
tr {
th {
background-color:rgb(90,5,3);
font:bold 14pt Garamond,Helvetica,sans-serif;
color:rgb(250,240,200);
}
td {
background-color:rgb(250,240,200);
font:normal 14pt Garamond,Helvetica,sans-serif;
color:rgb(100,10,10);
}
Archivo 4: productos.php
<!DOCTYPE html>
<html lang="es">
<head>
<title>Productos de la tienda</title>
<link type="text/css" rel="stylesheet" media="screen" href="css/productos.css" />
</head>
<body>
<section>
<article>
<table>
<thead>
<th class="head">Productos</th>
</thead>
<tbody>
<?php
if(isset($_POST['enviar'])){
if(isset($_POST['ingresados'])){
foreach($_POST["ingresados"] as $productos){
echo "<tr>\n<td>$productos</td>\n</tr>";
}
}
}
?>
</tbody>
</table>
</article>
</section>
</body>
</html>
Ejercicio #5: El siguiente ejemplo muestra el uso de la función array_rand() de PHP que permite generar
un número de índices aleatorios para mostrar las imágenes de películas de la portada. Luego, se puede
seleccionar un nombre de película y la cantidad de boletos de entrada que se desean adquirir. Al enviar el
formulario y utilizando una matriz bidimensional asociativa se puede crear un boleto que indica el precio
a pagar por el número de entradas adquirido.
Archivo 1: cartelera.php
<!DOCTYPE html>
<html lang="es">
<head>
<title>Cartelera de cine</title>
<link type="text/css" rel="stylesheet" media="screen" href="css/cartelera.css" />
<script type="text/javascript" src="js/modernizr.custom.lis.js"></script>
</head>
<body>
<header>
<h1>Cartelera de cine</h1>
</header>
<section>
<?php
//Creamos una variable con el directorio o carpeta que contiene las imágenes
$dir = "img";
//Creamos una matriz con los nombres de las imágenes que se almacenan en el directorio
$peliculas = array(
"al-diablo-con-el-diablo.jpg", "click.jpg",
"cruzada.jpg", "efecto-mariposa.jpg",
"busca-de-la-felicidad.jpg", "amenaza-fantasma.jpg",
"la-milla-verde.jpg", "la-propuesta.jpg",
"comunidad-del-anillo.jpg", "sexto-sentido.jpg"
);
//Obtener cuatro claves de la matriz $peliculas
$claves = array_rand($peliculas, 4);
//Creando una estructura de 3 columnas con elementos DIV
?>
<article>
<img src="<?php echo $dir . "/" . $peliculas[$claves[0]]; ?>" width="200" /><br />
<img src="<?php echo $dir . "/" . $peliculas[$claves[1]]; ?>" width="200" />
</article>
<article>
<hgroup>
<h2>CINE REFORMA</h2>
<h3>Los mejores estrenos los encuentras aquí</h3>
<h4>Estas son las películas en cartelera</h4>
</hgroup>
<div id="">
<form action="pagoentrada.php" method="POST">
<fieldset>
<legend><span>Entrada al cine</span></legend>
<label for="pelicula">Película</label>
<select name="pelicula" id="pelicula">
<option value="mov0001" selected="selected">Al diablo con el
diablo</option>
<option value="mov0002">Click</option>
<option value="mov0003">Cruzada</option>
<option value="mov0004">El efecto mariposa</option>
<option value="mov0005">En busca de la felicidad</option>
<option value="mov0006">La amenaza fastasma</option>
<option value="mov0007">Milagros inesperados</option>
<option value="mov0008">La propuesta</option>
<option value="mov0009">La comunidad del anillo</option>
<option value="mov0010">El sexto sentido</option>
</select><br />
<label for="cantidad">Cantidad</label>
<input type="text" name="cantidad" id="cantidad" maxlength="1"
placeholder="Cantidad" pattern="\d{1}" required /><br />
<input type="submit" name="comprar" value="Comprar" />
</fieldset>
</form>
</div>
</article>
<article>
<img src="<?php echo $dir . "/" . $peliculas[$claves[2]]; ?>" width="200" /><br />
<img src="<?php echo $dir . "/" . $peliculas[$claves[3]]; ?>" width="200" />
</article>
</section>
</body>
</html>
Archivo 2: cartelera.css
body {
font: 16px;
}
h1 {
font: 2.2em Bold Geneva,Helvetica,sans-serif;
margin: 2% auto;
text-align: center;
text-shadow: 5px 2px 2px rgba(90,42,35,0.75);
}
hgroup h2 {
font: 1.75em Bold Verdana,Helvetica,sans-serif;
text-align: center;
}
section {
background: -moz-linear-gradient(top, rgba(243,226,199,0.93) 0%,
rgba(243,226,199,0.93) 1%, rgba(233,212,179,0.93) 5%, rgba(182,141,76,1) 100%); /*FF3.6+*/
background: -webkit-gradient(linear, left top, left bottom, color-
stop(0%,rgba(243,226,199,0.93)), color-stop(1%,rgba(243,226,199,0.93)), color-
stop(5%,rgba(233,212,179,0.93)), color-stop(100%,rgba(182,141,76,1))); /* Chrome,Safari4+
*/
background: -webkit-linear-gradient(top, rgba(243,226,199,0.93)
0%,rgba(243,226,199,0.93) 1%,rgba(233,212,179,0.93) 5%,rgba(182,141,76,1) 100%); /*
Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(243,226,199,0.93) 0%,rgba(243,226,199,0.93)
1%,rgba(233,212,179,0.93) 5%,rgba(182,141,76,1) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(243,226,199,0.93) 0%,rgba(243,226,199,0.93)
1%,rgba(233,212,179,0.93) 5%,rgba(182,141,76,1) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(243,226,199,0.93)
0%,rgba(243,226,199,0.93) 1%,rgba(233,212,179,0.93) 5%,rgba(182,141,76,1) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#edf3e2c7',
endColorstr='#b68d4c',GradientType=0 ); /* IE6-9 */
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
-o-border-radius: 15px;
-ms-border-radius: 15px;
border-radius: 15px;
behavior:url(css/border-radius.htc);
margin: 2% auto;
vertical-align: top;
width: 98%;
}
article {
/* border: 1px solid Blue; */
display: inline-block;
margin: 0 2%;
min-height: 560px;
padding-left: 4%;
padding-top: 2%;
padding-bottom: 2%;
vertical-align: top;
width: 25%;
}
article img {
display: block;
-moz-box-shadow: 3px 3px 3px 3px rgba(100,50,40,0.75);
-webkit-box-shadow: 3px 3px 3px 3px rgba(100,50,40,0.75);
-o-box-shadow: 3px 3px 3px 3px rgba(100,50,40,0.75);
legend {
display: block;
color: #F0E68C;
font: Bold 1em Linotype,sans-serif;
width: 124px;
padding: 5px;
}
label {
display:block;
color: #F0E68C;
font: Bold 0.9em Linotype,sans-serif;
width: 60px;
padding: 6px;
/* border: 1px solid White; */
}
input, select {
width: 250px;
background: #8a33c6;
padding: 6px;
margin-bottom: 10px;
border-top: 1px solid #808080;
border-left: 1px solid #808080;
border-right: 1px solid #AD64E0;
border-bottom: 1px solid #AD64E0;
/* Agregando propiedades CSS3 */
-webkit-transition-property: -webkit-box-shadow, background;
-webkit-transition-duration: 0.25s;
-moz-box-shadow: 0px 0px 2px #000;
-webkit-box-shadow: 0px 0px 2px #000;
}
input[type=text] {
font: Normal 1em Palatino,Helvetica,sans-serif;
background: #DEB887;
color: #8B0000;
}
select {
font: Normal 1em Palatino,Helvetica,sans-serif;
background: #DEB887;
color: #8B0000;
}
input[type=submit] {
background-color:#A0522D;
color:#DEB887;
border-top: 2px solid #F5DEB3;
border-left: 2px solid #F5DEB3;
border-right: 2px solid #BC8F8F;
border-bottom: 2px solid #BC8F8F;
text-transform:uppercase;
font:Bold 1em Linotype,sans-serif;
}
input[type=submit]:hover {
background: #905020;
color: #DFBCA7;
}
input:hover {
-webkit-box-shadow: 0px 0px 4px #000;
background: #A0522D;
}
select:hover {
-webkit-box-shadow: 0px 0px 4px #000;
background: #A0522D;
}
Archivo 3: pagoentrada.php
<!DOCTYPE html>
<html>
<head>
<title>Boleto de entrada</title>
<link type="text/css" rel="stylesheet" media="screen" href="css/tables.css" />
<script type="text/javascript" src="js/modernizr.custom.lis.js"></script>
</head>
<body>
<?php
$peliculas = array(
if(isset($_POST['comprar'])){
$movie = isset($_POST['pelicula']) ? $_POST['pelicula'] : "";
switch($movie){
case "mov0001":
$seleccionada = $peliculas["mov0001"];
$cantidad = (isset($_POST['cantidad']) && is_numeric($_POST['cantidad'])) ?
$_POST['cantidad'] : 0;
break;
case "mov0002":
$seleccionada = $peliculas["mov0002"];
$cantidad = (isset($_POST['cantidad']) && is_numeric($_POST['cantidad'])) ?
$_POST['cantidad'] : 0;
break;
case "mov0003":
$seleccionada = $peliculas["mov0003"];
$cantidad = (isset($_POST['cantidad']) && is_numeric($_POST['cantidad'])) ?
$_POST['cantidad'] : 0;
break;
case "mov0004":
$seleccionada = $peliculas["mov0004"];
$cantidad = (isset($_POST['cantidad']) && is_numeric($_POST['cantidad'])) ?
$_POST['cantidad'] : 0;
break;
case "mov0005":
$seleccionada = $peliculas["mov0005"];
$cantidad = (isset($_POST['cantidad']) && is_numeric($_POST['cantidad'])) ?
$_POST['cantidad'] : 0;
break;
case "mov0006":
$seleccionada = $peliculas["mov0006"];
$cantidad = (isset($_POST['cantidad']) && is_numeric($_POST['cantidad'])) ?
$_POST['cantidad'] : 0;
break;
case "mov0007":
$seleccionada = $peliculas["mov0007"];
$cantidad = (isset($_POST['cantidad']) && is_numeric($_POST['cantidad'])) ?
$_POST['cantidad'] : 0;
break;
case "mov0008":
$seleccionada = $peliculas["mov0008"];
$cantidad = (isset($_POST['cantidad']) && is_numeric($_POST['cantidad'])) ?
$_POST['cantidad'] : 0;
break;
case "mov0009":
$seleccionada = $peliculas["mov0009"];
$cantidad = (isset($_POST['cantidad']) && is_numeric($_POST['cantidad'])) ?
$_POST['cantidad'] : 0;
break;
case "mov0010":
$seleccionada = $peliculas["mov0010"];
$cantidad = (isset($_POST['cantidad']) && is_numeric($_POST['cantidad'])) ?
$_POST['cantidad'] : 0;
break;
}
//Iniciando la tabla con la información de la película seleccionada
?>
<section>
<article>
<table id="hor-zebra" summary="Datos recibidos del formulario">
<caption>Información de formulario</caption>
<thead>
<tr class="thead">
<th scope="col" colspan="2">Boleto de entrada</th>
</tr>
</thead>
<tbody>
<?php
//Obtiniendo los datos de la película seleccionada que está almacenada en
$seleccionada
$table = "";
$i = 1;
foreach($seleccionada as $indice => $dato){
if($i%2 != 0){
$table .= "\t<tr class=\"odd\">\n";
}
else{
$table .= "\t<tr class=\"even\">\n";
}
if($indice == "precio"){
$dato *= $cantidad;
$dato = "\$" . number_format((double)$dato, 2, ".", ",");
}
$table .= "\t\t<td>$indice</td>\n";
$table .= "\t\t<td> $dato</td>\n\t</tr>\n";
$i++;
}
echo $table;
}
?>
</tbody>
</table>
<a href="cartelera.php">Ingresar otra película</a>
</article>
</section>
</body>
</html>
Archivo 4: tables.css
body {
line-height: 1.6em;
}
caption {
font: Bold 1.25em "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
color: rgb(100,50,40);
}
#hor-zebra td {
padding: 8px;
color: rgb(100,50,40);
}
#hor-zebra .thead {
background-color: rgb(100,50,40);
}
#hor-zebra .thead th {
padding: 10px 8px;
color: #FFDEAD;
font:Bold 12px "Lucida Sans Unicode", Helvetica, Sans-Serif;
}
#hor-zebra .odd {
background-color: #F0E68C;
}
#hor-zebra .even {
background-color: #F9EC96;
}
V. DISCUSION DE RESULTADOS
1. Realice un script PHP que dadas tres notas de un listado de estudiantes organizadas en una matriz
asociativa, le permita obtener el promedio de ellas sabiendo que las notas son de una tarea, una
investigación y el examen parcial con la ponderación de 50%, 30% y 20% respectivamente. Por último,
muestre las notas promediadas de cada alumno en una tabla bien presentable, mostrando el nombre
del alumno, la nota que tiene en cada actividad y en una celda combinada su promedio.
SUGERENCIA: Haga una matriz con la siguiente estructura para facilitar el proceso:
$notas = array(
"nombre Alumno1" => array(
"Parcial" => 9.1,
"Tarea" => 0
), …
VII. BIBLIOGRAFIA
• Gil Rubio, Francisco Javier/Villaverde, Santiago Alonso/Tejedor Cerbel, Jorge A. Creación de sitios web
con PHP 5. Editorial McGraw-Hill. 1ra edición. Madrid, España, 2006.
• Gutiérrez, Abraham / Bravo, Ginés. PHP 5 a través de ejemplos. Editorial Alfaomega RAMA. 1ª edición.
Junio 2005. México.
• John Coggeshall. La Biblia de PHP 5. Editorial Anaya Multimedia. Madrid España. 1ª edición. Madrid,
España.
• Michele E. Davis / John A. Phillips. Creación de sitios web dinámicos con PHP y MySQL. Editorial Anaya
Multimedia / O’Reilly. 1ª edición. Madrid, España.
• http://www.php.net/manual/es