Ingresar primer objetivo

Anuncio
UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACIÓN
GUIA DE LABORATORIO #2
Estructuras de control - Sentencias condicionales
Centro de Cómputo
2 horas con 30 minutos
Desarrollo de Aplicaciones Web con Software Interpretado en el
Servidor
Docentes de práctica: Ing. Ricardo Ernesto Elías G. / Ing. Miguel Eduardo Garcia O.
Nombre de la Practica:
Lugar de Ejecución:
CICLO: 01/2016 Tiempo Estimado:
Materia:
I. OBJETIVOS
En esta guía de práctica se espera que los estudiantes logren:
 Adquirir amplio dominio en el uso de las sentencias condicionales if.
 Utilizar correctamente todas las variantes de la sentencia if (if-else, if-else if-else, if anidados).
 Tener conocimiento completo del funcionamiento y utilización de una sentencia switch.
 Lograr la habilidad de manejar la característica del efecto de caída en cascada de la sentencia switch.
 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.
II. INTRODUCCION TEORICA
Los primeros ejemplos de programación que suelen utilizarse
están compuestos por una serie de instrucciones que se ejecutan
de forma secuencial. A medida que se va a avanzando en un
curso uno cae en la cuenta que lo más habitual es que los
problemas que se nos plantean casi nunca se pueden resolver
con una ejecución secuencial. Es importante dominar y conocer
cierto tipo de instrucciones que permitan modificar el flujo de
ejecución de las instrucciones. Estas instrucciones permitirán
controlar el flujo lógico en que se ejecutarán las instrucciones
dentro de un script. Específicamente, podremos utilizar
estructuras de control condicionales que nos permitirán bifurcar
el flujo del programa dependiendo de si una condición se evalúa
como verdadera o falsa, o repetir un bloque de instrucciones un
número determinado de veces para realizar de forma más
eficiente y elegante un proceso.
Las estructuras de control se dividen en sentencias condicionales, selectivas y repetitivas. Vamos a examinar
todos estos tipos de instrucciones durante este curso.
1 / 40
Guía# 2: Estructuras de control - Sentencias condicionales
Sentencias condicionales
Las sentencias condicionales se pueden clasificar en dos grupos:
a) Sentencias condicionales if.
i. Sentencia if simple.
ii. Sentencia if-else.
iii. Sentencia if-elseif-else.
b) Sentencia selectiva swicht.
Sentencia if
La sentencia if permite evaluar una expresión condicional y decidir, en base al resultado, si se ejecuta o no un
bloque de código. Si la evaluación resulta verdadera (true) se ejecuta el bloque de instrucciones y si resulta
falsa (false) no se ejecuta.
PHP proporciona una estructura if que es similar a la de C:
Sintaxis básica:
<?php
if(expresion) //sentencia;
?>
Sintaxis extendida:
<?php
if(expresion){
//bloque de sentencias;
}
?>
La sintaxis básica muestra la construcción de una sentencia if cuando esta contiene una sola instrucción. La
sintaxis extendida muestra una sentencia if con varias instrucciones dentro del bloque que encierran las llaves
del if.
Como se describe en la sección sobre expresiones, expresion se evalúa a su valor condicional (boolean). Si
expresion se evalúa como TRUE, PHP ejecutará la sentencia, y si se evalúa como FALSE, la ignorará y
continuará con la siguiente instrucción después del if.
El siguiente ejemplo mostraría: $a es mayor que $b, si $a fuera mayor que $b. De no ser así no mostraría nada:
<?php
if($a > $b) print "$a es mayor que $b";
?>
A menudo, se desea tener más de una sentencia ejecutada de forma condicional. Por supuesto, no hay
necesidad de encerrar cada sentencia con una cláusula if. En vez de eso, se pueden agrupar varias sentencias
en un grupo de sentencias. Por ejemplo, este código mostraría $a es mayor que \$b, si $a fuera mayor que $b,
y entonces asignaría el valor de $a a $b:
<?php
if($a > $b) {
print "$a es mayor que $b";
$b = $a;
}
?>
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
2
Guía# 2: Estructuras de control - Sentencias condicionales
Las sentencias if se pueden anidar indefinidamente dentro de otras sentencias if o else, lo cual proporciona
una flexibilidad completa para ejecuciones condicionales en las diferentes partes de tu programa.
Sentencia if-else
Hay situaciones en las que se desea ejecutar una o varias sentencias si se cumple una cierta condición, y
ejecutar un bloque de sentencias distintas si la condición no se cumple. En estos casos es útil la sentencia if
…else. De esta forma se extiende una sentencia if para ejecutar una o varias sentencias en caso de que la
expresión en la sentencia if se evalúe como FALSE. Por ejemplo, el siguiente código mostraría $a (su valor) es
impar si $a%2 resultara evaluado como 1 o $a es par si fuera evaluado
como 0. Note que solamente se pueden obtener esos valores como
resultado:
<?php
if($a % 2){
print "$a es impar";
}
else{
print "$a es par";
}
?>
La sentencia else se ejecuta solamente si la expresión if se evalúa como
FALSE.
Sentencia if-elseif-else
La sentencia elseif es una combinación de if y else. Al igual que un else, extiende una sentencia if para
ejecutar una sentencia diferente en caso de que la expresión if original se evalúa como FALSE. No obstante, a
diferencia del else, ejecutará esa expresión alternativa solamente si la expresión condicional elseif se evalúa
como TRUE. Un bloque if puede contener múltiples elseif, pero únicamente un else. El bloque de
instrucciones bajo un elseif se ejecutará, únicamente si la condición if y todas las instrucciones elseif anteriores
devuelven FALSE.
Por ejemplo, el siguiente código mostraría a es mayor que b, a es igual a b o a es menor que b:
<?php
if($a > $b){
echo "$a
}
elseif($a ==
echo "$a
}
else{
echo "$a
}
es mayor que $b";
$b){
es igual que $b";
es mayor que $b";
?>
Puede haber varios elseif dentro de la misma sentencia if. La primera expresión elseif (si hay alguna) que se
evalúe como TRUE se ejecutaría. En PHP, también se puede escribir 'else if' (con dos palabras) y el
comportamiento sería idéntico al de un 'elseif' (una sola palabra).
La sentencia elseif se ejecuta sólo si la expresión if precedente y cualquier otra expresión elseif precedente se
evalúan como FALSE, y la expresión elseif actual se evalúa como TRUE.
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
3
Guía# 2: Estructuras de control - Sentencias condicionales
Sintaxis alternativa de la sentencia condicional
PHP ofrece una forma alternativa de construcción de una sentencia condicional. Esta forma alternativa
reemplaza el uso de la llave de apertura del bloque if por dos puntos (:) y la llave de cierre del bloque por la
sentencia endif.
Ejemplo:
<?php
if($num % 2 == 0):
echo $num . " es par";
else:
echo $num . " es impar";
?>
Operador condicional
En PHP se puede utilizar un operador ternario utilizado con frecuencia en el lenguaje C++. Este es el
operador "?:", o también llamado operador condicional. Este es un operador ternario que se utiliza para
simplificar la escritura de una sentencia condicional de tipo if…else, cuando esta contiene únicamente una
sentencia en el bloque if y una sentencia en el bloque else.
La sintaxis de este operador es la siguiente:
(expresion_condicional) ? expresion1 : expresion2 ;
Debe tener en cuenta que si la expresión_condicional se evalúa como TRUE, se ejecutará expresion1
y si se evalúa FALSE, se ejecutará expresion2. Como las expresiones devuelven un valor, usted puede
perfectamente asignar la instrucción completa en una variable, como se muestra en el siguiente ejemplo:
$condicion = ($nota >= 6.0) ? "Aprobado" : "Reprobado" ;
Si la expresión condicional resulta verdadera la variable $condicion tendrá el valor de "Aprobado", si se
evalúa como falsa, entonces el valor asignado a $condicion será "Reprobado".
Sentencia switch
La sentencia switch es similar a una sentencia if con
varias instrucciones elseif. La diferencia está en que en
un if la condición se evalúa tanto por la sentencia if
como por los elseif que esta contenga. En cambio, en un
switch, la condición se evalúa solamente una vez, luego
el valor obtenido se compara con una serie de valores
de prueba predefinidos. Cada uno de estos valores se
presenta con una sentencia case dentro del switch.
Cuando uno de estos valores coincide con el evaluado
por la condición se ejecuta el bloque de instrucciones
dentro de ese case de forma secuencial. En caso de que
ninguno de los valores de prueba coincida con el
devuelto por la condición se ejecutará el bloque de
instrucciones bajo la sentencia default, si es que está
presente, si no lo está, entonces no se ejecutará ninguna
instrucción en el switch.
Nota: Tener en cuenta que al contrario que otros lenguajes de programación, continue se aplica a switch y
funciona de manera similar a break. Si se tiene un switch dentro de un bucle y se quiere continuar con el paso
siguiente en el bucle externo, usar continue 2.
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
4
Guía# 2: Estructuras de control - Sentencias condicionales
Los siguientes dos ejemplos son dos modos distintos de escribir el mismo programa, uno usa una serie de
sentencias if, y el otro usa la sentencia switch:
Utilizando if:
<?php
if ($i == 0) {
echo "$i es igual a 0";
}
elseif ($i == 1) {
echo "$i es igual a 1";
}
elseif ($i == 2) {
echo "$i es igual 2";
}
?>
Utilizando switch:
<?php
switch ($i) {
case 0:
print "i equals 0";
break;
case 1:
print "i equals 1";
break;
case 2:
print "i equals 2";
break;
}
?>
Es importante entender cómo se ejecuta la sentencia switch para evitar errores. La sentencia switch se ejecuta
línea por línea (realmente, sentencia a sentencia). Al comienzo, no se ejecuta código. Sólo cuando se encuentra
una sentencia case con un valor que coincide con el valor obtenido en la evaluación de la expresión switch,
PHP comienza a ejecutar las sentencias. PHP continúa ejecutando las sentencias hasta el final del bloque
switch, o la primera vez que se encuentre una sentencia break. Si no se escribe una sentencia break al final de
una lista de sentencias case, PHP seguirá ejecutando las sentencias del siguiente case. Por ejemplo:
<?php
switch ($i) {
case 0:
print "i es igual a 0";
case 1:
print "i es igual a 1";
case 2:
print "i es igual a 2";
}
?>
Aquí, si $i es igual a 0, ¡PHP ejecutaría todas las sentecias print! Si $i es igual a 1, PHP ejecutaría las últimas
dos sentencias print y sólo si $i es igual a 2, se obtendría la conducta 'esperada' y solamente se mostraría 'i es
igual a 2'. Así, es importante no olvidar las sentencias break (incluso aunque pueda querer evitar escribirlas
intencionadamente en ciertas circunstancias).
En una sentencia switch, la condición se evalúa sólo una vez y el resultado se compara a cada sentencia case.
En una sentencia elseif, la condición se evalúa otra vez. Si tu condición es más complicada que una
comparación simple y/o está en un bucle estrecho, un switch puede ser más rápido.
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
5
Guía# 2: Estructuras de control - Sentencias condicionales
La lista de sentencias de un case puede también estar vacía, lo cual simplemente pasa el control a la lista de
sentencias del siguiente case.
<?php
switch ($i) {
case 0:
case 1:
case 2:
print "i es menor que 3, pero no negativo";
break;
case 3:
print "i es 3";
}
?>
Un caso especial es el default. Este "case" coincide con todo lo que no coincidan los otros case. Por ejemplo:
<?php
switch ($i) {
case 0:
print "i es igual a 0";
break;
case 1:
print "i es igual a 1";
break;
case 2:
print "i es igual a 2";
break;
default:
print "i no es igual a 0, 1 o 2";
}
?>
La expresión case puede ser cualquier expresión que se evalúe a un tipo simple, es decir, números enteros o
de punto flotante y cadenas de texto. No se pueden usar aquí ni arrays ni objetos a menos que se conviertan a
un tipo simple.
break
break escapa de la estructuras de control iterante (bucle) actual for, while, o switch.
break acepta un parámetro opcional, el cual determina cuántas estructuras de control hay que escapar.
Sintaxis alternativa de la sentencia switch
También la sentencia switch puede utilizarse con una sintaxis alternativa de dos puntos. La forma de
construir una sentencia switch con sintaxis alternativa, se muestra a continuación:
<?php
switch($i):
case 0:
echo "$i es igual a 0";
break;
case 1:
echo "$i es igual a 1";
break;
case 2:
echo "$i es igual a 2";
break;
default:
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
6
Guía# 2: Estructuras de control - Sentencias condicionales
echo "$i no es igual a 0, 1 ni 2";
endswitch;
?>
III. MATERIALES Y EQUIPO
Para la realización de la guía de práctica se requerirá lo siguiente:
No. Material
1
Guía de práctica #2: Estructuras de control – Sentencias condicionales
2
Computadora con WampServer 2.5 instalado y funcionando correctamente
3
Editor Sublime Text 3, Eclipse PHP o DevPHP
4
Memoria USB o disco flexible
Cantidad
1
1
1
1
IV. PROCEDIMIENTO
Indicaciones: Asegúrese de digitar el código de los siguientes ejemplos que se presentan a continuación.
Tenga en cuenta que ni Sublime Text, ni PHP Designer son compiladores; solamente son editores de código
PHP, por lo tanto los errores de sintaxis los podrá observar únicamente hasta que se ejecute el script al cargar
la página en el navegador de su preferencia.
Ejemplo 1: En este ejemplo se evaluará si un año ingresado por un usuario a través de un formulario resulta
ser bisiesto o no. Primero se creará el formulario html que se guardará como bisiesto.html y luego se creará el
script PHP que procesará el año ingresado para determinar si resulta ser bisiesto o no.
Archivo 1: bisiesto.php
<!DOCTYPE html>
<html lang="es">
<head>
<title>Año bisiesto</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,user-scalable=no,initialscale=1.0,maximum-scale=1.0,minimum-scale=1.0" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" href="css/fonts.css" />
<link rel="stylesheet" href="css/formstyle.css" />
<link rel="stylesheet" media="screen" href="css/bisiesto.css" />
<script src="js/validatedata.js"></script>
<script src="js/prefixfree.min.js"></script>
</head>
<body>
<div class="wrapper">
<?php
if(!isset($_POST['enviar'])):
?>
<form action="<?= $_SERVER['PHP_SELF']; ?>" method="POST" name="frmdatos">
<h2 class="contact">Años bisiestos</h2>
<span class="contact">
<label for="txtdato">Probar año:</label>  
</span>
<input type="text" name="year" id="year" value="" maxlength="20" placeholder="(Ingrese
el dato)" /><br />
<span id="numbersOnly">Ingrese números enteros</span>
<input type="submit" name="enviar" id="enviar" value="Probar" />
</form>
<?php
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
7
Guía# 2: Estructuras de control - Sentencias condicionales
else:
//Script que determina si un año es bisiesto o no
$year = isset($_POST['year']) ? $_POST['year'] : 0;
if(($year%4 == 0 && $year%100 != 0) || $year%400 == 0):
echo "<p class=\"bisiesto\">";
echo "<span style=\"color:Green;font:bold 10pt 'Lucida Sans';\">El año $year
es bisiesto</span><br />\n";
echo "<span style=\"color:Green;font:bold 10pt 'Lucida Sans';\"><a
href=\"{$_SERVER['PHP_SELF']}\">Probar otro año</a>";
echo "</p>";
else:
echo "<p class=\"bisiesto\">";
echo "<span style=\"color:FireBrick;font:bold 10pt 'Lucida Sans';\">El año
$year no es bisiesto</span><br />\n";
echo "<span style=\"color:Green;font:bold 10pt 'Lucida Sans';\"><a
href=\"{$_SERVER['PHP_SELF']}\">Probar otro año</a>";
echo "</p>";
endif;
endif;
?>
</div>
</body>
</html>
Archivo 2: bisiesto.css
* {
margin: 0;
padding: 0;
}
html, body {
height: 100%
}
body
{
background-image: url(../img/butterflybg1280x800.jpg);
background-size: 100vw 100vh;
background-attachment: fixed;
/*margin-left:50px;
margin-right:50px;*/
overflow:hidden;
}
p.bisiesto
background:#F8F16D;
}
{
#numbersOnly {
background: rgba(239,197,202,1);
background: -moz-linear-gradient(top, rgba(239,197,202,1) 0%, rgba(210,75,90,1) 50%,
rgba(222,60,79,1) 51%, rgba(241,142,153,1) 100%);
background: -webkit-gradient(left top, left bottom, color-stop(0%,
rgba(239,197,202,1)), color-stop(50%, rgba(210,75,90,1)), color-stop(51%,
rgba(222,60,79,1)), color-stop(100%, rgba(241,142,153,1)));
background: -webkit-linear-gradient(top, rgba(239,197,202,1) 0%, rgba(210,75,90,1)
50%, rgba(222,60,79,1) 51%, rgba(241,142,153,1) 100%);
background: -o-linear-gradient(top, rgba(239,197,202,1) 0%, rgba(210,75,90,1) 50%,
rgba(222,60,79,1) 51%, rgba(241,142,153,1) 100%);
background: -ms-linear-gradient(top, rgba(239,197,202,1) 0%, rgba(210,75,90,1) 50%,
rgba(222,60,79,1) 51%, rgba(241,142,153,1) 100%);
color: #fff;
font: bold 1em 'BebasNeueRegular',Arial,Helvetica,'Liberation Sans';
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
8
Guía# 2: Estructuras de control - Sentencias condicionales
padding: 4px 5px;
visibility:hidden;
}
Archivo 3: formstyle.css
* {
outline: none;
box-sizing: border-box;
}
body, div, h1, form, fieldset, input, textarea {
margin: 0;
padding: 0;
border: 0;
outline: none;
}
html {
height: 100%;
}
html, body {
height: 100%;
}
body {
background: #A4EB90;
background-image: -webkit-gradient(
linear,
left top,
left bottom,
color-stop(0, #A4EB90),
color-stop(1, #55963F)
);
background-image: -o-linear-gradient(bottom, #A4EB90 0%, #55963F 100%);
background-image: -moz-linear-gradient(bottom, #A4EB90 0%, #55963F 100%);
background-image: -webkit-linear-gradient(bottom, #A4EB90 0%, #55963F 100%);
background-image: -ms-linear-gradient(bottom, #A4EB90 0%, #55963F 100%);
background-image: linear-gradient(to bottom, #A4EB90 0%, #55963F 100%);
font-family: sans-serif;
}
.wrapper{
background:#CCC;
margin: 16px auto;
padding: 10px 30px;
width:560px;
}
h2.contact {
background: url(../img/validatedata.png) no-repeat -16px -50px;
color: #ff5400;
font-family: 'YanoneKaffeesatzRegular';
font-size: 66px;
height: 105px;
padding-left: 150px;
}
span.contact {
color: #4b4b4b;
font-family: 'BebasNeueRegular', Arial;
font-size: 24px;
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
9
Guía# 2: Estructuras de control - Sentencias condicionales
line-height: 68px;
margin-bottom: 15px;
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.2);
}
input[type="text"] {
width: 236px;
}
textarea {
width: 600px;
height: 275px;
}
label {
color: #ff5400;
}
input,
textarea,
select {
background-color: rgba(255, 255, 255, 0.4);
border: 5px solid rgba(122, 192, 0, 0.15);
padding: 10px;
font-family: 'YanoneKaffeesatzRegular', Arial;
color: #4b4b4b;
font-size: 24px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-o-border-radius: 5px;
-ms-border-radius: 5px;
border-radius: 5px;
margin-bottom: 15px;
margin-top: -10px;
}
input:focus,
textarea:focus,
select:focus {
background-color: rgba(255,255,255,1);
border: 5px solid #ff5400;
}
input[type="submit"] {
background: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0.23, #619702),
color-stop(0.62, #7ac000)
);
background: -moz-linear-gradient(
center bottom,
#619702 23%,
#7ac000 62%
);
border: none; cursor: pointer; color: #fff;
font-size: 24px;
background-color: #7ac000;
padding: 5px 36px 8px 36px;
border-radius: 10px;
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.6);
border-bottom: 1px solid rgba(0, 0, 0, 0.4);
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
10
Guía# 2: Estructuras de control - Sentencias condicionales
border-top: 1px solid rgba(255, 255, 255, 0.6);
}
input[type="submit"]:hover {
background-color: #ff5400;
background: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0.23, #c34000),
color-stop(0.62, #ff5400)
);
background: -moz-linear-gradient(
center bottom,
#c34000 23%,
#ff5400 62%
);
border-bottom: 1px solid rgba(0, 0, 0, 0.4);
color: #fff;
}
input[type="submit"]:active {
top: 1px;
}
@media (max-width: 560px) {
.wrapper {
margin: 0;
padding: 5px 8px;
width: 100%;
}
h2.contact {
background: none;
background-size: 100vw 100vh;
font-size: 50px;
height: 72px;
padding-left: 6px;
text-align: center;
}
}
Archivo 4: fonts.css
@font-face {
font-family: 'YanoneKaffeesatzRegular';
src: url('../fonts/YanoneKaffeesatz-Regular-webfont.eot');
src:
url('fonts/YanoneKaffeesatz-Regular-webfont.eot?#iefix')
format('embeddedopentype'),
url('../fonts/YanoneKaffeesatz-Regular-webfont.woff') format('woff'),
url('../fonts/YanoneKaffeesatz-Regular-webfont.ttf') format('truetype'),
url('../fonts/YanoneKaffeesatz-Regular-webfont.svg#YanoneKaffeesatzRegular')
format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'BebasNeueRegular';
src: url('../fonts/BebasNeue-webfont.eot');
src: url('../fonts/BebasNeue-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/BebasNeue-webfont.woff') format('woff'),
url('../fonts/BebasNeue-webfont.ttf') format('truetype'),
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
11
Guía# 2: Estructuras de control - Sentencias condicionales
url('../fonts/BebasNeue-webfont.svg#BebasNeueRegular') format('svg');
font-weight: normal;
font-style: normal;
}
Archivo 5: validatedata.js
(function(){
//Agregar al manejador de evento load la función init())
if (window.addEventListener) window.addEventListener("load", init, false);
else if (window.attachEvent) window.attachEvent("onload", init);
// Buscar en el documento todos los elementos INPUT de tipo texto, ya que
// solamente en ellos se va a registrar un controlador de evento.
function init(){
var number = document.getElementById("year");
var resparea = document.getElementById("fact");
// Hacer un recorrido por todos los campos del formulario
if (number.addEventListener){
number.addEventListener("keypress", filter, false);
}
else {
// No utilizamos attachEvent porque no llama a la función de controlador
// con el valor correcto de la palabra clave this. En su lugar se invova
// con el manejador de evento onkeypress
number.onkeypress = filter;
}
}
// Este es el controlador keypress que filtra la entrada del usuario
function filter(event) {
// Obtener el objeto event y el código de carácter de la tecla pulsada
// de forma compatible con todos los navegadores
var e = event || window.event;
// Objeto de evento de la tecla
var code = e.charCode || e.keyCode;
// tecla que se ha pulsado
//
if
if
if
Si se ha pulsado una tecla de función de cualquier tipo, no filtrarla
(e.charCode == 0) return true;
// Tecla de función (solo para Firefox)
(e.ctrlKey || e.altKey) return true; // Se mantienen presionadas Ctrl o Alt
(code < 32) return true;
// Carácter de Ctrl en tabla ASCII
// Dejar pasar teclas de retroceso (BackSpace), tabulación (Tab), entrada (Enter)
y
// escape (Scape)
if (code==0 || code==8 || code==9 || code==13 || code==27) return true;
// Buscar la información de los caracteres válidos para este campo de entrada
var allowed = "0123456789";
// Caracteres válidos
var messageElement = document.getElementById("numbersOnly");
// Mensaja
ocultar/mostrar
// Convertir el código de carácter a su carácter correspondiente
var c = String.fromCharCode(code);
// Comprobar si el carácter está dentro del conjunto de caracteres permitidos
if (allowed.indexOf(c) != -1) {
// Si c es un carácter legal, ocultar el mensaje, si es que existe.
if (messageElement) messageElement.style.visibility = "hidden";
return true; // Aceptar el carácter
}
else {
// Si c no está en el conjunto de caracteres permitidos, mostrar el mensaje
if (messageElement) messageElement.style.visibility = "visible";
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
12
a
Guía# 2: Estructuras de control - Sentencias condicionales
// Y rechazar este evento keypress
if (e.preventDefault) e.preventDefault();
if (e.returnValue) e.returnValue = false;
return false;
}
}
})();
Resultado en el navegador usando el servidor web:
Ejemplo 2: Se desea calcular el salario o sueldo neto de algún empleado mediante el uso de un formulario de
ingreso de la información necesaria para realizar el cálculo. El formulario debe solicitar el nombre del
empleado, su sueldo base y, si realiza horas extras, debe ingresarse el número de horas extras trabajadas y el
salario por hora extra a pagar. Al enviar los datos del formulario debe mostrarse de forma ordenada toda la
información en una boleta de pago, mostrando como dato final el sueldo neto o líquido a pagar, tomando en
cuenta las horas extras. En este formulario de ingreso se ha utilizado validación en el cliente de la entrada de
datos en los campos de texto del formulario, haciendo uso de JavaScript no intrusivo (investigar sobre este
tema, si no está claro).
Archivo 1: salario.html
<!DOCTYPE html>
<html lang="es">
<head>
<title>Preferencia de restaurantes</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,user-scalable=no,initialscale=1.0,maximum-scale=1.0,minimum-scale=1.0" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" href="css/salario.css" />
<link rel="stylesheet" href="css/formoid-solid-purple.css" />
<script src="js/disabledtextfields.js"></script>
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
13
Guía# 2: Estructuras de control - Sentencias condicionales
<script src="js/inputFilter.js"></script>
<!-- <script src="js/formoid-solid-purple.js"></script> -->
<script src="js/modernizr.custom.lis.js"></script>
<script src="js/prefixfree.min.js"></script>
</head>
<body>
<header id="inset">
<h1>Salario empleado</h1>
</header>
<section>
<article>
<div id="empleado">
<form action="salario.php" method="POST" name="salario" id="salario" class="formoid-solidpurple">
<div class="title">
<h2>Cálculo de salario</h2>
</div>
<div class="element-name">
<label class="title"></label>
<div class="nameFirst">
<input type="text" name="empleado" id="txtempleado" maxlength="50"
placeholder="Nombre empleado"
allowed="ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyzÁÉÍÓÚáéíóúÜü"
messageid="alfabeticchars" class="large" />
<span class="icon-place"></span>
</div>
<span id="alfabeticchars">Solo acepta caracteres alfabéticos</span>
</div>
<div class="element-number">
<label class="title"></label>
<div class="item-cont">
<input type="text" name="sueldobase" id="sueldobase" maxlength="12"
placeholder="Sueldo base" allowed="0123456789." messageid="numbersonly" class="large" />
<span class="icon-place"></span>
</div>
<span id="numbersonly">Solo acepta números y punto decimal</span>
</div>
<div class="element-checkbox">
<label class="title">Horas extras:</label>
<div class="column column1">
<input type="checkbox" name="hextra" id="hextrasi" value="no" />
<span>Habilitar</span>
</div>
</div>
<div class="element-number">
<label class="title"></label>
<div class="item-cont">
<input type="text" name="numhorasex" id="numhorasex" maxlength="2"
disabled="disabled" placeholder="Número de horas" allowed="0123456789"
messageid="integersonly" />
<span class="icon-place"></span>
</div>
<span id="integersonly">Solo acepta números enteros</span>
</div>
<div class="element-number">
<label class="title"></label>
<div class="item-cont">
<input type="text" name="pagohextra" id="pagohextra" size="12" maxlength="6"
disabled="disabled" placeholder="Pago hora extra" allowed="0123456789."
messageid="othernumbersonly" />
<span class="icon-place"></span>
</div>
<span id="othernumbersonly">Solo acepta números y punto decimal</span>
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
14
Guía# 2: Estructuras de control - Sentencias condicionales
</div>
<div class="submit">
<input type="submit" name="enviar" id="enviar" value="Enviar" />
<input type="reset" name="reset" id="reset" value="Restablecer" />
</div>
</form>
</div>
</article>
</section>
</body>
</html>
Archivo 2: salario.css
/* Fuentes especiales */
@font-face {
font-family: 'League-Gothic';
src: url('../fonts/leaguegothic/League_Gothic.eot');
src:
url('../fonts/leaguegothic/League_Gothic.eot?#iefix')
format('embeddedopentype'),
url('../fonts/leaguegothic/League_Gothic.woff') format('woff'),
url('../fonts/leaguegothic/League_Gothic.ttf') format('truetype'),
url('../fonts/leaguegothic/League_Gothic.svg#League-Gothic') format('svg');
font-weight: normal;
font-style: normal;
}
/* Archivo: salario.css */
* {
margin: 0;
padding: 0;
outline: none;
}
html, body {
height: 100%;
}
body
{
background-image: url(../bg/purple-violet.jpg);
background-size: 100vw 100vh;
background-attachment: fixed;
font-size: 16px;
}
#inset
{
padding: 8px;
}
#inset h1
{
color: #ccc;
font-family: "League-Gothic", Courier;
font-size: 2.8em;
letter-spacing: 1px;
margin: 10px auto;
text-align: center;
text-transform: uppercase;
text-shadow: 0px 2px 3px #666;
}
h3 {
color: #c3c6c3;
font-size: 1.6em;
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
15
Guía# 2: Estructuras de control - Sentencias condicionales
text-align: center;
text-shadow: 1px 1px 0 rgb(223, 227, 229),
4px 4px 0 rgba(0, 0, 0, 0.25);
}
#numbersonly,
#othernumbersonly,
#integersonly,
#alfabeticchars
{
font:Bold 0.8em Arial,Helvetica,sans-serif;
color:Gold;
background: -moz-linear-gradient(45deg, rgb(209,50,53) 30%, rgb(253,46,53) 81%);
background: -webkit-linear-gradient(45deg, rgb(209,50,53) 30%, rgb(253,46,53) 81%);
background: -o-linear-gradient(45deg, rgb(209,50,53) 30%, rgb(253,46,53) 81%);
background: -ms-linear-gradient(45deg, rgb(209,50,53) 30%, rgb(253,46,53) 81%);
background: linear-gradient(135deg, rgb(209,50,53) 30%, rgb(253,46,53) 81%);
background: rgb(209,50,53);
padding: 4px 3px;
visibility:hidden;
display:block;
}
#background.source-image
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index:-100;
}
{
#empleado
{
width:36%;
min-width:350px;
min-height:600px;
margin:0 auto;
}
/* Estilos para la boleta de pago */
/* div
{
margin:0 auto;
width:26%;
}
div h1
{
color:Green;
font:bold 1.4em Arial,Helvetica,sans-serif;
} */
div .number
{
color:#def;
font-weight:bold;
text-align:center;
}
div .detail
{
color:#2f1036;
font-weight:bold;
text-align:left;
}
div table
{
margin: 0 auto;
width:48%;
}
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
16
Guía# 2: Estructuras de control - Sentencias condicionales
div table th
{
background-color:#6c3082;
color: #fff;
font:bold 0.8em Arial,Helvetica,sans-serif;
padding: 5px 3px;
}
div table td
{
background-color:#EDFA90;
font:bold 0.8em Arial,Helvetica,sans-serif;
padding: 5px 3px;
}
Archivo 3: salario.php
<!DOCTYPE html>
<html lang="es">
<head>
<title>Calcular Salario</title>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width,user-scalable=no,initialscale=1.0,maximum-scale=1.0,minimum-scale=1.0" />
<link rel="stylesheet" href="css/salario.css" />
<link rel="stylesheet" href="css/links.css" />
<script src="js/modernizr.custom.lis.js"></script>
</head>
<body>
<header id="inset">
<h1>Detalle del salario</h1>
</header>
<section>
<article>
<?php
if(isset($_POST['enviar'])){
$empleado = isset($_POST['empleado']) ? $_POST['empleado'] : "";
$sueldobase = isset($_POST['sueldobase']) ? $_POST['sueldobase'] : "";
if(isset($_POST['hextra'])){
$horasextras = isset($_POST['numhorasex']) ? $_POST['numhorasex'] : "0";
$pagohextra = isset($_POST['pagohextra']) ? $_POST['pagohextra'] : "0";
$sueldohextras = $horasextras * $pagohextra;
}
else{
$horasextras = 0;
$sueldohextras = 0;
}
$sueldoneto = $sueldobase + $sueldohextras;
echo "<div>\n<h3>Boleta de pago</h3>\n";
echo "<table>\n";
echo
"\t<tr>\n\t\t<th
colspan=\"2\">\n\t\t\tDetalle
del
pago\n\t\t</th>\n\t</tr>\n";
echo
"\t<tr>\n\t\t<td>\n\t\t\tEl
empleado
es:
\n\t\t</td>\n\t\t<td
class=\"detail\">\n\t\t\t",$empleado,"\n\t\t</td>\n\t\t\t</tr>\n";
echo
"\t<tr>\n\t\t<td>\n\t\t\tEl
sueldo
base
es:
\n\t\t</td>\n\t\t<td
class=\"detail\">\n\t\t\t\$ ", $sueldobase, "\n\t\t</td>\n\t</tr>\n";
echo
"\t<tr>\n\t\t<td>\n\t\t\tLas
horas
extras
son:
\n\t\t</td>\n\t\t<td
class=\"detail\">\n\t\t\t",$horasextras,"\n\t\t</td>\n\t</tr>\n";
echo "\t<tr>\n\t\t<td>\n\t\t\tEl pago por hora extra es: \n\t\t</td>\n\t\t<td
class=\"detail\">\n\t\t\t\$ ", $sueldohextras, "\n\t\t</td>\n\t</tr>\n";
echo "\t<tr>\n\t\t<th>\n\t\t\tEl sueldo neto devengado es: \n\t\t</th>\n\t\t<th
class=\"number\">\n\t\t\t\$ ", $sueldoneto, "\n\t\t</th>\n\t</tr>\n";
echo "</table>\n</div>\n";
}
?>
<a href="salario.html" class="a-btn">
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
17
Guía# 2: Estructuras de control - Sentencias condicionales
<span class="a-btn-symbol">i</span>
<span class="a-btn-text">Ingresar</span>
<span class="a-btn-slide-text">otro empleado</span>
<span class="a-btn-slide-icon"></span>
</a>
</article>
</section>
</body>
</html>
Archivo 4: disabledtextfields.js
function disableTextBox(){
document.salario.hextra.onclick = function(){
document.salario.numhorasex.disabled = !document.salario.numhorasex.disabled;
document.salario.pagohextra.disabled = !document.salario.pagohextra.disabled;
}
}
function addLoadEvent(func) {
var oldonload = window.onload;
if(typeof window.onload != 'function') {
window.onload = func;
}
else {
window.onload = function() {
if(oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(disableTextBox);
Archivo 5: inputFilter.js
/***********************************************************************************
* InputFilter.js: Filtrado no intrusivo de pulsaciones de teclas para
*
*
elementos INPUT del formulario.
*
*
*
* Este módulo hace una búsqueda por todo el documento de los campos
*
* <input type="text" /> de un formulario contenido en un documento web
*
* que contiene atributos no estándar denominados "allowed".
*
* Registra un controlador de evento onkeypress para que cualquiera de
*
* dichos elementos restrinja la entrada del usuario de forma que sólo
*
* se puedan introducir los caracteres que aparezcan en el valor de ese atributo. *
* Si el elemento INPUT también tiene un atributo denominado "messageid",
*
* el valor de dicho atributo se lleva al id de otro elemento del documento.
*
* Si el usuario digita un carácter que no se permite, el elemento messageid
*
* se hace visible. Si el usuario digita un carácter permitido, el elemento
*
* messageid se oculta.
*
* Este elemento id de mensaje se ha diseñado para indicar al usuario el por qué
*
* se ha rechazado una determinada pulsación de tecla.
*
*
*
* Acá se muestra un ejemplo de código HTML para utilizar este módulo js.
*
*
Aceptar sólo números:
*
*
<input id="integer" type="text" allowed="0123456789" messageid="numbersonly"> *
*
<span id="numbersonly" style="visibility:hidden">Sólo números enteros</span> *
*
*
* En los navegadores como Internet Explorer, que no admiten addEventListener(),
*
* el controlador keypress registrado por este módulo .js sobrescribe cualquier
*
* controlador keypress definido en el HTML.
*
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
18
Guía# 2: Estructuras de control - Sentencias condicionales
**********************************************************************************/
(function() { // Todo el módulo se encuentra dentro de una función anónima
// Cuando el documento se haya cargado totalmente se llama a la función
init()
if (window.addEventListener) window.addEventListener("load", init, false);
else if (window.attachEvent) window.attachEvent("onload", init);
// Buscar en el documento todos los elementos INPUT de tipo texto, ya que
// solamente en ellos se va a registrar un controlador de evento.
function init() {
var inputtags = document.getElementsByTagName("input");
// Hacer un recorrido por todos los campos del formulario
for(var i = 0 ; i < inputtags.length; i++) {
var tag = inputtags[i];
// Solo se desean controlar los campos de texto, los demás tipos de campos
// se pasan por alto
if (tag.type != "text") continue;
var allowed = tag.getAttribute("allowed");
// Solo se afectarán los campos con el atributo no estándar añadido allowed
if (!allowed) continue;
//
//
//
if
Al llegar acá es porque estamos con un campo de texto con el atributo
allowed, si es así registrar en esta etiqueta nuestra función de control
de evento
(tag.addEventListener)
tag.addEventListener("keypress", filter, false);
else {
// No utilizamos attachEvent porque no llama a la función de controlador
// con el valor correcto de la palabra clave this. En su lugar se invova
// con el manejador de evento onkeypress
tag.onkeypress = filter;
}
}
}
// Este es el controlador keypress que filtra la entrada del usuario
function filter(event) {
// Obtener el objeto event y el código de carácter de la tecla pulsada
// de forma compatible con todos los navegadores
var e = event || window.event;
// Objeto de evento de la tecla
var code = e.charCode || e.keyCode;
// tecla que se ha pulsado
//
if
if
if
Si se ha pulsado una tecla de función de cualquier tipo, no filtrarla
(e.charCode == 0) return true;
// Tecla de función (solo para Firefox)
(e.ctrlKey || e.altKey) return true; // Se mantienen presionadas Ctrl o Alt
(code < 32) return true;
// Carácter de Ctrl en tabla ASCII
// Dejar pasar teclas de retroceso (BackSpace), tabulación (Tab), entrada (Enter),
// escape (Scape) y espacios en blanco (SpaceBar)
if (code==0 || code==8 || code==9 || code==13 || code==27 || code==32) return
true;
// Buscar la información de los caracteres válidos para este campo de entrada
var allowed = this.getAttribute("allowed");
// Caracteres válidos
var messageElement = null;
// Mensaja a ocultar/mostrar
var messageid = this.getAttribute("messageid"); // id del mensaje, si existe
if (messageid) // Si existe un id del mensaje, obtener el elemento
messageElement = document.getElementById(messageid);
// Convertir el código de carácter a su carácter correspondiente
var c = String.fromCharCode(code);
// Comprobar si el carácter está dentro del conjunto de caracteres permitidos
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
19
Guía# 2: Estructuras de control - Sentencias condicionales
if (allowed.indexOf(c) != -1) {
// Si c es un carácter legal, ocultar el mensaje, si es que existe.
if (messageElement) messageElement.style.visibility = "hidden";
return true; // Aceptar el carácter
}
else {
// Si c no está en el conjunto de caracteres permitidos, mostrar el mensaje
if (messageElement) messageElement.style.visibility = "visible";
// Y rechazar este evento keypress
if (e.preventDefault) e.preventDefault();
if (e.returnValue) e.returnValue = false;
return false;
}
}
})(); // Finalizar la función anónima esperando ser invocada.
Resultado en el navegador haciendo uso del servidor web:
Ejemplo 3: En el siguiente ejemplo se ilustra cómo detectar el idioma en el cliente (navegador del usuario).
Para probar el ejemplo, será necesario que cambie el idioma predeterminado del navegador, agregando un
nuevo idioma si es necesario y subiéndolo hasta el primer nivel para que este nuevo idioma sea el
predefinido. Pregunte al docente cómo hacer esto si acaso no lo sabe ud.
Archivo 1: idioma.php
<!DOCTYPE html>
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
20
Guía# 2: Estructuras de control - Sentencias condicionales
<html lang="es">
<head>
<title>Detector de Lenguaje del Navegador</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,user-scalable=no,initialscale=1.0,maximum-scale=1.0,minimum-scale=1.0" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" href="css/idioma.css" />
</head>
<body>
<div id="wrapper">
<header>
<h1 class="emboss">Idioma del navegador</h1>
</header>
<section>
<?php
//Antes de nada introducimos mensajes en forma de variables
$espanol = "Hola";
$ingles = "Hello";
$aleman = "Hallo";
$frances = "Bonjour";
$italiano = "Ciao";
$portugues = "Olá";
//Ahora leemos del navegador cuál es su lengua oficial
$completo = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
$idioma = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
//$idioma=substr($HTTP_ACCEPT_LANGUAGE,0,2);
//Formulamos las posibilidades que se pueden dar
echo "<p>" . $completo . "<br>";
echo $idioma ."</p>\n";
if($idioma == "es"){
echo '<p class="msgOff">';
printf ("El lenguaje que se está utilizando en el navegador es el Español: %s
</p>\n", $espanol);
}
elseif($idioma == "fr"){
echo '<p class="msgOff">';
printf ("El lenguaje que se está utilizando en el navegador es el Francés: %s
</p>\n", $frances);
}
elseif($idioma == "en"){
echo '<p class="msgOff">';
printf ("El lenguaje que se está utilizando en el navegador es el Inglés: %s
</p>\n", $ingles);
}
elseif($idioma == "de"){
echo '<p class="msgOff">';
printf ("El lenguaje que se está utilizando en el navegador es el Alemán: %s </p>",
$aleman);
}
elseif($idioma == "it"){
echo '<p class="msgOff">';
printf ("El lenguaje que se está utilizando en el navegador es el Inglés: %s
</p>\n", $italiano);
}
elseif($idioma == "pt"){
echo '<p class="msgOff">';
printf ("El lenguaje que se está utilizando en el navegador es el Alemán: %s </p>",
$portugues);
}
else{
echo '<p class="msgOff">';
echo "El idioma del navegador es desconocido.</p>\n";
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
21
Guía# 2: Estructuras de control - Sentencias condicionales
}
?>
</section>
</div>
</body>
<script src="js/modernizr.custom.lis.js"></script>
<script src="js/switchclass.js"></script>
</html>
Archivo 2: idioma.css
@import url(https://fonts.googleapis.com/css?family=Noto+Sans);
@import url(https://fonts.googleapis.com/css?family=Allerta);
*
{
margin: 0;
padding: 0;
}
html, body
height: 100%;
}
{
body
{
background-image: url(../img/light_yellow.jpg);
background-size: 100vw 100vh;
background-attachment: fixed;
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
-o-box-sizing: border-box;
font-size: 15px;
}
#wrapper
{
margin:0 auto;
width:90%;
}
h1.emboss
{
color: #696acc;
font: Bold 3em "Allerta",Times,"Times New Roman";
margin: 9px 0;
text-align:center;
text-shadow: 0 -4px 3px rgba(255, 255, 255, 0.3),
0 3px 4px rgba(0, 0, 0, 0.2);
}
p
{
background-color: #ffffc0;
background-image: url('../img/language-icon.png');
background-repeat: no-repeat;
background-position: 10px center;
border: 1px solid;
font: Normal 1.2em "Noto Sans",Tahoma,Helvetica,"Liberation Sans";
margin: 10px 0px;
padding: 36px 10px 36px 136px;
}
.msgOff
{
background-color: #BDE5F8;
background-image: url('../img/info.png');
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
22
Guía# 2: Estructuras de control - Sentencias condicionales
color: #00529B;
}
.msgOn
{
background-color: #CFE9FC;
background-image: url('../img/info.png');
border:5px double #009;
color: #009C9D;
}
Archivo 3: switchclass.js
var parrafos = document.getElementsByClassName("msgOff");
for(var i=0; i<parrafos.length; i++){
parrafos[i].onmouseover = function(){
changeClass(this);
};
parrafos[i].onmouseout = function(){
changeClass(this);
}
}
function changeClass(element){
element.className = (element.className) == 'msgOff' ? 'msgOn' : 'msgOff';
}
Resultado en el navegador haciendo uso del servidor web:
Ejemplo 4: El siguiente script PHP muestra cómo utilizar la función date() para manipular la fecha y hora
del sistema. Debe notar que se está estableciendo a nivel de código la zona horaria adecuada para la
ubicación del país. Se hace uso de la instrucción switch para asignar los valores del día, el mes y la hora del
sistema.
Archivo 1: fechahora.php
<!DOCTYPE html>
<html lang="es">
<head>
<title>Fecha y hora del Sistema</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,user-scalable=no,initialscale=1.0,maximum-scale=1.0,minimum-scale=1.0" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" href="css/fechahora.css" />
</head>
<body>
<?php
//Establecer la zona horaria para el servidor web,
//de modo que concuerde con la hora del país donde
//se está ejecutando el script.
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
23
Guía# 2: Estructuras de control - Sentencias condicionales
date_default_timezone_set("America/El_Salvador");
$dia=date("w");
switch($dia){
case 0: $dia="Domingo";break;
case 1: $dia="Lunes";break;
case 2: $dia="Martes";break;
case 3: $dia="Miércoles";break;
case 4: $dia="Jueves";break;
case 5: $dia="Viernes";break;
case 6: $dia="Sábado";break;
}
$mes=date("n");
switch($mes){
case 1: $mes="Enero";break;
case 2: $mes="Febrero";break;
case 3: $mes="Marzo";break;
case 4: $mes="Abril";break;
case 5: $mes="Mayo";break;
case 6: $mes="Junio";break;
case 7: $mes="Julio";break;
case 8: $mes="Agosto";break;
case 9: $mes="Septiembre";break;
case 10: $mes="Octubre";break;
case 11: $mes="Noviembre";break;
case 12: $mes="Diciembre";break;
}
$numero = date("j");
$anio = date("Y");
$hora = date("g:i a");
printf("<header>\n");
printf("\t<div class=\"box box3 shadow3\">\n");
printf("\t\t<p>Hoy es %s, %d de %s del %d \n</p>\n", $dia, $numero, $mes, $anio);
printf("\t</div>\n");
printf("</header>\n");
printf("<section>\n");
printf("<article>\n");
printf("\t<div class=\"box box4 shadow4\">\n");
printf("\t\t\t<p>Son las: %s \n\t\t</p>\n", $hora);
printf("\t</div>\n");
printf("</article>\n");
printf("</section>\n");
?>
</body>
<script src="js/modernizr.custom.lis.js"></script>
<script src="js/prefixfree.min.js"></script>
</html>
Archivo 2: fechahora.css
*
{
margin: 0;
padding: 0;
}
html, body
{
height: 100%;
}
body
{
background-image: url(../img/windows-10_fucsia.jpg);
background-size: 100vw 100vh;
background-attachment: fixed;
font-size: 16px;
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
24
Guía# 2: Estructuras de control - Sentencias condicionales
}
.box
{
background-color: white;
border-radius: 5px;
float: left;
height: 200px;
margin: 25px 15px;
width: 40%;
}
.box3
{
background-color: #9EEBA1;
color:#064020;
font-family: Georgia,Times,serif;
font-size: 1.5em;
font-weight: bold;
}
.box4 {
background-color: #9EEBBF;
color:#096040;
font-family: "Palatino Linotype","Book Antiqua",Palatino,serif;
font-size: 1.5em;
font-weight: bold;
}
.shadow3, .shadow4 {
box-shadow: 6px 6px 3px 0px rgba(66,66,66,0.9);
position:relative;
}
.shadow3 p, .shadow4 p {
border: 2px dashed #F7EEEE;
border-radius: 5px;
height: 100px;
margin-left: 6%;
margin-top: 6%;
width: 87%;
}
Resultado en el navegador usando el servidor web:
Ejemplo 5: El siguiente ejemplo permite realizar una encuesta a los visitantes del sitio averiguando de qué
forma se han enterado del sitio. El sitio únicamente reporta el medio que el usuario ha seleccionado, no
realiza conteos. Esto será posible hasta que veamos archivos o bases de datos.
Archivo1: encuesta.php
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
25
Guía# 2: Estructuras de control - Sentencias condicionales
<!DOCTYPE html>
<html lang="es">
<head>
<title>Encuesta</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" href="css/encuesta.css" />
<link rel="stylesheet" href="css/cd-dropdown-menu.css" />
<link rel="stylesheet" href="css/common.css" />
<link rel="stylesheet" href="css/demo.css" />
<link rel="stylesheet" href="css/icons.css" />
<link rel="stylesheet" href="css/links.css" />
<script src="js/modernizr.custom.lis.js"></script>
<script src="js/prefixfree.min.js"></script>
</head>
<body>
<header>
<h1 class="extruded">
Favor responder la pregunta
</h1>
</header>
<section>
<article>
<?php
if(isset($_POST['enviar'])):
$contact = $_POST['contacto'];
switch($contact):
case 'client':
echo "<p>Cliente que visita constantemente el sitio.</p>";
break;
case 'television':
echo "<p>Cliente referido por anuncio televisivo.</p>";
break;
case 'phonebook':
echo "<p>Cliente referido mediante guía telefónica.</p>";
break;
case 'social':
echo "<p>Cliente referido a través de redes sociales.</p>";
break;
case 'friend':
echo "<p>Cliente referido por amigos.</p>";
break;
//No parece necesario porque el ingreso es por medio de un campo select
default:
echo "<p>No se puede especificar cómo contactó el cliente con nuestro
sitio web.</p>";
endswitch;
$link = "<a href=\"". $_SERVER['PHP_SELF'] ."\" class=\"a-btn\">";
$link .= "\t<span class=\"a-btn-symbol\">i</span>";
$link .= "\t<span class=\"a-btn-text\">Volver</span>";
$link .= "\t<span class=\"a-btn-slide-text\">al formulario</span>";
$link .= "\t<span class=\"a-btn-slide-icon\"></span>";
$link .= "</a>";
echo $link;
else:
?>
<form action="<? echo $_SERVER['PHP_SELF'] ?>" method="POST">
<select name="contacto" id="cd-dropdown" class="cd-select">
<option value="-1" selected>(Selecciones una opción)</option>
<option value="client" class="icon-chrome">Soy cliente frecuente</option>
<option value="television" class="icon-safari">Publicidad por televisión</option>
<option value="phonebook" class="icon-IE">Directorio telefónico</option>
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
26
Guía# 2: Estructuras de control - Sentencias condicionales
<option value="social" class="icon-firefox">A través de redes sociales</option>
<option value="friend" class="icon-opera">Por sugerencia de amigo(s)</option>
</select>
<input type="submit" name="enviar" id="enviar" class="styled-button" value="Enviar" />
</form>
<?php
endif;
?>
</article>
</section>
</body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="js/jquery.dropdown.js"></script>
<script>
$(function() {
$('#cd-dropdown').dropdown({
gutter : 5,
stack : false,
slidingIn : 100
});
});
</script>
</html>
Archivo 2: encuesta.css
/* General Demo Style */
@import url(http://fonts.googleapis.com/css?family=Lato:300,400,700);
* {
border: 0;
margin: 0;
padding: 0;
}
html, body {
height: 100%;
}
body {
font-size: 16px;
background: rgb(110,133,255);
background: -moz-linear-gradient(30deg, rgb(110,133,255) 30%, rgb(237,241,163) 60%);
background: -webkit-linear-gradient(30deg, rgb(110,133,255) 30%, rgb(237,241,163)
60%);
background: -o-linear-gradient(30deg, rgb(110,133,255) 30%, rgb(237,241,163) 60%);
background: -ms-linear-gradient(30deg, rgb(110,133,255) 30%, rgb(237,241,163) 60%);
background: linear-gradient(120deg, rgb(110,133,255) 30%, rgb(237,241,163) 60%);
}
header h1 {
margin-top: 16px;
margin-bottom: 24px;
}
article p
{
color:Navy;
font:bold 1.2em "Lato",Helvetica,sans-serif;
text-align: center;
}
h1 {
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
27
Guía# 2: Estructuras de control - Sentencias condicionales
text-align: center;
}
.extruded {
color: #9028C6;
font-family: proxima-nova-1, proxima-nova-2, 'Helvetica Neue', Arial, sans-serif;
font-size: 48px;
font-weight: bold;
text-shadow: #000 1px 1px, #000 2px 2px, #000 3px 3px;
position: relative;
-moz-transition: all 0.3s ease-out; /* FF3.7+ */
-o-transition: all 0.3s ease-out; /* Opera 10.5 */
-webkit-transition: all 0.3s ease-out; /* Saf3.2+, Chrome */
transition: all 0.3s ease-out;
}
.extruded:hover {
color: #FFF;
text-shadow: #83D
#83D
#83D
#83D
#83D
#83D
left: -6px;
top: -6px;
}
1px
2px
3px
4px
5px
6px
1px,
2px,
3px,
4px,
5px,
6px;
.styled-button {
background: #00A0D1;
background: -moz-linear-gradient(top,#00A0D1 0%,#008DB8 100%);
background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#00A0D1),colorstop(100%,#008DB8));
background: -webkit-linear-gradient(top,#00A0D1 0%,#008DB8 100%);
background: -o-linear-gradient(top,#00A0D1 0%,#008DB8 100%);
background: -ms-linear-gradient(top,#00A0D1 0%,#008DB8 100%);
background: linear-gradient(top,#00A0D1 0%,#008DB8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(
startColorstr='#00A0D1',endColorstr='#008DB8',GradientType=0);
border-radius:40px;
-moz-border-radius:40px;
-webkit-border-radius:40px;
border:1px solid #095B7E;
color:#cfebf3;
display: block;
font:Bold 15px 'Helvetica Neue',sans-serif;
margin: 0 auto;
padding:8px 20px;
}
.styled-button:hover {
background: #00C6E3;
background: -moz-linear-gradient(top,#00C6E3 0%,#009AC9 100%);
background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#00C6E3),colorstop(100%,#009AC9));
background: -webkit-linear-gradient(top,#00C6E3 0%,#009AC9 100%);
background: -o-linear-gradient(top,#00C6E3 0%,#009AC9 100%);
background: -ms-linear-gradient(top,#00C6E3 0%,#009AC9 100%);
background: linear-gradient(top,#00C6E3 0%,#009AC9 100%);
filter: progid:DXImageTransform.Microsoft.gradient(
startColorstr='#00C6E3',endColorstr='#009AC9',GradientType=0);
border-radius:40px;
border:1px solid #095B7E;
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
28
Guía# 2: Estructuras de control - Sentencias condicionales
color:#fcfaff;
display: block;
font:Bold 15px 'Helvetica Neue',sans-serif;
margin: 0 auto;
padding:8px 20px;
}
Archivo 3: cd-dropdown-menu.css
.cd-dropdown ul {
position: absolute;
top: 0px;
width: 100%;
}
.cd-dropdown > span,
.cd-dropdown ul li {
box-shadow: 0 1px 1px rgba(0,0,0,0.1);
}
.cd-dropdown ul li {
position: absolute;
width: 100%;
pointer-events: none;
}
.cd-active.cd-dropdown > span {
color: #c29ad2;
}
.cd-active.cd-dropdown ul li {
pointer-events: auto;
}
.cd-active.cd-dropdown ul li span {
-webkit-transition: all 0.2s linear 0s;
-moz-transition: all 0.2s linear 0s;
-ms-transition: all 0.2s linear 0s;
-o-transition: all 0.2s linear 0s;
transition: all 0.2s linear 0s;
}
.cd-active.cd-dropdown ul li span:hover {
background: #c29ad2;
color: #fff;
}
Archivo 4: common.css
.cd-dropdown,
.cd-select {
position: relative;
width: 500px;
margin: 20px auto;
display: block;
}
.cd-dropdown > span {
color: #999;
height: 60px;
line-height: 60px;
font-weight: 700;
font-size: 16px;
background: #fff;
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
29
Guía# 2: Estructuras de control - Sentencias condicionales
display: block;
padding: 0 50px 0 26px;
position: relative;
cursor: pointer;
width: 100%;
}
.cd-dropdown > span:after {
content: '\25BC';
position: absolute;
right: 0px;
top: 15%;
width: 50px;
text-align: center;
font-size: 12px;
padding: 10px;
height: 70%;
line-height: 24px;
border-left: 1px solid #ddd;
}
.cd-dropdown.cd-active > span:after {
content: '\25B2';
}
.cd-dropdown ul {
list-style-type: none;
margin: 0;
padding: 0;
display: block;
/*position: relative;*/
}
.cd-dropdown ul li {
display: block;
}
.cd-dropdown ul li span {
width: 100%;
background: #fff;
line-height: 60px;
padding: 0 30px 0 75px;
display: block;
color: #bcbcbc;
cursor: pointer;
font-weight: 700;
}
.cd-dropdown > span,
.cd-dropdown ul li span {
-webkit-backface-visibility: hidden;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.cd-dropdown > span span[class^="icon-"],
.cd-dropdown > span span[class*=" icon-"]{
padding: 0 30px 0 45px;
}
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
30
Guía# 2: Estructuras de control - Sentencias condicionales
/* Select fallback styling */
.cd-select {
border: 1px solid #ddd;
}
Resultado en el navegador haciendo uso del servidor web:
Ejemplo 6: El siguiente ejemplo ilustra cómo utilizar el operador condicional para encontrar el mayor de
tres números ingresados a través de un formulario. Los campos de texto donde se ingresan los números son
validados con JavaScript para que sólo acepten valores enteros (de 0 a 9), mostrando un mensaje en caso de
querer introducir cualquier otro carácter que no sea numérico.
Archivo 1: compararnumeros.html
<!DOCTYPE html>
<html lang="es">
<head>
<title>Comparar números</title>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width,user-scalable=no,initialscale=1.0,maximum-scale=1.0,minimum-scale=1.0" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
31
Guía# 2: Estructuras de control - Sentencias condicionales
<link href="http://fonts.googleapis.com/css?family=Muli" rel="stylesheet">
<link rel="stylesheet" href="css/font.css" />
<link rel="stylesheet" href="css/formstyle.css" />
<script src="js/validar.js"></script>
<!-- Para las versiones anteriores del IE9 -->
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<header>
<h1>Comparación de números</h1>
</header>
<section>
<article id="formarea">
<form name="frmpalabras" method="POST" action="compararnum.php">
<fieldset>
<label for="number1">Primer número:</label>
<input type="text" name="numero1" id="number1" placeholder="Primer número" />
<br />
<span id="numbersOnly1">Ingrese números enteros</span>
<label for="number2">Segundo número:</label>
<input type="text" name="numero2" id="number2" placeholder="Segundo número" />
<br />
<span id="numbersOnly2">Ingrese números enteros</span>
<label for="number3">Tercer número:</label>
<input type="text" name="numero3" id="number3" placeholder="Tercer número" />
<br />
<span id="numbersOnly3">Ingrese números enteros</span>
<input type="submit" name="conteo" id="count" value="Enviar" />
</fieldset>
</form>
</article>
</section>
</body>
</html>
Archivo 2: validar.js
(function(){
//Agregar al manejador de evento load la función init())
if (window.addEventListener) window.addEventListener("load", init, false);
else if (window.attachEvent) window.attachEvent("onload", init);
// Buscar en el documento todos los elementos INPUT de tipo texto, ya que
// solamente en ellos se va a registrar un controlador de evento.
function init(){
var number1 = document.getElementById("number1");
var number2 = document.getElementById("number2");
var number3 = document.getElementById("number3");
var resparea = document.getElementById("fact");
// Hacer un recorrido por todos los campos del formulario
if (number1.addEventListener){
number1.addEventListener("keypress", filter, false);
}
else {
// No utilizamos attachEvent porque no llama a la función de controlador
// con el valor correcto de la palabra clave this. En su lugar se invova
// con el manejador de evento onkeypress
number1.onkeypress = filter;
}
if (number2.addEventListener){
number2.addEventListener("keypress", filter, false);
}
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
32
Guía# 2: Estructuras de control - Sentencias condicionales
else {
// No utilizamos attachEvent porque no llama
// con el valor correcto de la palabra clave
// con el manejador de evento onkeypress
number2.onkeypress = filter;
}
if (number3.addEventListener){
number3.addEventListener("keypress", filter,
}
else {
// No utilizamos attachEvent porque no llama
// con el valor correcto de la palabra clave
// con el manejador de evento onkeypress
number3.onkeypress = filter;
}
a la función de controlador
this. En su lugar se invova
false);
a la función de controlador
this. En su lugar se invova
}
// Este es el controlador keypress que filtra la entrada del usuario
function filter(event) {
// Obtener el objeto event y el código de carácter de la tecla pulsada
// de forma compatible con todos los navegadores
var e = event || window.event;
// Objeto de evento de la tecla
var code = e.charCode || e.keyCode;
// tecla que se ha pulsado
//
if
if
if
Si se ha pulsado una tecla de función de cualquier tipo, no filtrarla
(e.charCode == 0) return true;
// Tecla de función (solo para Firefox)
(e.ctrlKey || e.altKey) return true; // Se mantienen presionadas Ctrl o Alt
(code < 32) return true;
// Carácter de Ctrl en tabla ASCII
// Dejar pasar teclas de retroceso (BackSpace), tabulación (Tab), entrada (Enter)
y
// escape (Scape)
if (code==0 || code==8 || code==9 || code==13 || code==27) return true;
// Buscar la información de los caracteres válidos para este campo
var allowed1 = "0123456789";
// Caracteres válidos
var messageElement1 = document.getElementById("numbersOnly1"); //
ocultar/mostrar
var messageElement2 = document.getElementById("numbersOnly2"); //
ocultar/mostrar
var messageElement3 = document.getElementById("numbersOnly3"); //
ocultar/mostrar
de entrada
Mensaja a
Mensaja a
Mensaja a
// Convertir el código de carácter a su carácter correspondiente
var c = String.fromCharCode(code);
// Comprobar si el carácter está dentro del conjunto de caracteres permitidos
if (allowed1.indexOf(c) != -1) {
// Si c es un carácter legal, ocultar el mensaje, si es que existe.
if (messageElement1) messageElement1.style.visibility = "hidden";
return true; // Aceptar el carácter
}
else {
// Si c no está en el conjunto de caracteres permitidos, mostrar el mensaje
if (messageElement1) messageElement1.style.visibility = "visible";
// Y rechazar este evento keypress
if (e.preventDefault) e.preventDefault();
if (e.returnValue) e.returnValue = false;
return false;
}
if (allowed2.indexOf(c) != -1) {
// Si c es un carácter legal, ocultar el mensaje, si es que existe.
if (messageElement2) messageElement2.style.visibility = "hidden";
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
33
Guía# 2: Estructuras de control - Sentencias condicionales
return true; // Aceptar el carácter
}
else {
// Si c no está en el conjunto de caracteres permitidos, mostrar el mensaje
if (messageElement2) messageElement2.style.visibility = "visible";
// Y rechazar este evento keypress
if (e.preventDefault) e.preventDefault();
if (e.returnValue) e.returnValue = false;
return false;
}
if (allowed3.indexOf(c) != -1) {
// Si c es un carácter legal, ocultar el mensaje, si es que existe.
if (messageElement3) messageElement3.style.visibility = "hidden";
return true; // Aceptar el carácter
}
else {
// Si c no está en el conjunto de caracteres permitidos, mostrar el mensaje
if (messageElement3) messageElement3.style.visibility = "visible";
// Y rechazar este evento keypress
if (e.preventDefault) e.preventDefault();
if (e.returnValue) e.returnValue = false;
return false;
}
}
})();
Archivo 3: compararnum.php
<!DOCTYPE html>
<html lang="es">
<head>
<title>Contador de palabras</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Muli" />
<link rel="stylesheet" href="css/font.css" />
<link rel="stylesheet" href="css/formstyle.css" />
<script src="js/prefixfree.min.js"></script>
<!-- Para las versiones anteriores del IE9 -->
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<header>
<h1>
Resultados de la comparación de <?php echo $num1 = isset($_POST['numero1']) ?
$_POST['numero1'] : 0; ?>,
<?php echo $num2 = isset($_POST['numero3']) ? $_POST['numero2'] : 0; ?> y
<?php echo $num3 = isset($_POST['numero3']) ? $_POST['numero3'] : 0; ?>
</h1>
</header>
<section>
<article>
<p class="msg">
<?php
$elmayor = ($num1 > $num2) ? $num1 : $num2;
$elmayor = ($elmayor > $num3) ? $elmayor : $num3;
printf("El número mayor es: %d", $elmayor);
?>
</p>
<article>
</section>
</body>
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
34
Guía# 2: Estructuras de control - Sentencias condicionales
</html>
Archivo 4: formstyle.css
* {
border: 0;
margin: 0;
outline: none;
padding: 0;
}
html {
height: 100%;
}
body {
/* Old browsers */
background: #1e2021;
/* FF3.6+ */
background: -moz-linear-gradient(-45deg, #1e2021 1%, #4a4e54 50%, #0c0309 100%);
/* Chrome,Safari4+ */
background: -webkit-gradient(linear, left top, right bottom, color-stop(1%,#1e2021),
color-stop(50%,#4a4e54), color-stop(100%,#0c0309));
/* Chrome10+,Safari5.1+ */
background: -webkit-linear-gradient(-45deg, #1e2021 1%,#4a4e54 50%,#0c0309 100%);
/* Opera 11.10+ */
background: -o-linear-gradient(-45deg, #1e2021 1%,#4a4e54 50%,#0c0309 100%);
/* IE10+ */
background: -ms-linear-gradient(-45deg, #1e2021 1%,#4a4e54 50%,#0c0309 100%);
/* W3C */
background: linear-gradient(135deg, #1e2021 1%,#4a4e54 50%,#0c0309 100%);
/* IE6-9 fallback on horizontal gradient */
filter:
progid:DXImageTransform.Microsoft.gradient(
startColorstr='#1e2021',
endColorstr='#0c0309',GradientType=1 );
font-family: 'LeagueGothicRegular',Arial,Helvetica,"Liberation Sans";
}
h1 {
font-size: 48px;
color: #9ab;
text-transform: uppercase;
text-align: center;
margin: 16px auto;
text-shadow: 1px 1px 0 #CCC,
2px 2px 0 #CCC, /* end of 2 level deep grey shadow */
3px 3px 0 #444,
4px 4px 0 #444,
5px 5px 0 #444,
6px 6px 0 #444; /* end of 4 level deep dark shadow */
/* CSS3 Transform Effect */
transform: scale(1.2);
}
.msg {
background: #c9d0de; border: 1px solid #e1e1e1;
-moz-box-shadow: 0px 0px 8px #444;
-webkit-box-shadow: 0px 0px 8px #444;
box-shadow: 0px 0px 8px #444;
color:#201821;
font-family:Andika, Arial, sans-serif;
font-size:1.1em;
font-variant:small-caps;
letter-spacing:.1em;
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
35
Guía# 2: Estructuras de control - Sentencias condicionales
margin: 20px auto;
padding: 20px 10px;
text-shadow: 0px 1px 0px #f2f2f2;
width: 430px;
}
#numbersOnly1,
#numbersOnly2,
#numbersOnly3 {
/* Old browsers */
background: #febbbb;
/* FF3.6+ */
background: -moz-linear-gradient(-45deg, #febbbb 0%, #fe9090 46%, #ff5c5c 100%);
/* Chrome,Safari4+ */
background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#febbbb),
color-stop(46%,#fe9090), color-stop(100%,#ff5c5c));
/* Chrome10+,Safari5.1+ */
background: -webkit-linear-gradient(-45deg, #febbbb 0%,#fe9090 46%,#ff5c5c 100%);
/* Opera 11.10+ */
background: -o-linear-gradient(-45deg, #febbbb 0%,#fe9090 46%,#ff5c5c 100%);
/* IE10+ */
background: -ms-linear-gradient(-45deg, #febbbb 0%,#fe9090 46%,#ff5c5c 100%);
/* W3C */
background: linear-gradient(135deg, #febbbb 0%,#fe9090 46%,#ff5c5c 100%);
/* IE6-9 fallback on horizontal gradient */
filter:
progid:DXImageTransform.Microsoft.gradient(
startColorstr='#febbbb',
endColorstr='#ff5c5c',GradientType=1 );
border:3px groove rgb(230,40,5);
-moz-border-radius: 12px 12px 12px 12px;
-webkit-border-radius: 12px 12px 12px 12px;
-o-border-radius: 12px 12px 12px 12px;
-ms-border-radius: 12px 12px 12px 12px;
border-radius: 12px 12px 12px 12px;
color:White;
font:Bold 8pt "LatoSemibold",Arial,Helvetica,sans-serif;
padding: 4px 5px;
visibility:hidden;
}
#formarea {
background: #c9d0de; border: 1px solid #e1e1e1;
-moz-box-shadow: 0px 0px 8px #444;
-webkit-box-shadow: 0px 0px 8px #444;
box-shadow: 0px 0px 8px #444;
margin: 20px auto;
padding: 20px 10px;
width: 430px;
}
label {
float: left;
clear: left;
margin: 11px 20px 0 0;
width: 100px;
text-align: right;
font-size: 16px;
color: #445668;
text-transform: uppercase;
text-shadow: 0px 1px 0px #f2f2f2;
}
input {
width: 260px;
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
36
Guía# 2: Estructuras de control - Sentencias condicionales
height: 35px;
padding: 5px 20px 0px 20px;
margin: 0 0 20px 0;
background: #546a7f; /* Old browsers */
background: -moz-linear-gradient(-45deg, #546a7f 0%, #5e768f 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#546a7f),
color-stop(100%,#5e768f)); /* Chrome,Safari4+ */
background:
-webkit-linear-gradient(-45deg,
#546a7f
0%,#5e768f
100%);
/*
Chrome10+,Safari5.1+ */
background: -o-linear-gradient(-45deg, #546a7f 0%,#5e768f 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(-45deg, #546a7f 0%,#5e768f 100%); /* IE10+ */
background: linear-gradient(135deg, #546a7f 0%,#5e768f 100%); /* W3C */
filter:
progid:DXImageTransform.Microsoft.gradient(
startColorstr='#546a7f',
endColorstr='#5e768f',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
-ms-border-radius: 5px;
border-radius: 5px;
-moz-box-shadow: 0px 1px 0px #f2f2f2;
-webkit-box-shadow: 0px 1px 0px #f2f2f2;
font-family: sans-serif;
font-size: 16px;
color: #f2f2f2;
text-transform: uppercase;
text-shadow: 0px -1px 0px #334f71;
}
input::-webkit-input-placeholder {
color: #a1b2c3;
text-shadow: 0px -1px 0px #38506b;
}
input:-moz-placeholder {
color: #a1b2c3;
text-shadow: 0px -1px 0px #38506b;
}
input[type=submit] {
border:2px groove #7c93ba;
/* forces the cursor to change to a hand when the button is hovered */
cursor:pointer;
padding: 5px 25px;
/* give the background a gradient - see cssdemos.tupence.co.uk/gradients.htm for more
info */
/* required for browsers that don't support gradients */
background-color:#6b6dbb;
background:
-webkit-gradient(linear,
left
top,
left
bottom,
from(#88add7),
to(#6b6dbb));
background: -webkit-linear-gradient(top, #88add7, #6b6dbb);
background: -moz-linear-gradient(top, #88add7, #6b6dbb);
background: -o-linear-gradient(top, #88add7, #6b6dbb);
background: linear-gradient(top, #88add7, #6b6dbb);
/* style to the text inside the button */
font-family:Andika, Arial, sans-serif;
color:#fff;
font-size:1.1em;
letter-spacing:.1em;
font-variant:small-caps;
/* give the corners a small curve */
-webkit-border-radius: 0 15px 15px 0;
-moz-border-radius: 0 15px 15px 0;
border-radius: 0 15px 15px 0;
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
37
Guía# 2: Estructuras de control - Sentencias condicionales
/*add a drop shadow to the button*/
-webkit-box-shadow: rgba(0, 0, 0, .75) 0 2px 6px;
-moz-box-shadow: rgba(0, 0, 0, .75) 0 2px 6px;
box-shadow: rgba(0, 0, 0, .75) 0 2px 6px;
}
input[type=submit]:hover,
input[type=submit]:focus {
color:#edebda;
/* reduce the spread of the shadow to give a pushed effect */
-webkit-box-shadow: rgba(0, 0, 0, .25) 0 1px 0px;
-moz-box-shadow: rgba(0, 0, 0, .25) 0 1px 0px;
box-shadow: rgba(0, 0, 0, .25) 0 1px 0px;
}
textarea {
width: 260px; height: 170px; padding: 12px 20px 0px 20px; margin: 0 0 20px 0;
background: #546a7f; /* Old browsers */
background: -moz-linear-gradient(-45deg, #546a7f 0%, #5e768f 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#546a7f),
color-stop(100%,#5e768f)); /* Chrome,Safari4+ */
background:
-webkit-linear-gradient(-45deg,
#546a7f
0%,#5e768f
100%);
/*
Chrome10+,Safari5.1+ */
background: -o-linear-gradient(-45deg, #546a7f 0%,#5e768f 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(-45deg, #546a7f 0%,#5e768f 100%); /* IE10+ */
background: linear-gradient(135deg, #546a7f 0%,#5e768f 100%); /* W3C */
filter:
progid:DXImageTransform.Microsoft.gradient(
startColorstr='#546a7f',
endColorstr='#5e768f',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
-moz-box-shadow: 0px 1px 0px #f2f2f2;
-webkit-box-shadow: 0px 1px 0px #f2f2f2;
font-family: sans-serif;
font-size: 16px;
color: #f2f2f2;
text-transform: uppercase;
text-shadow: 0px -1px 0px #334f71;
}
textarea::-webkit-input-placeholder {
color: #a1b2c3;
text-shadow: 0px -1px 0px #38506b;
}
textarea:-moz-placeholder {
color: #a1b2c3;
text-shadow: 0px -1px 0px #38506b;
}
input:focus,
textarea:focus {
/* Old browsers */
background: #668099;
/* FF3.6+ */
background: -moz-linear-gradient(-45deg, #668099 0%, #728eaa 100%);
/* Chrome,Safari4+ */
background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#668099),
color-stop(100%,#728eaa));
/* Chrome10+,Safari5.1+ */
background: -webkit-linear-gradient(-45deg, #668099 0%,#728eaa 100%);
/* Opera 11.10+ */
background: -o-linear-gradient(-45deg, #668099 0%,#728eaa 100%);
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
38
Guía# 2: Estructuras de control - Sentencias condicionales
/* IE10+ */
background: -ms-linear-gradient(-45deg, #668099 0%,#728eaa 100%);
/* W3C */
background: linear-gradient(135deg, #668099 0%,#728eaa 100%);
/* IE6-9 fallback on horizontal gradient */
filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#668099',
endColorstr='#728eaa',GradientType=1);
}
Archivo 5: fonts.css
@font-face {
font-family: 'LeagueGothicRegular';
src: url('../fonts/League_Gothic.eot');
src: url('../fonts/League_Gothic.woff') format('woff'),
url('../fonts/League_Gothic.otf') format('opentype'),
url('../fonts/League_Gothic.svg#LeagueGothic') format('svg');
}
Resultado en el navegador usando el servidor web:
V. DISCUSION DE RESULTADOS
1.
2.
Cree un script que a partir de la edad ingresada en un campo tipo number de formulario calcule el
número de días que la persona que la ha ingresado ha vivido. Tome en cuenta los años bisiestos para
obtener el cálculo exacto de días.
Realice un script que le permita determinar si un carácter ingresado por el usuario a través de un
formulario, es una vocal (mayúscula, minúscula o acentuada), una consonante (mayúscula o minúscula),
un número (del 0 al 9) o símbolos (.,;:()""''!¡¿?#$%&, etc). En caso de no ser ninguno de estos caracteres,
debe mostrar un mensaje que indique que "el carácter ingresado no se puede procesar".
VI. INVESTIGACION COMPLEMENTARIA
1.
El número de unidades valorativas que puede cursar un estudiante en cada ciclo es determinado de
acuerdo a su CUM:
i. Si el CUM del estudiante es mayor o igual que 7.5, podrá cursar un máximo de 32 unidades
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
39
Guía# 2: Estructuras de control - Sentencias condicionales
valorativas (UV),
ii. Si el CUM del estudiante es mayor o igual que 7.0, pero menor que 7.5, podrá cursar un máximo de 24
unidades valorativas (UV).
iii. Si el CUM es mayor o igual que 6.0 y menor que 7.0, podrá cursar un máximo de 20 unidades
valorativas.
iv. Si el CUM acumulado es menor que 6.0, podrá cursar un máximo de 16 unidades valorativas.
Se pide que realice un formulario en donde se ingresen las notas de 5 materias que el estudiante ha
cursado durante el primer ciclo de estudios y a partir de estas calcular el CUM y en base al valor
obtenido indique el número de unidades valorativas que puede cursar el siguiente ciclo.
Puede crear un formulario como el siguiente:
VII. BIBLIOGRAFIA






Cabezas Granados, Luis Miguel. PHP 6 Manual Imprescindible. Editorial Anaya Multimedia. 1ª edición.
Madrid, España. 2010.
Doyle, Matt. Fundamentos de PHP Práctico. Editorial Anaya Multimedia. 1ª edición. Madrid, España.
2010.
Gutiérrez, Abraham / Bravo, Ginés. PHP 5 a través de ejemplos. Editorial Alfaomega RAMA. 1ra edición.
México. Junio 2005.
Tim Converse / Steve Suehring. LA BIBLIA DE PHP 6 y MySQL. Editorial Anaya Multimedia. 1a.
Edición. Madrid, España. 2009.
John Coggeshall. La Biblia de PHP 5. 1ra Edición. Editorial Anaya Multimedia. Madrid España.
http://www.php.net/manual/en
Desarrollo de Aplicaciones Web con Software Interpretado en el Servidor
40
Descargar