Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 85

CAP.

Funciones
CAP. 6: FUNCIONES ••

lii FUNCIONES PARA VARIABLES 1

Veamos las p r i n c i p a l e s funciones q u e tiene PHP para el manejo de las variables; hay q u e tener en

cuenta q u e las funciones afectan directamente a los valores contenidos en la v a r i a b l e .

¡ 6.1.1 1 Función isset ¡J

Devuelve true si u n a v a r i a b l e de c u a l q u i e r ti p o tiene un valor asignado; hay q u e tener en cuenta q u e

un espacio en b l a n c o es c o n s i d e r a d o como valor para u n a v a r i a b l e de tipo c a d e n a . Su formato es:

............................................................
. .
. .

¡ isset($variable) ¡


. •
.
............................................................

Veamos algunos casos:

o Si necesitamos comprobar si u n a v a r i a b l e de ti p o cadena tiene un valor a s i g n a d o , podemos usar

el siguiente código:

,·•································································································································································································
• •

c?php ·

$titulo='Fundamentos de programación con PHP' ;

. if (isset($titulo)) .

· echo 'La variable tiene contenido'; ·

else

. echo ' L a variable no tiene d e fi n i c i ó n ' ; .


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . ..... .... . ... ..... .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . ... ... ........ .. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Resultado:

[ La variable tiene contenido ]

Hay q u e tener en cuenta q u e si la v a r i a b l e está d e fi n i d a de la siguiente manera $titulo="; t a m b i é n

devolverá el mensaje «La variable tiene contenido», pues el espacio t a m b i é n es considerado

como un valor.

o Ahora comprobaremos c u á l será la s a l i d a si evaluamos una variable n u m é r i c a ; d e b e m o s tener

en cuenta q u e el resultado nos debe arrojar el tipo de datos y su d e fi n i c i ó n true o false, según el

valor de la v a r i a b l e :

···································································································································································································.
• •

c?php

$resultado= isset($edad);

echo 'El variable tiene por d e fi n i c i ó n : ';



echo var_dump($resultado);

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .............. . ... . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ... ..... . ........ ... . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Resultado:

El variable tiene por definición:

boolean false
••••• DESARROLLO DE APLICACIONES WEB CON PHP

La función var_dump ti e n e por misión i m p r i m i r información acerca de la v a r i a b l e a evaluar; en

este caso, evalúa cuál es el resultado d e l isset a la v a r i a b l e edad, q u e no está d e fi n i d a .

o En el siguiente ejemplo v a l i d a r e m o s el ingreso de un valor en un control TEXT, al i n i c i a r la aplicación

debe mostrar el mensaje « D e b e registrar un monto», tal como se muestra en la siguiente i m a g e n :

Validación usando ISSET

Ingrese Debe registrar un

monto monto

1 Validar J

Si el u s u a r i o ingresa un valor en el control TEXTy presiona el botón validar, se mostrará el mensaje

« I n g r e s o correcto», tal como se muestra en la s i g u i e n t e i m a g e n :

Validación usando ISSET

Ingrese
10000 Ingreso correcto
monto

1 Validar ]

El código P H P para la s o l u c i ó n del e j e m p l o es:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .

<!DOCTYPE html>

<html>

<head> •


<meta charset=''UTF-8''> •

• •

<title>Validaciones</title>
• •

<link href=''estilo.css'' rel=''stylesheet''> •

• •
• •

</head> •
• •

<body> •

<header>

<h2 id=''centrado''>Validacion usando ISSET</h2>

</header>

<section>

<?php

error_reporting(0};

• if(isset($_POST['txtMonto']))

$mensaje='Ingreso correcto';

else

$mensaje='Debe registrar un monto';

?>

<form name="frmValida" method="POST">

<table border=''0'' width=''300''




cellspacing=''0'' cellpadding=''0''>


<tr> •
• •


<td width=''100''>Ingrese monto</td> •
• •
• •


<td width=''200''> •

<input type="text" name="txtMonto" •


value="<?php echo $_POST['txtMonto'];?>"/>

</td>

<td width="400"><?php echo $mensaje; ?></td>

</tr>

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. . . .. . .. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . . .. . .. . . . .. . . . . . .. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CAP. 6: FUNCIONES •••

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ' ... , ... , ····································································································•,



ctr> •

ctd></td>

ctd><input type=''submit'' value=''Validar'' /></td>

ctd></td> •

c/tr>

e/table>

</form> •

· c/section> ·

</body>

. c/html> .
.............................................................. .. . . .... .. . ... .... ' ' .

Donde if (isset($_POST['txtMonto'])) evalúa si se ingresó a l g ú n valor en el control TEXT, de acuerdo

al que se ingrese se asignará uno u otro comentario a la v a r i a b l e $mensaje y esta se i m p r i m i r á en la

celda contigua a l control TEXT del monto.

Hay que considerar que la evaluación realizada solo controla si la variable tiene algún valor, no

necesariamente n u m é r i c o .

Finalmente, el código P H P se apoya del archivo estilo.css, que permite presentar de la mejor manera

posible al formulario:

..................................................................................................................................................................................................

body{ .

font-family: tahoma;

; font-size: 14px; ;
. } .

centrado{

text-align: center;


: } .

table {

rgin: auto;

; #error{ :

color: r e d ·,

font-size: 12px;

...................................................................................................................................................................................................

[ 6.1.2 j Función unset ij

Permite borrar de la m e m o r i a de la computadora una variable que contenía a l g ú n valor, dejándola

inactiva e irreconocible por la a p l i c a c i ó n , su formato es:

....................................................................................................................

. .

! unset($variable); :
. .

¡ unset($variablel, $variable2, $ v a r i a b l e 3 , ... ) ; !

• •
. .
•• . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . •

Tener en cuenta:

o La función unset destruye a una o más v a r i a b l e s .

o No se considera igual que a s i g n a r null a u n a v a r i a b l e .

o C u a n d o se a p l i c a unset dentro de una función o método d e fi n i d o por el usuario, destruirá las

variables locales de la función; es decir, dentro de la función d i c h a variable no será u ti l i z a b l e .

o Si se necesita destruir una v a r i a b l e global se debe seguir el siguiente formato:

......................................................................................................................................

. .

! unset($GLOBALS['variable']); !
. .

! un set ($GLOBALS ( ' v a r i a b l e l ' ] , $GLOBALS [ ' v a r i a b l e 2 ' ] , ... ) ; :


. .

. •
.
....................................................................................................................................
••• • • DESARROLLO DE APLICACIONES WEB CON PHP

l 6.1.3 [ Función gettype jJ

Permite obtener el tipo de datos de u n a d e t e r m i n a d a v a r i a b l e . Su formato es:

.· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · .

. $variable=gettype($variable); ¡

. .
........................................................................

Los tipos de datos q u e p u e d e devolver la f u n c i ó n gettype s o n :

o Si es lógico el valor, entonces devolverá b o o l e a n .

o Si es un n ú m e r o entero, devolverá integer.

o Si es un n ú m e r o fraccionario, devolverá d o u b l e .

o Si es u n a cadena de caracteres, devolverá string.

o Si es u n a colección de valores, devolverá array.

o Si es u n a instancia de una clase, entonces devolverá object.

o Si es u n a v a r i a b l e cuyo valor es null, entonces devolverá N U L L .

Veamos el s i g u i e n t e caso:

o Necesitamos i d e n ti fi c a r los diferentes tipos de datos que pueden darse en variables para un

e m p l e a d o de u n a empresa, el c u a l registrará sus nombres, s u e l d o , edad, fecha de n a c i m i e n t o , y

los países d o n d e laboró:

..................................................................................................................................................................................................
. .

<?php

: //Declaración y asignación de variable ;


• •

: $nombre='Juan P e r e z ' ; :

$sueldo=3050.78;

$edad=35;

$fechaNac='1979-10-10';

$objTel=new s t d C l a s s ( ) ;

$ p a í s e s = a r r a y ( ' P e r ú ' , ' V e n e z u e l a ' , ' P a r a g u a y ' , ' C o l o m b i a ' ) ; .


· //Impresión de tipos de datos '

echo '$nombre es de tipo: ' . g e t t y p e ( $ n o m b r e ) . ' < b r > ' ;

echo '$sueldo es de tipo: ' . g e t t y p e ( $ s u e l d o ) . ' c b r > ' ;

echo '$edad es de tipo: ' . g e t t y p e ( $ e d a d ) . ' c b r > ' ;

echo '$fechaNac es de tipo: ' . g e t t y p e ( $ f e c h a N a c ) . ' c b r > ' ;

echo '$objTel es de tipo: ' . g e t t y p e ( $ o b j T e l ) . ' c b r > ' ;

, echo ' $ p a í s e s es de tipo: ' . g e t t y p e ( $ p a í s e s ) . ' c b r > ' ; :

• •

: ?> .


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . ......... . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. . ... . ..... . .. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Debemos considerar q u e la fecha de n a c i m i e n t o d e l e m p l e a d o es considerado como tipo String, ya

q u e en P H P no existe un tipo de datos para las fechas, como se muestra en la siguiente i m a g e n :

Los tipos de datos son:

$nombre es de tipo: string

$sueldo es de tipo: double

$edad es de tipo: integer

$fechaNac es de tipo: string

$ob¡Tel es de tipo: object

$países es de tipo: array


CAP. 6: FUNCIONES ••

l 6.1.4 [ Función settype ij

Permite establecer un nuevo tipo de datos a u n a v a r i a b l e . Su formato es:

..............................................................................
. .

\ settype($variable, 'Tipo_Datos' ) ; \


. •
.
..............................................................................

Veamos los siguientes casos:

o En u n a empresa los e m p l e a d o s ti e n e n un código a s i g n a d o con el s i g u i e n t e formato: 00005. Se

necesita autogenerar un nuevo código cuando se registre un nuevo empleado, para esto se

deberá a u m e n t a r en u n o a l código anterior:

, .
. .

< ?php

//Asignación de valores a variables

$ c ó d i g o = ' 0 0 0 0 5 ' ;

echo 'Código original: ' . $ c ó d i g o . ' < b r > ' ;

• •

• •
• •

: //Aplicamos settype .

settype($código, ' i n t e g e r ' ) ;

$nuevoCodigo=sprintf("%05d",$codigo+l);


//Impresión del nuevo código

echo ' E l valor de $código e s : ' . $nuevoCodigo;




• •
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .•

Resultado:

Código original: 00005

El valor de $codigo es: 00006

o Del caso anterior, generar los 10 códigos de los e m p l e a d o s de forma correlativa a partir del código

00005:

.· ·································································································································································································· .

<?php
• •

; //Asignación de valores a variables ;

¡ $código = '00005' ; ¡

: echo 'Código original: ' . $ c ó d i g o . ' < b r > ' ; :

• •
• •
• •

¡ //Aplicamos settype ¡

• •

; settype($código, ' i n t e g e r ' ) ; ;

: $nuevoCodigo=sprintf ( " % 0 5 d " , $codigo+l); ,


• •
• •

' //Los siguientes 10 códigos autogenerados son: :


echo ' L o s 10 códigos autogenerados son: < b r > ' ; :

. for ( $ i = 1 ; $ i < = 1 0 ; $ i + + ) { ,

· $nuevoCodigo=sprintf(''%05d'',$codigo+$i); ,

. echo $nuevoCodigo. ' < b r > ' ; ·


}

..................................................................................................................................................................................................
••••• DESARROLLO DE APLICACIONES WEB CON PHP

Resultado:

Código original: 00005

Los 10 códigos autogenerados son:

00006

00007

00008

00009

00010

00011

00012

00013

00014

00015

l 6.1.5 1 Función empty U

Determina si u n a v a r i a b l e no tiene un valor a s i g n a d o ; a d e m á s , para las ú l ti m a s versiones de P H P se

incorpora la c o m p a r a c i ó n de expresiones vacías. Su formato es:

.•........••.......•......••......••......••......••......••............
. .
. .

( empty($variable) (
. .
. .
........................................................................

Veamos algunos casos:

o V a l i d a n d o u n a v a r i a b l e de tipo string:

..................................................................................................................................................................................................
. .

< ? p h p

: $clave = ' ' ; ·

if (empty($clave))

· echo ' L a clave esta v a c í a ' ; ·

........................................... '' .

o V a l i d a n d o u n a v a r i a b l e de tipo entero:

...................................................................................................................................................................................................

• •

< ? p h p

. $ n u m e r o = 0; .

if (empty($numero))

echo ' E l número esta vacío o es igual a c e r o ' ; .

·········································· ,,,.,, ,,,,, .

o V a l i d a n d o el u s u a r i o y la clave desde controles de formulario, hay que tener en cuenta q u e el

control de la clave solo debe p e r m i ti r el ingreso de 4 caracteres:

Validación usando EMPTY

Ingrese usuario Ingrese nombre de usuano

Ingrese clave Ingrese clave

1 Validar 1
CAP. 6: FUNCIONES ••

..................................................................................................................................................................................................
. .

<!DDCTYPE html>

<html>

<head>

<meta charset=''UTF-8''>

<title>Validaciones</title>

<link href=''estilo.css'' rel=''stylesheet''>




• </head>
• •


<body> •

• •
• •
• •
• <header> •

• •
• •
<h2 id="centrado">Validación usando EMPTY</h2>


</header>

<section>

<?php

error_reporting(0);

//Capturando valores

$usuario=$_POST['txtUsuario'];



$clave=$_POST['txtClave'];



//Validando el usuario y su clave

$menUsuario=' ' ;

$menClave=' ' ;

if (empty($usuario))

$menUsuario='Ingrese nombre de usuario';

if (empty($clave))

$menClave='Ingrese clave';


?> •
• •



<form name="frmlogin" method="POST"> •

• •
• •

• <table border=''0'' width=''S50'' •
• •


cellspacing=''0'' cellpadding=''0''>

ctr»

<td>Ingrese usuario</td>

<td>

<input type="text" name="txtUsuario"

value="<?php echo $_POST['txtUsuario'];?>"/>

</td>


<td id="error"><?php echo $menUsuario; ?></td>

</tr>

<tr>

<td>Ingrese clave</td>

<td>

<input type="password" name="txtClave"

maxl e ngth="4"

value=''<?php echo $_POST['txtClave'] ?>''/>


</td> •


• •


<td id="error"><?php echo $menClave; ?></td> •


• •


</tr > •

• •
• •

<tr>



<td></td> •

<td><input type ='' s ubmit '' value=''Validar'' /></td>

<td></td>

</tr>

</table>

</form>

</section>

</body>

</html>

..................................................................................................................................................................................................
••••• DESARROLLO DE APLICACIONES WEB CON PHP

El archivo estilo.css contiene el s i g u i e n t e código:

•................................................................................................................................................................................................•
. .

body{

font-family: t


font-size: 14p

#centrado{

text-align: center; •

• } •

• table { •

margin: auto;

#error{

color: red;

font-size: 12px;

..................................................................................................................................................................................................

[ 6.1.6 j Función is_integer )]

Determina si el valor de u n a v a r i a b l e es numérico entero. Su formato es:

....................................................................................................
. .
. .

j is_integer($variable_numerica); j
• •

: is_int($variable_numerica); ,
. .
. .
...................................................................................................•

Veamos algunos casos:

o Mostrar el mensaje « N ú m e r o ingresado correctamente» si el valor de u n a v a r i a b l e es numérica

entera:

..................................................................................................................................................................................................
. .

<?php

$numero=l23;

if (is_integer($numero)) .

; echo 'Numero correcto' ; :


· else

· echo 'Numero incorrecto';

..................................................................................................................................................................................................

P o s i b l e s valores y respuestas del código:

$NUMERO MENSAJE

123 'Número correcto'

123.25 'Número incorrecto'

'123' 'Número incorrecto'

'12A45' 'Número incorrecto'

.34 'Número correcto'

o Validar el ingreso de una nota en un determinado curso, para lo cual debe registrar un valor

n u m é r i c o correcto q u e corresponda a la nota de un alumno en un control TEXT; si está vacía,

debe e m i ti r un mensaje de «Ingrese nota»; si no es entero, e m i ti r el mensaje «Nota incorrecta»;

y si esta fuera d e l rango entre O y 20, e m i ti r el mensaje « R a n g o de nota es de O a 2 0 » :


CAP. 6: FUNCIONES ••

Validación usando IS INTEGER


-

Ingrese nota Ingrese nota

Validar

..................................................................................................................................................................................................
. .

<!DOCTYPE html>

<html>

<head>

<meta charset=''UTF-8''> ,

<title>Validaciones</title> ,

: <link href=''estilo.css'' rel=''stylesheet''> !


· </head> ·

<body>

<header>

<h2 id=''centrado''>Validación usando IS INTEGER</h2>

</header>

<section>

<?php

error_reporting(0);

//Capturando va

$nota=$_POST['t




• •

· / /Validando ,
• •

$menNota=' ' ; :

if(empty($nota)) $menNota='Ingrese nota';

if (!is_integer($nota))

$menNota='nota incorrecta';

elseif ($nota<0 1 1 $nota>20)

$menNota='Rango de nota es de 0 a 20' ·


'
?>

<form name="frmNota" method="POST">

<table border=''0'' width=''550''

cellspacing=''0'' cellpadding=''0''>

<tr>

<td>Ingrese nota</td> ,

<td> .

• •

, <input type="text" name="txtNota" ¡

· value="<?php echo $_POST['txtNota']; ?>"/> ;

</td> .

<td id="error"><?php echo $menNota; ?></td>

</tr>

<tr>

<td></td>

<td><input type=''submit'' value=''Validar'' /></td>

<td></td>

</tr>

</table>

</form>

</section> ,

, </body> !
• •

</html> :

.......................................................................•.......................................................................................................................... •
••••• DESARROLLO DE APLICACIONES WEB CON PHP

El archivo estilo.css contiene el siguiente código:

••............................................................................................................................................................................................... ,
. .

body{

font-family: t

font-size: 14p

#centrado{

text-align: center;

. } :

. table { :

r- g .m : auto;

or{

color: red;



font-size: 12px;

..................................................................................................................................................................................................

l 6.1. 7 [ Función is_double )j

Determina si el contenido de u n a variable n u m é r i c a ti e n e u n punto d e c i m a l para q u e sea considerado

como tipo double. Su formato es:

........................................................................
. .
• •
• •

; is_double($variable); ¡
. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . . . . . . . . . . . . .

Veamos algunos casos:

o Validar el registro de la altura de un paciente en su historial clínico, para lo cual se mostrará

el mensaje «Altura registrada correctamente», si el valor es numérico decimal; caso contrario,

e m i ti r el mensaje «Altura ingresada de forma incorrecta .. ! ! » :

...................................................................................................................................................................................................
.

<?php

$altura=l.72;

if (is_double($altura))


echo 'Altura registrada correctamente';

else


echo 'Altura ingresada de forma incorrecta . . ! ! ' ;

. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . . . . .... .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . .... .. . . . . . . .. . . . . . . . . . . . . . . . . . . .

P o s i b l e s valores y respuestas del código:

$ALTURA MENSAJE

1 . 72 "Altura registrada correctamente"

172 "Altura ingresada de forma incorrecta"

'172cm' "Altura ingresada de forma incorrecta"

'1.72' "Altura ingresada de forma incorrecta"

o Validaremos el ingreso de un d e t e r m i n a d o monto de venta, este será registrado por un vendedor,

el c u a l usará el control TEXT para d i c h o ingreso. Si el valor ingresado es número entero, negativo,

está vacío o es un texto, e m i ti r el mensaje «Error en el ingreso del monto . . ! ! » :


CAP. 6: FUNCIONES ••

Validación usando IS DOUBLE

Ingrese monto Error en el iigreso del monto .. !!

[ Validar j

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . ' .. ' .

• •
• •

<!DOCTYPE html> •

• •

• <html>

<head>

<meta charset=''UTF-8''>

<title>Validaciones</title>

<link href=''estilo.css'' rel=''stylesheet''>

</head>

<body>

<header>

<h2 id="centrado">Validación usando IS_DOUBLE</h2>

</header>

<section> •

<?php

error_reporting(0);

//Capturando valores

$monto=$_POST['txtMonto'J*l;

//Validando

$mensaje=' ' ;

if (!is double($monto) 1 1 !is_numeric($monto)


• 1 1 empty($monto) 1 1 $monto<0)

$mensaje = ' Error en el ingreso del monto . . ! ! ' ;
• •
?> •


<form name="frmMonto" method="POST">
• •

<table border="0" width="550"


• •

• cellspacing=''0'' cellpadding=''0''> •




<tr> •

<td>Ingrese monto</td>

<td> •

<input type="text" name="txtMonto"

value="<?php echo $_POST[ 'txtMonto' ] ; ?>"/>

</td>

<td id=''error''><?php echo $mensaje; ?></td>

</tr>

<tr>

<td></td>
• •

<td><input type=''submit'' value=''Validar'' /></td> •

<td></td>

</tr>



</table>

</form>

</section> •

</body>

</html>

..................................................................................................................................................................................................•
••••• DESARROLLO DE APLICACIONES WEB CON PHP

El archivo estilo.css contiene el siguiente código:

•................................................................................................................................................................................................•
. .

body{

font-family: t

font-size: 14p

#centrado{

text-align: center;


} •

• table { •

mar-g m : auto;

#error{

color: red·
'
font-size: 12px;

..................................................................................................................................................................................................

¡ 6.1.8 [ Función is_string [J

Permite comprobar si el valor de u n a v a r i a b l e es de ti p o c a d e n a . Su formato es:

. .
.····················•···•··········••·•································· .

¡ is_string($variable); ¡

. .
. .
........................................................................

Veamos algunos casos:

o V a l i d a r el registro d e l código de un determinado e m p l e a d o , para lo cual se mostrará el mensaje

«Código registrado correctamente» si el v a l o r es c a d e n a ; caso contrario, e m i ti r el mensaje «Error

en el ingreso de código»:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .

<?php

$codigo='EMP001';

if(is_string($codigo))

echo 'Código registrado correctamente';



• else

echo 'Error en el ingreso de código';

..................................................................................................................................................................................................

Posibles valores y respuestas del código:

$CÓDIGO MENSAJE

"Código registrado correctamente"


'EMP001'

"Error en el ingreso de código"


1

"Código registrado correctamente"


'001'

"Código registrado correctamente"


'@.com'

"Error en el ingreso de código"


123.25
CAP. 6: FUNCIONES •••

o Validaremos el ingreso para el n o m b r e de un determinado e m p l e a d o , este será registrado en un

control TEXT y solo se permitirá el ingreso de cadena de caracteres en mayúsculas, m i n ú s c u l a s

y con ti l d e s . En caso se ingrese valores no textuales correctos, e m i ti r el mensaje «Error en el

nombre del e m p l e a d o » :

Validación usando IS_STRING

Ingrese nombre del empleado Error en el norrilre del ermeado . .!!

[ Validar [

..................................................................................................................................................................................................
. .

<!DOCTYPE html>

<html>

<head>


• <meta charset=''UTF-8''> •


• •
• •
<title>Validaciones</title> •

• •
• •

<link href=''estilo.css'' rel=''stylesheet''> •


• •

</head>

<body>

<header>

<h2 id="centrado">Validación usando IS_STRING</h2>

</header>

<section>

<?php

error_reporting(0);

//Capturando valores

$empleado=$_POST['txtEmpleado'];

• •

//Validando •



$mensaje=' ' ; •

• •


$ p e r m i t i d o s = ' / A [ A - Z üÜáéíóúÁÉÍÓÚñÑ]{l,100}$/i';


if (!preg_match($permitidos,$empleado)

1 1 !is_string($empleado))

$mensaje = ' Error en el nombre del empleado . . ! ! ' ;

• ?>

<form name="frmEmpleado" method="POST">

<table border="0" width="750"

cellspacing=''0'' cellpadding=''0''>

<tr>

<td>Ingrese nombre del empleado</td>

<td>

<input type=''text'' name=''txtEmpleado''



value="<?php echo $_POST['txtEmpleado']; ? > " / >
• •


• •
• </td>

<td id=''error''><?php echo $mensaje; ? > < / t d > •


</tr>

<tr>

<td></td>

<td><input type=''submit'' value=''Validar'' /></td>

<td></td>

</tr>


</table>

</form>

</section>

</body>

</html>

................................ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .•

La función preg_match permite encontrar coincidencias de una expresión en una determinada

cadena de caracteres. A m p l i a r e m o s esta función en el tema «funciones de c a d e n a » .


••••• DESARROLLO DE APLICACIONES WEB CON PHP

l 6.1.9 J Función var_dump ¡J

Permite informar sobre el tipo y el valor de u n a d e t e r m i n a d a v a r i a b l e o expresión. Su formato es:

.•......................•.................••............................
. .
• •

¡ var_dump($variable); ¡
. .
. .
........................................................................

Veamos el s i g u i e n t e caso:

o Se debe mostrar información acerca de los valores y v a r i a b l e s q u e puede tener un determinado

alumno:

•.................................................................................................................................................................................................
. .

<?php

: / /Ingreso de valores :

$empleado= 'Ángela Torres Lázaro'; '

$fechaNac = '16/05/2005';

$talla= 1.30;

$edad= 9;

• •

· //Impresión ·

var_dump($empleado);

var_dump($fechaNac);

var_dump($talla);

var_dump($edad);

: ? > :
• •
• •
............................................................................................................................................... ' .

Resultado:

9tring ' An g e l a Torres Lázaro' (length-21)

string '16/05/2005' (.length=10)

float 1. 3

int 9

Posibles valores y respuestas del código:

VAR DUMP IMPRESIÓN

$empleado String 'Ángela Torres Lázaro' (Longitud=21)

$fechaNac String '16/05/2005' (Longitud=10)

$talla Float 1.3

$edad lnt 9

w FUNCIONES DE CADENA 1

Antes de c o m e n z a r con la especificación de las f u n c i o n e s q u e p u e d e tener u n a variable string, d e b e m o s

recordar q u e un string admite todo ti p o de caracteres, i n c l u s i v e n u m é r i c o s . Desde a q u í m e n c i o n a r e m o s

que, para especificar un carácter, necesitamos c u a l q u i e r a de los siguientes formatos:

o C o m i l l a s s i m p l e s : Se pueden presentar los siguientes casos:

................................................................................................
. .
. .
. .

, $código=' E M P 0 0 1 ' ; ,
. .

; $edad='24'; ;
. .

¡ $email='[email protected]'; ¡
. .

; $fechaNac='2005-05-16'; ¡

. .
. .
. .
................................................................................................
CAP. 6: FUNCIONES ••

o C o m i l l a s d o b l e s : Se p u e d e n presentar los s i g u i e n t e s casos:

.............................. ' .
. .
• •
• •

¡ $código=" E M P 0 0 1 " ; ¡

. .

¡ $edad="24"; ¡

¡ $email=''[email protected]''; i

¡ $fechaNac=''2005-05-16''; ¡
. .
. .
. .
.....................................................................................

Veamos el siguiente caso, si se necesita i m p r i m i r el valor a s i g n a d o a u n a variable sueldo usando la

c o m i l l a s i m p l e , sería de la siguiente m a n e r a :

..................................................................................................................................................................................................
. .

. c?php .

$sueldo= 1000;

echo 'El sueldo es:".$sueldo;

..................................................................................................................................................................................................

Notemos que para imprimir la variable sueldo se necesita concatenar con el operador punto. En

cambio, si usamos la c o m i l l a d o b l e el código c a m b i a r í a a :

.•······················································································· .
.

c?php

· $sueldo = 1000; ·

· echo "El sueldo es: $sueldo";

. ?> .

.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

¡ 6.2.1 1 Función strlen U

Permite determinar la longitud de caracteres contenidos en el valor de u n a variable de tipo string.

Su formato es:

. . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .
. .

¡ $variable=strlen($variable_string); ¡

. .
.........................................................................................

Veamos algunos casos:

o V a l i d a r el ingreso de la edad de una persona. Solo se debe p e r m i ti r el ingreso de 2 caracteres

para la e d a d , q u e no sea inferior a 18 ni s u p e r i o r a 65. Mostrar un mensaje por cada e v a l u a c i ó n :

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•

, c?php ,

: $edad= 18; i


• •
• •

' if (strlen($edad) ! = 2 ) i

• •

. $ m e n s a j e = ' La edad debe tener dos dígitos'; :


• •

· elseif ($edadc18) ;

: $ m e n s a j e = ' La edad debe superior o igual a 18'; ;

: elseif ($edad>65) ,

$mensaje='La edad no debe ser superior a 65'; :

else

$mensaje='La e dad
a ingresa d a
d es corree t a . . .1 .1 • ;

echo $mensaje;

.. . . . . . . . .. ... .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . .. . ... . . .. ....... .. .. ..


.. ...................... .. ........................................ .. . . . . . . . .. ' .
••••• DESARROLLO DE APLICACIONES WEB CON PHP

Posibles valores y respuestas del código:

$EDAD MENSAJE

18 'La edad ingresada es correcta .. !!'

16 'La edad debe superior o igual a 1 8 '

66 'La edad no debe ser superior a 65'

7 'La edad debe tener dos d1'gitos'

o Validaremos el ingreso de un número de D N I perteneciente a un e m p l e a d o ; en la c u a l no debe

permitir caracteres ti p o letras y la longitud exactamente 8, en caso de errores mostrar los

mensajes convenientes.

Validación usando STR_LEN

Ingrese DNI del empleado Error en datos del DNI-contiene letras

[ Validar J

. ·································································································································································································­ .

<!DOCTYPE html>

<html>

<head>

<meta charset=''UTF-8''>

<title>Validaciones</title>

<link href=''estilo.css'' rel=''stylesheet''>

</head>

<body>

<header>

<h2 id="centrado">Validación usando STR_LEN</




</header>

<section>

<?php

error_reporting(0);

//Capturan

$dni=$_POS

//Validando

$mensaje=' ' ;

if(!preg_match('/A[[:digit:]]+$/', $dni))

$mensaje='Error en datos del DNI-contiene letras';

elseif (strlen($dni)!=8)

$mensaje='DNI debe tener 8 caracteres numéricos';

?>

<form name="frmEmpleado" method="POST">


<table border="0" width="750"







cellspacing=''0'' cellpadding=''0''> •

• •

<tr> •
• •

• •
• <td>Ingrese DNI del empleado</td> •




• <td>

<input type="text" name="txtDNI"


• •


value="<?php echo $_POST[ ' t x t D N I ' ] ; ?>"/>

</td>

<td id=''error''><?php echo $mensaje; ?></td>

</tr>

<tr>

<td></td>

<td><input type=''submit'' value=''Validar'' /></td>

··································································································································································································
CAP. 6: FUNCIONES ••

.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.

<td></td>

</tr>
• •

</table>

</form>

· </section> '

</body>

· </html>

..................................................................................................................................................................................................

El archivo estilo.css contiene el siguiente código:

..................................................................................................................................................................................................
.

body{

font-family: tahoma;

font-size: 14px;

} .

, #centrado{ ,

text-align: center; ¡

#error{

color: red·
'
font-size: 12px;

• •

..................................................................................................................................................................................................

¡ 6.2.2 1 Función strpos U

Determina la posición del p r i m e r valor encontrado en u n a cadena de caracteres; hay q u e tener en

cuenta q u e el punto de inicio de l a s posiciones es cero. Su formato es:

..................................................................................................................................................
. .

¡ $variable_posicion = strpos($variable_a_evaluar, ' c o n t e n i d o ' ) ; ¡

. .

'••·············································································································································

Se presentan a l g u n a s v a r i a c i o n e s de la f u n c i ó n :

, ,

VARIACION DESCRIPCION

Devuelve la posición de la última vez que se


strrpos($va riable _a_ e valuar, 'contenido')
encontró un valor dentro de una cadena.

Tiene la misma función que strpos, pero

stri pos($varia ble_ a_ evaluar, 'canten ido') adiciona que no distingue entre mayúsculas

y minúsculas.

Devuelve la posición de la última vez que se

strri pos($varia ble_ a_ evaluar, 'contenido') encontró un valor dentro de una cadena, sin

distinguir las mayúsculas de las minúsculas.

Veamos el s i g u i e n t e caso:

o Desde una dirección de correo electrónico determinar en qué posición se encuentra el c a r á c t e r @ :

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . . . . . . . . . . . .. . .. . . . . . . . . . . . . .
.

<?php

. $email = '[email protected]'; ,

$pos=strpos($email,'@')+l;

. echo '@ se encuentra en la posición' .$pos; :

............. ' ' ' '.' ' ' '' , ' ''''' ..
••••• DESARROLLO DE APLICACIONES WEB CON PHP

Resultado:

[ @ se encuentra en la posición: 15 ]

Notemos que a la v a r i a b l e pos se le a u m e n t a un valor, ya q u e las posiciones e m p i e z a n el cero.

l 6.2.3 j Función strcmp ]j

Permite hacer u n a comparación b i n a r i a entre dos valores, su formato es:

............................................................................................................................
. .
• •

: $variable_resultante = strcmp($variablel,$variable2); :
. .
. .
............................................................................................................................

El resultado de la expresión strcmp dependerá de las v a r i a b l e s a comparar, por tanto, podríamos

decir que:

o Si la variablel es m e n o r a la variable2 entonces devolverá -1.

o Si la variablel es mayor a la variable2 entonces devolverá l.

o Si la variablel es exactamente i g u a l a la variable2 entonces devolverá O.

Veamos el s i g u i e n t e caso:

o Determinar si la cadena de caracteres que representan la clave son iguales o no; mostrar los

mensajes correspondientes .

•.................................................................................................................................................................................................
. .

<?php

$clave= 'Sócrates';

$iClave = 'socrateS';


• •
if (strcmp($clave, $iClave)==0) •




echo 'La clave es correcta';

else

echo 'La clave NO es correcta';

..................................................................................................................................................................................................

Resultado:

[ La clave NO es correcta ]

l 6.2.4 1 Función strstr U

Permite obtener los caracteres anteriores o posteriores al encuentro de un valor en u n a cadena de

caracteres; hay q u e tener en cuenta q u e la función strstr distingue entre mayúsculas y m i n ú s c u l a s .

Su formato es:

.•••.......................•....•................••...............................•.........••....•.••......•................
. .
. .
. .

¡ $variable_obtenido = strstr($variable, 'valor' , t r u e ) ; ¡

· $variable_obtenido = strstr($variable, ' v a l o r ' , f a l s e ) ; [


.
. .
. .
.............................................................................................................................

La opción true permite obtener los caracteres, desde la posición inicial hasta la posición donde

encontró el carácter. Mientras que false obtiene los caracteres desde la posición encontrada hasta

la posición fi n a l de la c a d e n a .
CAP. 6: FUNCIONES ••

Veamos el s i g u i e n t e caso:

o Desde u n a d i r e c c i ó n de correo electrónico i m p r i m i r e m o s el nombre del servidor y el nombre d e l

usuario:

...................................................................................................................................................................................................
.

<?php


$email - '[email protected]';

$servidor = strstr($email, ' @ ' ) ¡

• •

• •
• •

$usuario = strstr($email, ' @ ' , true)¡

echo ' E l dominio del correo electrónico es: ' . $ s e r v i d o r . ' < b r > ' ;

echo ' E l usuario del correo electrónico es: ' . $ u s u a r i o ;

..................................................................................................................................................................................................

Resultado:

El dominio del correo electrónico es: @hotmail.com

El usuario del correo electrónico es: manuel.torresr

[ 6.2.5 j Función substr U

Permite devolver una parte de u n a cadena de caracteres, especificando la posición i n i c i a l y cuantos

caracteres desea obtener. Su formato es:

...................................................................................................................................................................................
. .

1 $variable_obtenida = substr($variable,posicion_inicial, cantidad_caracteres); 1


. .
. .
.................................................................................................................................................................................

Los valores devueltos serán o b t e n i d o s desde $variable, mientras q u e la posición i n i c i a l es el punto

de i n i c i o de la captura de valores, y cantidad de caracteres define el total de caracteres a obtener

a partir de la posición i n d i c a d a ; esta ú l ti m a es o p c i o n a l pues s i n o lo indica se obtendrán todos los

valores a partir de la posición i n d i c a d a .

Veamos el s i g u i e n t e caso:

o Desde u n a d i r e c c i ó n de correo electrónico i m p r i m i r e m o s el nombre del servidor y el nombre d e l

usuario:

..................................................................................................................................................................................................
. .

<?php
• •

: $email - 'manuel. [email protected]' ¡

$servidor= substr($email, strpos($email,"@'))¡

$usuario= substr($email, 0, strpos($email,'@'))¡

. echo ' E l dominio del correo electrónico e s : ' . $ s e r v i d o r . ' cbr» " ; .

• •

' echo ' E l usuario del correo electrónico e s : ' . $usuario; ·

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... ..... .. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . .. ..... .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Resultado:

El dominio del correo electrónico es: @hotmail.com

El usuario del correo electrónico es: manuel.torresr


••• • • DESARROLLO DE APLICACIONES WEB CON PHP

6.2.6 Funciones ltrim, rtrim, chop y trim

Presentamos las siguientes d e s c r i p c i o n e s :

, ,

FUNCION DESCRIPCION

La función ltrim permite eliminar espacios en blanco, tabulaciones o cambios de


ltrim

l(nea desde el lado izquierdo de una cadena de caracteres.

La función rtrim permite eliminar espacios en blanco, tabulaciones o cambios de


rtrim

lt'nea desde el lado derecho de una cadena de caracteres.

E l i m i n a caracteres desde el lado derecho de una cadena de caracteres, tiene

chop analoqia con rtrim siempre y cuando no se especifique parámetros a la función

chop.

La función trim permite e l i m i n a r espacios en blanco, tabulaciones o cambios de


trim

linea en ambos lados de una cadena de caracteres.

Veamos el s i g u i e n t e caso:

o Veamos el uso de las funciones en diferentes cadenas:

..................................................................................................................................................................................................

<?php

//Asignación de valores

$cadenal - 'Fundamentos de Programación con PHP';

$cadena2 - Fundamentos de Programación con PHP';


' .
$cadena3 - 'Fundamentos de Programación con PHP
'
'
.
$cadena4 - Fundamentos de Programación con PHP
'

//Impresión

echo chop($cadenal, 'Programación con PHP'). '<br>';

echo ltrim($cadena2). ' < b r > ' ;

echo r t r i m ( $ c a d e n a 3 ) . " c b r» " ;

echo trim($cadena4). ' < b r > ' ;

?>

..................................................................................................................................................................................................

Resultado:

Fundamentos de

Fundamentos de Programación con PHP

Fundamentos de Programación con PHP

Fundamentos de Programación con PHP

[ 6.2. 7 [ Función str_replace )j

Permite r e e m p l a z a r u n a cadena por otra; tantas veces sea encontrado. Su formato es:

.•..................................................................................................
. .
. .

1 $variable_obtenida=str _ r e p l a c e ( $ c a d e n a ) ; 1
. .
. .
....................................................................................................

Veamos el s i g u i e n t e caso:

o A partir del código de un alumno con el formato 2014CI0001, debemos modificarlo por

2014ET0001 por un error de registro en la base de datos:


CAP. 6: FUNCIONES ••

....... ..... ... . ... . . . .. .................................................... .. . . .. . . . . . . . . . . . . . ... . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . .. ... ... ......... .. . .. .. ..........
. .

<?php

//Asignación de valores

: $código = '2014CI0001'; ;

//Impresion

. echo s t r _ r e p l a c e ( ' C I ' , ' E T ' , $codigo); //Resp: 2014ET0001 .

• •

?>

..................................................................................................................................................................................................

Resultado:

[ 2014ET0001 l

6.2.8 Funciones strtolower y strtoupper

Son funciones que ti e n e n el control de cambios de mayúsculas a minúsculas (strtolower) y de

m i n ú s c u l a s a mayúsculas (strtoupper) de u n a c a d e n a de caracteres. Su formato es:

.· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · .
. .

: $variable_minusculas = strtolower($variable); :
. .

: $variable_mayusculas = strtoupper($variable); :
. .
. .
•..........................................................................................................

Veamos el s i g u i e n t e caso:

o El encargado del área de personal de u n a empresa necesita registrar los datos de un determinado

empleado, a q u i e n se le solicita que ingrese sus datos por m e d i o de una página web ofrecida

por la empresa. A partir de dicha información, asegurar que el código del empleado sea en

mayúsculas y q u e el correo electrónico sea estrictamente en m i n ú s c u l a s :

.•························································································· .
.

<?php

//Asignación de valores ·

$código= 'emp001_14a';

$email = '[email protected]';

• •
• •


//Impresión •

echo 'El códi registrado es: '.strtoupper($código). ' < b r > ' ;

echo 'El corr electrónico registrado es: ' . strtolower($email);

?

•. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. ....... . . .. .. .. ... .. ............

Resultado:

El código registrado es: EMP001_14A

El correo electrónico registrado es: [email protected]

¡ 6.2.9 j Función preg_match )1

Permite realizar u n a c o m p a r a c i ó n entre dos cadenas de caracteres. Su formato es:

..................................................................................

. .

j preg_match( '/patron/' ,$variable); j

. .
................................................................................
••••• DESARROLLO DE APLICACIONES WEB CON PHP

Para i n i c i a r un patrón debemos colocar los s í m b o l o s / patrón, a c o n ti n u a c i ó n describiremos a l g u n o s

formatos:

SÍMBOLO DESCRIPCIÓN

El punto representa a cualquier carácter alfanumérico dentro de una cadena de

caracteres.

Indica el carácter de inicio dentro de una cadena caracteres. Por ejemplo, "'a indica

que la cadena inicia con la letra a.

Indica con qué carácter termina dentro de una cadena de caracteres. Por ejemplo, $a
$
indica que la cadena termina con la letra a.

Indica que el carácter se puede repetir una o más veces. Por ejemplo, a+ indica que
+
a se repetirá una o más veces dentro de la cadena de caracteres.

Indica que el carácter se puede repetir de cero veces a más. Por ejemplo, a* indica

que a podrra estar en la cadena o podrra repetirse muchas veces.

Indica que el carácter se puede repetir cero o, por lo menos, una vez. Por ejemplo,
?

a? indica que a se puede encontrar en la cadena de caracteres solo una vez o nunca.

\ Sirve para concatenar el formato con srrnbolos como ' [ ) . ( ) 1 • ? { } \.

Indica que los caracteres no tienen distinción entre mayúsculas o minúsculas.

Indica que los caracteres especificados dentro se buscarán de forma agrupada dentro

( ) de la cadena de caracteres. Por ejemplo (gma) indica que se buscarán los caracteres

agrupados gma dentro de la cadena, también se puede usar \b.

Indica que los caracteres separados por I se buscarán independientemente; podna

encontrarse uno o los dos a la vez dentro de una cadena de caracteres. Por ejemplo,

a l b ] c indica que se puede encontrar a o b o c dentro de la cadena.

Indica la cantidad de veces que se puede repetir un determinado carácter. Por ejemplo
{n}
a{3} indica que a se repetirá tres veces dentro de una cadena de caracteres.

Indica la cantidad de veces, por rango, que se puede repetir un determinado carácter.

{n,m} Por ejemplo, a{1,5} indica que a se repetirá de una a cinco veces dentro de una

cadena de caracteres.

Indica un patrón de búsqueda de caracteres, combinando los srrnbolos anteriores.

Veamos algunos ejemplos:

• [a-z] Representa a todas las letras en minúsculas, también puede usar \O.

• [A-Z] Representa a todas las letras en mayúsculas, también puede usar \O.

• [0-9) Representa a todos los valores numéricos enteros, también puede usar \d.

• [ [ :alnum: ] ] Representa a todos los caracteres alfanuméricos.


[ 1

• [ [ : a l p h a : ] ] Representa exclusivamente a caracteres.

• [ [ :digit: ] ] Representa exclusivamente a números enteros.

• [ [ : l o w e r : ) ) Representa a cualquier carácter en minúscula.

• [ [ : u p p e r : ) ) Representa a cualquier carácter en mayúscula.

• [ [ :space: 1 1 Representa un espacio en blanco, también puede usar \s.

Veamos los siguientes casos:

o El código de un e m p l e a d o está compuesto por tres letras i n i c i a l e s y el n ú m e r o de e m p l e a d o de

forma correlativa; se necesita verificar q u e los caracteres emp o E M P se encuentren dentro del

código registrado:

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·.

: <?php

: $codigo=' emp001'; :

· if ( p r e g _ m a t c h { ' / E M P / i ' ,$codigo))

echo "Caracteres encontrados correctamente";

else

echo "Caracteres NO encontrados . . 1 ! ";

..................................................................................................................................................................................................
CAP. 6: FUNCIONES •••

Resultado:

[ caracteres encontrados correctamente }

Considere que el atributo i en el patrón permite omitir la distinción entre m a y ú s c u l a s y m i n ú s c u l a s ;

por lo tanto, será igual buscar E M P que emp.

o Desde el correo electrónico de un e m p l e a d o se necesita d e t e r m i n a r si pertenece al servidor

Hotmail por medio de un mensaje:

•.................................................................................................................................................................................................
. .

<?php

$email='[email protected]';

, $buscar='hotmail'; ,

if (preg_match("/\b$buscar\b/i",$email)) ·

echo" Servidor encontrado correctamente";

. else

: echo " Servidor NO encontrado . . ! ! " ; :

..................................................................................................................................................................................................

Resultado:

( Servidor encontrado correctamente )

Considere que el atributo \b permite buscar la palabra completa dentro de una cadena de

caracteres.

o Desde u n a dirección U R L i m p r i m i r e m o s el nombre del servidor:

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•

<?php .

//Asignando valores

$url='http://www.editorialmacro.com/desarrolladores.html';

preg_match('@'(?:http://)?(['/]+)@i',$url, $coincidencias); ,

$servidor= $coincidencias[!];

// obtiene el nombre exacto del servidor .


preg_match('/['.]+\.['.]+$/', $servidor, $coincidencias);

echo ''El nombre de dominio es: {$coincidencias[0]}\n'';

?>

• •

•. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ' ' .•

Resultado:

El nombre de dominio es: editorialmacro.com

o Validar el registro de datos de un e m p l e a d o , para lo c u a l ingresará su nombre completo, fecha de

nacimiento, correo electrónico y teléfono. Tener en cuenta:

o En el nombre del e m p l e a d o solo estará p e r m i ti d o el ingreso de letras y espacios.

o En la fecha de n a c i m i e n t o solo se permitirá el ingreso de fechas con formato válido, como dd/

mm/aaaa.

o El correo electrónico deberá tener el formato a d e c u a d o : [email protected].

o El teléfono contará con el formato 999999999, el c u a l debe i n i c i a r obligatoriamente en 9 y

contar con 9 dígitos.


••••• DESARROLLO DE APLICACIONES WEB CON PHP

Validación usando PREG_MATCH

Ingrese nombre del empleado Error en el norrbre del usuano

Fecha de nadmiento Fecha no Yakla

correo eectrónco Emai ncorrecto

Teléfono Móvi 1"1COITecto

[ Validar [

..................................................................................................................................................................................................
. .

<!DOCTYPE html>

<html>

<head>

<meta charset=''UTF-8''>

<title>Validaciones</title>

<link href=''estilo.css'' rel=''stylesheet''>

</head>

<body>

. <header>

: <h2 í d-" centrado" >Validación usando PREG_MATCH</h2>


• •

: </header> ¡

: <section> :

; <?php j

¡ error_reporting(0); :
• •
• •

//Capturando valores •

$nombre=$_POST['txtN

$fecha=$_POST['txtFe

$email=$_POST['txtEm

$fono=$_POST['txtFon

//Validando

$mNombre=' ' ;

if (!preg_match('/h[A-Z üÜáéíóúÁÉÍÓÚñÑ){l,100}$/i',

$nombre))

$mNombre='Error en el nombre del usuario';

$mFecha=' ' ;

if (!preg_match('/h\d{l,2}\

$mFecha='Fecha no v

$mEmail=' ' ;

if (!preg_match('/h([a-zA-Z0-9))+([a-zA-Z0-9\._-))* .

, @([a-zA-20-9_-))+([a-zA-20-9\._-)+)+$/', $email))

; $mEmail='Email incorrecto'; :

• •
• •

; $mFono=''; ¡

: if (!preg_match('/h[9)[0-9){8}$/', $fono)) ¡

; $mFono='Movil incorrecto'; ¡
• •



<form name="frmEmpleado" method="POST">

<table border="0" width="750" •

cellspacing=''0'' cellpadding=''0''>

<tr>

<td>Ingrese nombre del empleado</td>

<td>

<input type="text" name="txtNombre"

value="<?php echo $_POST['txtNombre'J; ?>"/>

</td>

<td id=''error''><?php echo $mNombre; ?></td>

..................................................................................................................................................................................................
CAP. 6: FUNCIONES ••

··································································································································································································•,

' </tr> :

. <tr> i

• <td>Fecha de nacimiento</td> ·

<td><input type=''text'' name=''txtFecha'' :

val ue='t c Pphp echo $_POST['txtFecha']; ?>" /></td> .

<td id=''error''>c?php echo $mFecha; ?></td>

</tr>

r>

<td>Correo electronico</td>

<td><input type=''text'' name=''txtEmail''

value="<?php echo $_POST['txtEmail']; ?>" />

</td>

<td id=''error''><?php echo $mEmail; ?></td>

/tr>

r>

<td>Teléfono</td>


<td><input type=''text'' name=''txtFono''

value="<?php echo $_POST['txtFono']; ?>" /></td>



<td id=''error''><?php echo $mFono; ?></td>


</tr>


c t r»

<td></td>

<td><input type=''submit'' value=''Validar'' /></td>

<td></td>

</tr>

</table>

</form>

</section>

</body>

</html>
..................................................................................................................................................................................................

l 6.2.10 1 Función explode U

Permite d i v i d i r u n a cadena en p e q u e ñ a s porciones de c a d e n a s de caracteres, s i e m p r e q u e se siga un

criterio para la d i v i s i ó n . Su formato es:

...............................................................................................................................................
. .

: $variable arreglo=explode('Criterio',$variable
.
.
- -a-d e s c o m p o n e r ) ; :
.
.
. .
...............................................................................................................................................

La variable_arreglo recibirá la información descompuesta de acuerdo al criterio, y para poder

mostrarlo al u s u a r i o deberá acceder como si fuera arreglo u n i d i m e n s i o n a l , es d e c i r :

..................................................................................................................................
. .
. .

: $arreglo_variable[0]; muestra el primero bloque. :


. .

: $arreglo_variable[l]; muestra el segundo bloque. :

j $ a r r e g l o _ v a r i a b l e [ ... ] ; . . , j

: $arreglo_variable[n-1]; muestra el último bloque. :


. .
. .
..................................................................................................................................

Veamos algunos casos:

o D i v i d i r el nombre completo de un e m p l e a d o en nombres, a p e l l i d o paterno y a p e l l i d o materno;

hay que tener en cuenta q u e solo se debe registrar un nombre, un a p e l l i d o paterno y un materno:

..................................................................................................................................................................................................
. .

<?php

$empleado='María López Gutiérrez';

: $nombre=explode(' ',$empleado); :

echo 'Nombre del empleado: ',$nombre[0],'<br>';

echo 'Paterno del empleado: '.$nombre[l). '<br>';

echo 'Materno del empleado: '.$nombre[2]. '<br>';

..................................................................................................................................................................................................
••••• DESARROLLO DE APLICACIONES WEB CON PHP

Resultado:

Nombre del empleado: María

Paterno del empleado: López

Materno del empleado: Gutiérrez

o Mostrar el día, mes y a ñ o a partir de u n a fecha completa:

····································································································································································································

· c?php ·

$hoy='2015-10-15';

, $fecha=explode ( ' - ' , $ h o y ) ; ,

echo 'Año: '.$fecha[0].'cbr>'; //Resp: 2015

echo 'Mes: '.$fecha[l]. 'cbr>'; //Resp: 10

. echo 'día: '.$fecha[2]; //Resp: 15


• •
. ?> .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . .

Resultado:

Año: 2015

Mes: 10

Día: 15

Otra forma de expresar el m i s m o caso podría ser:

.•.............•.........................•......•............•..••..........................................................•..•....•.......•..•............•......................... ············ .
. .
c?php •
• •
• •
• •
$hoy='2015-10-15';

list($año,$mes,$dia)=explode('-',$hoy);

• echo 'Año: '.$año.'<br>'; //Resp: 2015
• •
• •

echo 'Mes: '.$mes. 'cbr>'; //Resp: 10

echo 'día: '.$día; //Resp: 15

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. . .. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . . .. . . . . . . . .

o A partir de un correo electrónico válido, obtener el nombre del u s u a r i o y el servidor de correo .

.................. .. .
. .
c?php

$email='[email protected]';
• •

• •

$correo=explode('@',$email);

echo 'Servidor: '.$correo[l].'cbr>'; //Resp: hotmail.com

echo 'Usuario: '.$correo[0]; //Resp:manuel.torresr



: ? > :

. . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . •

Resultado:

Servidor: hotmail.com

Usuario: manuel.torresr
CAP. 6: FUNCIONES ••

[ 6.2.11 / Función strrev U

Permite invertir los caracteres contenidos en u n a v a r i a b l e de tipo c a d e n a . Su formato es:

.•.......................................................................................................
. .
. .

¡ $variable_invertida=strrev ( $ v a r i a b l e ) ; ¡

. .
. .
.........................................................................................................

Veamos el s i g u i e n t e caso:

o A partir de un código de e m p l e a d o i m p r i m i r la cadena de revés:

..................................................................................................................................................................................................
.

<?php

$código='100PME';

echo 'Nuevo código es: '.strrev($código); //Resp: EMP001

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. .. .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Resultado:

[ Nuevo código es: EMPOOl ]

[ 6.2.12 / Función str _repeat U

Permite devolver un número d e t e r m i n a d o de veces una cadena de caracteres. Su formato es:

. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . .. .. . . . . . . . . . . .

. .

¡ str_repeat('valor_repetido',veces_repetidas); ¡

. .
. .
..............................................................................................................

Veamos el s i g u i e n t e caso:

o A partir de un número entero mostrar el s i g u i e n t e formato 000001:

.•................................................................................................................................................................................................
. .

<?php .

$n=l;
• •

echo 'El numero de factura e s : ' . str_repeat('0',S).$n;


. ?> .

..................................................................................................................................................................................................

Resultado:

[ El número de factura es: 000001 ]

[ 6.2.13 J Función str_pad U

Permite r e l l e n a r u n a cadena en otra un n ú m e r o d e t e r m i n a d o de veces. Su formato es:

. . . .. .. .. . . .. . .. . . .. . .. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. .

1 s t r_ p a d ( $ v a r i a b l e , numero_repeticiones, 'carácter', tipo); ,


. .
•. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . •

Donde:

o $variable: Es el valor base para el r e l l e n o de caracteres, hay q u e tener en cuenta q u e el r e l l e n o

p u e d e darse a la izquierda o derecha de este valor.

o Numero_repeticiones: Es el valor n u m é r i c o q u e i n d i c a cuántas veces se repetirá el carácter en

la c a d e n a .

o Carácter: Es el valor a repetirse.


••••• DESARROLLO DE APLICACIONES WEB CON PHP

o Tipo: Es la d e fi n i c i ó n o p c i o n a l , un tipo determina la posición del valor repetido. Se presentan los

siguientes tipos:

o STR_PAD _RIGHT: R e l l e n a por el lado derecho.

o STR_PAD_LEFT: R e l l e n a por el lado i z q u i e r d o .

o STR_PAD_BOTH: R e l l e n a por la derecha y la izquierda a la vez.

C u a n d o no se especifica un ti p o se a s u m e el valor STR_PAD_RIGHT.

Veamos el s i g u i e n t e caso:

o A partir de un n ú m e r o entero mostrar el siguiente formato 000001:

..................................................................................................................................................................................................
. .

<?php

: $n = 1; ·

echo str_pad($n,5, '0',STR_PAD_LEFT); //Resp:00001

: ? > :
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. .. . . .. .. .. . . . .. .. .. . .

m FUNCIONES NUMÉRICAS 1

Las funciones numéricas para PHP están preparadas para valores que estén dentro de los límites

p e r m i ti d o s por los tipos de datos integer y float. Hay q u e t e n e r en cuenta que un valor numérico

es asignado a una variable sin especificar comillas ni otra clase de símbolo, entonces podríamos

m e n c i o n a r l a s siguientes a s i g n a c i o n e s :

o Asignación de n ú m e r o s enteros:

,•···················································•,
. .

' $n=10·
: ' .

1 $edad=24;
. .
•...................................................•

o Asignación de números d e c i m a l e s o fraccionarios:

.•...................................................
. .

: $sueldo=1250.50; .

( $talla=l.75; ·
.
. .
.....................................................

o Forzar u n a cadena n u m é r i c a a n ú m e r o entero o float:

.............................................................

. .

l $n='10' • 1;
. .

: $sueldo='1250.50' • 1.0; :
. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . .

i 6.3.1 j Función abs ij

Permite devolver el mismo valor asignado en forma positiva, considere q u e abs no modifica los tipos

de datos o r i g i n a l e s del valor n u m é r i c o . Su formato es:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . . . . . .
. .
. .

( abs($variable_numerica); (
. .
. .
....................................................................................................
CAP. 6: FUNCIONES ••

Veamos el s i g u i e n t e caso:

o A partir de u n a expresión n u m é r i c a q u e p u e d e resultar positiva o negativa se le aplicará la f u n c i ó n

abs para i m p r i m i r u n n ú m e r o entero:

,·•·······························································································································································································•,

· c?php :

· $monto=l500; ;

$descuento=l0/100.0 * $monto;

$montoDescontado=($descuento-$monto);

echo ' E l nuevo monto es: '.abs($montoDescontado); //Resp. 1350

..................................................................................................................................................................................................

i 6.3.2 I Función cei[]

Permite redondear un valor n u m é r i c o al valor entero superior. Su formato es:

.•.............................................................
. .
. .

¡ ceil($variable); ¡

. .
. .
...............................................................

Veamos el s i g u i e n t e caso:

o A partir de un promedio i m p r i m i r el valor numérico s u p e r i o r :

..................................................................................................................................................................................................
. .

<?php



$promedio=10.3;

echo ' E l nuevo monto e s : '.ceil($promedio); //Resp. 11


• •

.................................................................................................................................................................................................•

[ s.a.a J Función exp i]

Permite devolver un v a l o r e x p o n e n c i a l de e, el cual tiene el valor 2. 7 1 8 2 . Su formato es:

...............................................................
. .


• exp($variable_numerica); !

. .
...............................................................

Veamos el s i g u i e n t e caso:

o A partir de un número entero d e t e r m i n a r el valor e x p o n e n c i a l :

..................................................................................................................................................................................................
. .

c?php
• •

$n=l;


• echo ' E l nuevo monto e s : ' . e x p ( $ n ) ; //Resp. 2.7182 •

..................................................................................................................................................................................................

[ s.3.4 j Función floor ij

Permite redondear un valor numérico al valor entero inferior. Su formato es:

.....................................................................

. .

, fl o o r ( $ v a r i a b l e _ n u m e r i c a ) ; 1
. .
•. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . •
••••• DESARROLLO DE APLICACIONES WEB CON PHP

Veamos el s i g u i e n t e caso:

o A partir de un valor n u m é r i c o r e d o n d e a r l o al valor entero inferior:

..................................................................................................................................................................................................
.

<?php

$n=4.3;

echo 'El numero redondeado es:'. fl o o r ( $ n ) ; //Resp. 4 •


...................................................................................................................................................... .

[ s.3.5 [ Función getrandmax U

Permite mostrar el n ú m e r o máximo entero de los valores aleatorios p e r m i ti d o s por PHP. Su formato

es:

.•..........................................•.......
. .

. •
.

¡ getrandmax(); ¡

. .
.........•..............................•.........•.

Veamos el s i g u i e n t e caso:

o Mostrar el m á x i m o v a l o r numérico aleatorio permitido por P H P :

,·•································································································································································································ .

<?php

echo 'El máximo valor aleatorio es: '.getrandmax(); //Resp. 32767 •


.................................................................................................................................................................................................. •

[ s.3.6 j Función max [j

Permite devolver el m á x i m o valor n u m é r i c o de un conjunto de valores del m i s m o ti p o . Su formato

es:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . .
. .
. .

¡ max($variable_coleccion); ¡

. .
....................................................................

Veamos el s i g u i e n t e caso:

o A partir de un conjunto de números enteros almacenados en un arreglo llamado $números,

d e t e r m i n a r el mayor e l e m e n t o :

,·•······························································································································································································•·,
• •

<?php

$números=array(l,4,26,7);

. echo 'El elemento mayor es: ' . max($números); / /Resp: 26 :

..................................................................................................................................................................................................

[ s.3. 7 [ Función min [j

Permite devolver el m í n i m o valor n u m é r i c o registrado en un conjunto de valores d e l m i s m o tipo. Su

formato es:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .
. .

! min($variable_coleccion); !

. .
. . . . . . . . . . . . . . . . . . . . .. . . .. . . . . . . . . . . . . . . .. . . .. .. . . . . . . . . . . . . . . . . . . . .
CAP. 6: FUNCIONES ••

Veamos el s i g u i e n t e caso:

o A partir de un conjunto de números enteros almacenados en un arreglo llamado $números,

d e t e r m i n a r el m e n o r e l e m e n t o :

,·•·······························································································································································································•,

· c?php ·

· $números=array(l,4, 26, 7 ) ; ·

. echo ' E l menor elemento e s : ' . m i n ( $ n ú m e r o s ) ; //Resp: 1 .

?>
• •
• . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . ' ' .•

[ 6.3.8 j Función mt_rand il

Permite generar un número entero a l e a t o r i o a p a r ti r de un valor i n i c i a l y fi n a l :

.•.........................................................................................
. .
. .

j mt_rand ( $ v a l o r_ i n i c i a l , $ v a l o r _ fi n a l ) ; j

. .
...........................................................................................

Veamos el s i g u i e n t e caso:

o G e n e r a r un número aleatorio única y exclusivamente de tres cifras:

..................................................................... ' .
. .

c?php

$valor inicial=100;

$ v a l o r _ fi n a l = 9 9 9 ;


• •

echo mt_rand($valor_inicial, $ v a l o r _ fi n a l ) ;



. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. . .......... .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . ... ...... .. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Una vez ejecutada la aplicación p u e d e generar un nuevo número aleatorio presionando F5 en su

navegador.

l 6.3.9 j Función pi )]

Permite devolver el valor fraccionario de PI, es d e c i r 3 . 1 4 1 5 9 2 6 5 3 5 8 9 8 . Su formato es:

······························································· ..............•.........••••..•.••......••......••.•..••••.•...•••...............................•...•••••...•.••••....••......••..
.
· ·
,
.
.
. •
. pi( ); .

. •
. .
'
M PI·

. - '
.
'
·. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ....... ... .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .............. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Veamos el s i g u i e n t e caso:

o I m p r i m i r el valor P I :

..................................................................................................................................................................................................
. .
. .
. .
c?php
. •
. .
. .
. .
.
.
echo p i ( ) ; // Resp: 3.1415926535898 .
.
. .
. .
.
. echo M PI· // R e s p : 3.1415926535898
.
.


- ' •
.
.

. ?> .
.
·. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

i 6.3.10 1 Función pow )]

Permite elevar un valor n u m é r i c o a la N potencia. Su formato es:

. . . . . . . . . . . . . . . . . . . . .. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. .. . . . . . . . . . . . . . . . . . . . .

. .

$variable=pow($valor_base,valor_potencia); ]

. .
.....................................................................................................
••••• DESARROLLO DE APLICACIONES WEB CON PHP

Veamos el s i g u i e n t e caso:

o A partir del número entero 2, determinar el cuadrado, cubo, raíz cuadrada y raíz c ú b i c a :

..................................................................................................................................................................................................
. .

<?php
• •
• $n=2; •


$cuadrado=pow($n,2);

$cubo=pow($n,3);

$rcuadrada=pow($n,1.0/2.0);

$rcubica=pow($n,l.0/3.0); •

echo 'El valor ' .$n.' al cuadrado es: '.$cuadrado; // Resp: 4

echo '<br>El valor ' .$n. · al cubo es: '.$cubo; // Resp: 8




echo " < b r xLa raíz cuadrada de ' .$n.' es: '.$rcuadrada; // Resp: 1.4142 •

echo · c b r xLa raíz cubica de · . $n. ' es: · . $reubica; // Resp: 1 . 2599

..................................................................................................................................................................................................

l 6.3.11 j Función round ij

Permite devolver un número redondeado a N valores d e c i m a l e s . Su formato es:

.··················································································································.
. .

¡ round($variable_decimal,numero_decimales); ,
. .
. .
..................................................................................................................

Veamos el s i g u i e n t e caso:

o A partir de un n ú m e r o d e c i m a l , mostrar el valor redondeado a O, 1 y 2 d e c i m a l e s :

..................................................................................................................................................................................................
. .

<?php

$nota=10.5; •


echo 'La nota es: '.round($nota); //Resp: 11 •


• •
echo 'La nota es: '.round($nota,1); //Resp: 10.5

echo 'La nota es: '.round($nota,2); //Resp: 10.5

.................................................................................................................................................................................................•

l 6.3.12 I Función sqrt )J

Permite devolver la raíz c u a d r a d a de un n ú m e r o . Su formato es:

.......................................................

. .

, sqrt($variable); ¡

. .
. .
.....................................................

Veamos el s i g u i e n t e caso:

o Muestre la raíz c u a d r a d a de un n ú m e r o :

.· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · .

: <?php :

$n=2;

echo 'La r-aa z cuadrada de '.$n . ' es: · .sqrt($n);

• •
• •
•. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . •
CAP. 6: FUNCIONES •••

Resultado:

[ La raíz cuadrada de 2 es: 1.4142135623731 ]

m FUNCIONES DE FECHA Y HORA 1

P H P considera a las fechas como u n a cadena de caracteres, h a c i e n d o q u e sus funciones detecten una

fecha v á l i d a y, a p a r ti r de a l l í , obtener distintos valores.

l 6.4.1 1 Función date il

Permite retornar valores referentes a la fecha y hora a c t u a l . Su formato es:

.......................................................
. .
. .

¡ date ( f o r m a t o ) ; ¡
. .
. .
. . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Veamos los siguientes casos:

o Mostrar la fecha a c t u a l :

. - · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · • ,.

· c?php ·

. echo 'Fecha actual: '.date('d-m-y'); ·

. ?> .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ... ........ .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . ... ....... ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Resultado:

[ Fecha actual: 02-08-14 )

o Listaremos los formatos de la f u n c i ó n date .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . ... . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... .... ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


.

c?php

echo 'AM o PM: '.date( ' A ' ) ;

echo " c b r o am o pm: '.date('a');

echo 'cbr>Día actual de dos cifras: '.date('d');

echo '<br>Día actual sin ceros a la izquierda: '.date('j');

echo 'cbr>Mes actual: ' . date(' F ' ) ;

echo 'cbr>Mes actual 3 letras: '.date('M');

echo '<br>Número de mes de dos cifras: '.date('m');


echo 'cbr>Número de mes sin ceros a la izquierda: '.date('n');

echo '<br>Año de 4 cifras: ' . date(' Y ' ) ;

echo 'cbr>Año de 2 cifras: '.date('y');

echo 'cbr>Hora actual 0-23: '.date('G');

echo '<br>Hora actual 0-23 de dos cifras: '.date('H');


echo 'cbr>Hora actual 1-12: '.date('g');

echo '<br>Hora actual 1-12 de dos cifras: '.date('h');

echo 'cbr>Minuto actual de dos cifras: '.date('i');

echo 'cbr>Segundos actual de dos cifras: '.date('s');

echo '<br>Número de días del mes actual: '.date('t');

..................................................................................................................................................................................................
••••• DESARROLLO DE APLICACIONES WEB CON PHP

Resultado:

AM o PM: PM

a m o pm: pm

Día actual de dos cifras: 01

Día actual sin ceros a la izquierda: 1

Mes actual: August

Mes actual 3 letras: Aug

Número de mes de dos cifras: 08

Número de mes sin ceros a la izquierda: 8

Año de 4 cifras: 2014

Año de 2 cifras: 14

Hora actual 0-23: 17

Hora actual 0-23 de dos cifras: 17

Hora actual 1-12: 5

Hora actual 1-12 de dos cifras: 05

Mlnuto actual de dos cifras: 44

Segundos actual de dos cifras: 54

Número de días del mes actual: 31

o Mostrar la fecha actual en el siguiente formato: Lunes 30th de J u n i o 2015 1 9 : 1 3 : 2 0 PM .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . ..... . .. . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . . ... ......... . ... . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


. .

<?php



echo date('l jS \of F Y h:i:s A');


..................................................................................................................................................................................................

Resultado:

[ Friday 1st of August 2014 05:45:41 PM ]

[ 6.4.2 1 Función time íl

Permite retornar valores referentes a la fecha y hora a c t u a l . Su formato es:

.......................................................

. .

1 time(); 1

. .
•....................................................

Veamos el s i g u i e n t e caso:

o Mostrar la fecha actual y un día posterior a la misma, u s a n d o la función time para a u m e n t a r un

día al a c t u a l :

•........................................................................................................... · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · .
.

<?php

$hoy=date('Y-m-d');

$mañana= time()+ (1 • 24 • 60 • 60);




• •


echo 'Hoy e s : ' .$hoy;

echo '<br>Mañana es: '.date( 'Y-m-d', $mañana);

.................................................................................................................................................................................................•

Resultado:

Hoy es:2014-08-01

Mañana es: 2014-08-02

Comentarios:

•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•

: $hoy=date('Y-m-d'); ·

'••·································································································································································································

Declaramos la v a r i a b l e $hoy, la c u a l tiene a s i g n a d o el día de hoy.


CAP. 6: FUNCIONES ••

..................................................................................................................................................................................................
. .

• $ m a ñ a n a = t i m e ( ) + (1 * 24 * 60 * 60);

................................................................................................................................................................................. ................•

La v a r i a b l e $ m a ñ a n a asigna el valor del día siguiente al día actual, s u m a n d o 1 día, 24 horas, 60

minutos y 60 segundos .

.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . . .. . .. . . .
.

· echo 'Hoy e s : ' .$hoy; ·

· echo '<br>Mañana es: ' . d a t e ( ' Y - m - d ' , $mañana); ·

..................................................................................................................................................................................................

Los valores son impresos mediante la función echo de PHP.

l 6.4.3 1 Función checkdate ij

Permite v a l i d a r una fecha devolviendo true si la fecha es correcta. Su formato es:

..................................................................................................................................................................................................
. .

' checkdate($mes, $día, $año);

··································································································································································································

Hay que tener en cuenta que el mes es un valor n u m é r i c o entre 1 y 12, el día es un valor numérico

entre 1 y 30 o 31, d e p e n d i e n d o del mes i m p l e m e n t a d o . El año es un valor n u m é r i c o entre 1 y 32767.

Veamos el s i g u i e n t e caso:

o Validar la fecha de registro de un e m p l e a d o :

.·················· ................................................................................................................................................................................•
. .
. .

i <?php i

1 //Asignación de fecha de registro 1


. .

¡ $fechaReg='02-26-2015'; ¡
. .

¡ $fecha=explode(' - ',$fechaReg); ,
. .
. .
. .
. .
. .

j //Separando día, mes y año j

1 $mes=$fecha[0]; 1
. .

¡ $día=$fecha[l]; ¡
. .

¡ $año=$fecha[2]; ¡
. .
. .
. .
. .
. .
. .

, //Validando los valores de la fecha ,


. .

j if (checkdate($mes, $día, $año)) j

¡ echo ' L a fecha ' . $fechaReg. ' es correcta. ' ; ¡


. .

, else ,
. .
. .

¡ echo 'La fecha ' . $fechaReg. ' NO es correcta . . ! ! ' ; ¡


. .

: ? > :
. .
• •
•....................................••......••......••......••......•.......••......................................•......••......••......••.......•......••....................................

Comentarios:

..................................................................................................................................................................................................
. .

$fechaReg='02-26-2015';

• $fecha=explode('-',$fechaReg);

..................................................................................................................................................................................................

Asignamos una fecha de registro en la variable $fechaReg, desde aquí desprenderemos el

mes, día y año en una variable de ti po arreglo, llamada $fecha. La función explode permite

desprender los elementos y dividir según un criterio; en este caso, por cada g u i o n se estará

a l m a c e n a n d o un nuevo elemento al arreglo.


••••• DESARROLLO DE APLICACIONES WEB CON PHP

·································································································································································· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
• •

· $mes=$fecha[0]; ·

$ d í a = $ f e c h a [ l ] ;

$año=$fecha[2]; ;

........................................•................•.......•.....................•..........•.....•..............•................•..............................................•..........

Para poder recuperar los valores almacenados en la variable $fecha, debemos crear tres

variables, las cuales recuperarán la información u s a n d o el índice de a l m a c e n a m i e n t o del arreglo;

es decir, el índice O indicará el mes, 1 indicará el día y 2 indicará el a ñ o .

.•...............•....•.........•........•.......•...........................................•................................................................................................••..
. .


if (checkdate($mes, $día, $año))

.................................................................... , , , .

F i n a l m e n t e , d e b e m o s comprobar q u e la fecha registrada sea válida u s a n d o la f u n c i ó n checkdate,

este recibirá como parámetros de valores i n d i v i d u a l e s de la fecha d e s p r e n d i d a desde el arreglo

$fecha.

Resultado:

[ La fecha 02-26-2015 es correcta. ]

[ 6.4.4 1 Función getdate ij

Permite generar un arreglo de valores con los elementos q u e conforman la fecha actual del sistema.

Su formato es:

. . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. . . . . . . . . . .. . . . . . . . . . . . . .

. .

1 getdate(formato); 1
. .
. .
.....................................................

Veamos el s i g u i e n t e caso:

o A partir de la fecha actual, determinar el día, mes, año, hora, m i n u t o y segundo:

..................................................................................................................................................................................................
. .

<?php

. //Obtener la fecha y hora actual ,

$hoy=getdate(time());

//Datos de la fecha actua




echo ' A ñ o : ' . $hoy [ ' y ea r ' ] ; •

echo ' < b r > M e s : " . $ h o y [ ' m o

echo ' < b r > D í a : ' . $ h o y [ ' m d

, //Datos de la hora actual ,

echo ' < b r > H o r a : ' . $ h o y [ ' h o u r s ' ] ;

echo ' < b r > M i n u t o s : " . $ h o y [ ' m i n u t e s ' ] ;

echo ' < b r > S e g u n d o s : ' . $ h o y [ ' s e c o n d s ' ] ;

?
• •

................................................................................................................ . . . . . . . . . . . . . . . . . .. . . . . . . . ' ' .•

Resultado:

Año: 2014

Mes: August

Día: 1

Hora: 17

Minutos: 43

Segundos: 52
CAP. 6: FUNCIONES ••

FUNCIONES IMPLEMENTADAS POR EL USUARIO

El código de programación se caracteriza por tener b l o q u e s de código q u e realizan u n a actividad hasta

completar un proceso; normalmente, esta se realiza de forma secuencial, es decir, el compilador

interpretará línea por línea de forma top-down. Con la incorporación de las estructuras c o n d i c i o n a l e s

y repetitivas cambió un poco la perspectiva de desarrollo, ya que no era tan secuencial como al

inicio. Es así q u e c u a n d o t e r m i n e una a p l i c a c i ó n web con PHP notará que ha escrito m u c h o código

y posiblemente código q u e se repite; es a q u í d o n d e entra el t é r m i n o función, q u e permite separar el

código en porciones p e q u e ñ a s , q u e p u e d e n ser controladas i n d e p e n d i e n t e m e n t e d e l código p r i n c i p a l .

[ s.5.1 / Definición y usos jj

U n a función se puede d e fi n i r como un conjunto de instrucciones o s e n t e n c i a s s e p a r a d a s de un código

p r i n c i p a l para u n a tarea específica, esto a c o n s e c u e n c i a de la cantidad de código q u e se genera en

u n a a p l i c a c i ó n . F i n a l m e n t e , u n a f u n c i ó n tiene por m i s i ó n devolver casi s i e m p r e un valor resultante.

Siempre se r e c o m i e n d a q u e antes de comenzar u n a a p l i c a c i ó n , a n a l i c e los procesos q u e contiene y

asigne un nombre de f u n c i ó n , y así poder i m p l e m e n t a r de la mejor manera p o s i b l e las a p l i c a c i o n e s ,

empezaremos por un ejemplo básico:

La ti e n d a de c a l z a d o s más importante de la c i u d a d de Lima necesita u n a a p l i c a c i ó n en

PHP, la cual permita controlar los pagos q u e se les realiza a sus vendedores. Se debe

tener en cuenta el siguiente criterio:

o Cada vendedor cuenta con un sueldo básico de $250.00.

o Se le asignará un monto adicional al básico, llamado comisión, el cual es

o b t e n i d o gracias al monto total de ventas q u e realiza durante un mes, para lo

cual debemos considerar la siguiente tabla de categorías:

CATEGORÍA PORCENTAJE POR COMISION

A 20.00 %

B 16.00 %

e 14.00 %

D 12.00 %

o El sueldo bruto resulta entonces de la adición del sueldo básico más la comisión

a l c a n z a d a durante el mes.

o En caso resulte el sueldo bruto s u p e r i o r a $2500, se le a p l i c a r á u n descuento

ascendente al 11.50 % del sueldo bruto; caso contrario, no estará afecto a

descuento a l g u n o .

La ti e n d a de c a l z a d o nos pide q u e d e t e r m i n e m o s el monto de la comisión, el monto

a s i g n a d o al s u e l d o bruto, el monto de descuento y el monto a s i g n a d o al s u e l d o neto de

un v e n d e d o r durante un mes d e t e r m i n a d o .
••••• DESARROLLO DE APLICACIONES WEB CON PHP

A c o n ti n u a c i ó n , detallaremos l a s actividades q u e se tiene q u e r e a l i z a r para d a r u n a s o l u c i ó n a d e c u a d a

al caso propuesto, y lo haremos en el siguiente o r d e n :

o I d e n ti fi c a r a q u é vendedor se le está r e a l i z a n d o el pago.

o D e t e r m i n a r el s u e l d o básico de $250.00.

o C a l c u l a r la comisión según el monto v e n d i d o y la categoría del vendedor.

o Obtener el monto de ventas q u e tiene asignado el vendedor en el mes.

o C a l c u l a r el monto del s u e l d o bruto.

o C a l c u l a r el monto de descuento según el monto del s u e l d o bruto.

o C a l c u l a r el monto neto a s i g n a d o al vendedor.

Como notará, hemos agotado todas las actividades que se puede realizar en el caso propuesto;

ahora le daremos un orden y le asignaremos un nombre a d e c u a d o para la i m p l e m e n t a c i ó n de las

funciones:

N. DE ACTIVIDAD FUNCIÓN

getVendedor()

1 Permite capturar el nombre del vendedor que se necesita calcular

su sueldo.

getMontoVendido()

2 Permite obtener el monto vendido por el vendedor mencionado en

el paso uno.

determinaSueldoBasico()
3
Asigna el sueldo básico de $ 2 5 0 . 0 0 .

calculaComision(monto, categoría)

Calcula la comisión según la categori'a, pero como el porcentaje


4
se aplica al monto vendido este último tiene que ser un parámetro

para la función.

calculaSueldoBruto(monto,comision)

5 Permite calcular el sueldo bruto sumando el monto y la comisión

obtenida por el vendedor.

calculaDescuento(bruto)
6
Permite calcular el descuento según el sueldo bruto obtenido.

calcula Neto( bruto, descuento)


7
Permite calcular el sueldo neto obtenido por el vendedor.

6.5.2 Implementación de una función 1

Se le l l a m a así c u a n d o se d e fi n e todas las sentencias o instrucciones necesarias para q u e la función

c u m p l a con u n a actividad determinada, es a q u í d o n d e colocaremos el código P H P que h e m o s venido

e s t u d i a n d o . El formato para la i m p l e m e n t a c i ó n de u n a f u n c i ó n es:

.................................................................................................

. .
. .
. .

¡ function nombre(Parametros){ ¡

( //Sentencias o Instrucciones (
. .

¡ return valor_de_retorno; ¡

. .

: } :
. .
. .
. .
. .
. .
...............................................................................................
CAP. 6: FUNCIONES ••

Veamos las partes de una f u n c i ó n :

o El término function es una p a l a b r a reservada por el lenguaje P H P para identificar las funciones

dentro del compilador.

o El nombre de la función debe c u m p l i r los m i s m o s requisitos del n o m b r e de una v a r i a b l e .

o Los parámetros son d e fi n i d o s como variables de entrada que serán usadas estrictamente dentro

de la función, y que desde el exterior es enviada como valor; así por ejemplo:

o function n o m b r e ( $ a ) : Definición de un solo parámetro para la f u n c i ó n .

o function n o m b r e ( $ a , $ b ) : Definición de dos parámetros para la f u n c i ó n .

o Las sentencias o instrucciones son parte del c u e r p o de la función, estas p u e d e n ser c u a l q u i e r tipo

de operación, como asignaciones, expresiones, etc.

o El término return permite especificar la s a l i d a que tiene la función; es decir, c u á l es el resultado

emitido por la función, t a m b i é n l l a m a d o factor de devolución.

Del caso anterior i m p l e m e n t a r e m o s las funciones a partir de las actividades o r d e n a d a s :

N.° DE ACTIVIDAD FUNCION

getVendedor(){

1 return $_POST['txtVendedor'];

getMontoVendido(){

2 return $_POST['txtMonto']:

determinaSueldoBasico(){

3 return 250;

calculaComision($monto, $categoría){

if($categori"a=='A')

return 0.2 • $monto;

el seif($categori"a==' B'}

return 0 . 1 6 • $monto;

el seif($categori"a=='C')
4
return 0 . 1 4 • $monto;

el seif($categori"a==' D')

return 0 . 1 2 • $monto;

else

return O;

calcula5ueldoBruto($monto,$comision){

5 return $monto+$comision;

calculaDescuento($bruto){

if($bruto>2500)

return 0 . 1 1 * $ b r u t o ;
6
else

return O;

calculaNeto($bruto,$descuento){

7 return $bruto-$descuento;

}
••• • • DESARROLLO DE APLICACIONES WEB CON PHP

l 6.5.3 1 Llamando a una función IJ

La l l a m a d a a u n a función se realiza a consecuencia d e l uso de las m i s m a s , puesto q u e toda función

debe ser invocada dentro de la a p l i c a c i ó n web P H P c u a n d o sea necesario. El formato presenta las

siguientes v a r i a c i o n e s :

$variable = función(): El resultado de la función sin parámetros es enviado a una variable.

El resultado de una función con parámetros es enviado a una


$ v a r i a b l e = función(parámetros);
variable.

El resultado de una función sin parámetros es impreso directamente


echo función();
en el navegador gracias a la función echo del PHP.

El resultado de una función con parámetros es enviado directamente


echo función(parámetros );
al navegador por la función echo.

El resultado de la función es usado en una expresión de cualquier


$variableR = función()+$variable;
tipo. pero su respuesta dependerá de la salida de la misma.

6.5.4 Implementación de una función con parámetros

Seguro se estará p r e g u n t a n d o : « ¿ C u á n d o será necesario usar los parámetros?». La respuesta es muy

s e n c i l l a : los parámetros son valores de entrada a la función; es decir, son valores q u e son necesarios

para c o m p l e t a r la f u n c i ó n . En r e a l i d a d , d e b e m o s d e t e r m i n a r cuáles son los datos q u e necesita u n a

función para realizar u n a tarea específica; e l l o s serán los parámetros. Su formato es:

.· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · .
. .
. .

¡ function nombre($parametrol, $parametro2, ... $parametroN){ ¡

. .

; / /Cuerpo de la función ¡

. .

i return valor _retornado; ¡

. .

! } !
. .
. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Hay q u e considerar q u e no hay u n a c a n ti d a d límite de parámetros y q u e d e b e m o s tener c u i d a d o con

el orden de envío a los parámetros, en especial los de diferentes tipos de datos.

Veamos algunos casos de i m p l e m e n t a c i ó n de f u n c i o n e s con parámetros:

o F u n c i ó n q u e determine el promedio de 4 notas de un a l u m n o :

.•······································································································································································.
. .
. .

¡ function calculaPromedio($notal, $nota2, $nota3, $nota4){ ¡

. .

¡ return round(($nota1+$nota2+$nota3+$nota4)/4); ¡

. .

! } !
. .
•. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . •

o F u n c i ó n q u e d e t e r m i n e el monto de descuento d e l subtotal de u n a venta, en el c u a l se a s u m e un

10 % de la m i s m a :

.........................................................................................................................................................................

. .

¡ function calculaDescuento($subtotal){ ¡
. .

¡ $descuento= $subtotal * 0.1; ¡

. .

¡ return $descuento; ¡

. .

! } ;

. .

. .
•......................................................................................................................................................................
CAP. 6: FUNCIONES ••

o Función que determine el monto por hora, según la categoría del empleado, sabiendo que

A=$25.00, 8=$20.00 y C=$15.00; en c u a l q u i e r otro caso devolver cero como valor de monto:

. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . .. . . .. . . . . . . . . . . . . .
. .
. .

: function determinaMontoxHora($categoria){ :
. .

: if ($categoría==' A ' ) :
. .

: return 2 5 . 0 0 ; :

: e l s e i f ( $ c a t e g o r i a = = ' B ' ) :
. .

: return 20.00;

elseif($categoria=='C')

• return 1 5 . 0 0 ; :

· else ·

return 0;

}
. •
.

'••····································································································································································

6.5.5 Implementación de una función con parámetros y con valor por defecto

La d e fi n i c i ó n de un parámetro con valor por defecto indica q u e c u a n d o se i n v o q u e a la función y no

se envíe un valor, o s i m p l e m e n t e sea vacía, tome el v a l o r por defecto y trabaje en base a dicho valor.

Su formato es:

.................................................................................................................................
. .
. .

: function nombre_funcion($parámetro=valor_x_defecto){ :

: / /Cuerpo de la función :

j return valor retornado; ¡


. .

: } :
. .
. .
. .
...............................................................................................................................

Veamos el s i g u i e n t e caso:

o En una empresa los empleados ti e n e n una asignación de pago mensual, dependiendo de la

categoría, las cuales son: operario ($750.00), administrativo ($1750.00) y jefe ($2750.00).

Implementaremos una función que asigne un monto de pago según su categoría y, además,

asignaremos como valor por defecto la categoría «Administrativo» .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . • • . . . . . . • • . . . . . . • • . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • • . . . . . . • • . . . . . . • • . . . . . . • • . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .
. .

<?php

//Implementación de la función pago

function determinaPago($categoria='

if ( $ c a t e g o r i a = = ' O p e r a r i o ' )

return 750;


elseif ($categoria=='Administra

return 1750;

elseif ( $ c a t e g o r i a = = ' J e f e ' )

return 2750;



• •

• •
• //Invocando la función •

• •


• echo ' E l pago por defecto e s : ' . determinaPago();

• •
echo ' c b r > E l pago del Jefe e s : ' . d e t e r m i n a P a g o ( ' J e f e ' ) ;

•. . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

El resultado de la a p l i c a c i ó n es:

El pago por defecto es: 1750

El pago del Jefe es: 2750


CAP. 6: FUNCIONES ••

o Función que determine el monto por hora, según la categoría del empleado, sabiendo que

A=$25.00, 8=$20.00 y C=$15.00; en c u a l q u i e r otro caso devolver cero como valor de monto:

. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . .. . . .. . . . . . . . . . . . . .
. .
. .

: function determinaMontoxHora($categoria){ :
. .

: if ($categoría==' A ' ) :
. .

: return 2 5 . 0 0 ; :

: e l s e i f ( $ c a t e g o r i a = = ' B ' ) :
. .

: return 20.00;

elseif($categoria=='C')

• return 1 5 . 0 0 ; :

· else ·

return 0;

}
. •
.

'••····································································································································································

6.5.5 Implementación de una función con parámetros y con valor por defecto

La d e fi n i c i ó n de un parámetro con valor por defecto indica q u e c u a n d o se i n v o q u e a la función y no

se envíe un valor, o s i m p l e m e n t e sea vacía, tome el v a l o r por defecto y trabaje en base a dicho valor.

Su formato es:

.................................................................................................................................
. .
. .

: function nombre_funcion($parámetro=valor_x_defecto){ :

: / /Cuerpo de la función :

j return valor retornado; ¡


. .

: } :
. .
. .
. .
...............................................................................................................................

Veamos el s i g u i e n t e caso:

o En una empresa los empleados ti e n e n una asignación de pago mensual, dependiendo de la

categoría, las cuales son: operario ($750.00), administrativo ($1750.00) y jefe ($2750.00).

Implementaremos una función que asigne un monto de pago según su categoría y, además,

asignaremos como valor por defecto la categoría «Administrativo» .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . • • . . . . . . • • . . . . . . • • . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • • . . . . . . • • . . . . . . • • . . . . . . • • . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .
. .

<?php

//Implementación de la función pago

function determinaPago($categoria='

if ( $ c a t e g o r i a = = ' O p e r a r i o ' )

return 750;


elseif ($categoria=='Administra

return 1750;

elseif ( $ c a t e g o r i a = = ' J e f e ' )

return 2750;



• •

• •
• //Invocando la función •

• •


• echo ' E l pago por defecto e s : ' . determinaPago();

• •
echo ' c b r > E l pago del Jefe e s : ' . d e t e r m i n a P a g o ( ' J e f e ' ) ;

•. . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

El resultado de la a p l i c a c i ó n es:

El pago por defecto es: 1750

El pago del Jefe es: 2750


••• • • DESARROLLO DE APLICACIONES WEB CON PHP

6.5.6 Implementación de una función sin valor de retorno

Cuando u n a función no devuelve valor se le l l a m a función con retorno vaao o s i m p l e m e n t e sin valor

de retorno; esta forma de i m p l e m e n t a c i ó n se p u e d e usar para i m p r i m i r valores directamente. Su

formato es:

. .
.· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · .
. .

¡ function nombre_funcion(parámetros){ ¡

. .

: / /Cuerpo de la función ¡

¡ } ¡

. .
.................................................................•.............•................................•......................................................

Veamos el s i g u i e n t e caso:

o De acuerdo a un monto establecido, c a l c u l a r el monto de descuento IVA, el c u a l asciende a un 19

% del monto v e n d i d o . Al fi n a l deberá i m p r i m i r el monto ingresado y el valor del IVA a partir de

u n a f u n c i ó n sin valor de retorno.

,·•·································································································································································································
• •


<?php •

//Implementación de la fu descuento IVA

function determinaIVA($mo

echo '<br>El monto dese es: $'

o*0.19, ' 2 ' , ' . ' , ' ' ) ;

//Invocando la función sin valor de retorno

$monto=10000;

echo 'El monto a pagar es: $ ' . number _format($monto, ' 2 ' , ' . ' , ' ' ) ;

determinaIVA($monto);

..................................................................................................................................................................................................

Resultado:

El monto a pagar es: $10000.00

El monto descuento es: $1900.00

6.5. 7 Implementación de una función con múltiples valores de retorno

Cuando una función emite muchos valores de devolución, estos se ti e n e n que a l m a c e n a r en un

arreglo de valores, el c u a l debe ser d e fi n i d o dentro de la f u n c i ó n . Su formato es:

..................................................................................................................................................................................................
. .

function nombre_funcion(p

$variablel=expres

$variable2=expres


$variableN=expresionN; •


return array($variablel, $ v a r i a b l e 2 , ... , $ v a r i a b l e N ) ;


.. . . .. . . . . . . . . . . . . . . . .. . . . .. . .. . . . .. .. .. . . .. . .. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Veamos el s i g u i e n t e caso:

o U n a l u m n o cuenta con tres notas, de las cuales se debe d e t e r m i n a r el promedio, la nota m á x i m a

y la nota mínima; se pide r e a l i z a r todos los cálculos en una sola función, u s a n d o función con

m ú l ti p l e s valores de retorno.
CAP. 6: FUNCIONES •••

.. . . . . . . . . . ... . .. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ... .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . . . . . . ..


.

: <?php :
• •

: //Implementación de la función :

function estadisticas($nl,$n2,$n3){

//Calculando el promedio

$promedio=($n1+$n2+$n3)/3;
'

'

//Determinar el mayor y menor elemento

$notas=array($nl,$n2,$n3); •
• •



$mayor=max($notas); •

• •

$menor=min($notas); •

//Enviar las respuestas a un arreglo '


return array($promedio, $mayor, $menor); '


• //Invocando a la función con múltiples valores


• •

• •

$nota1=10; •

$nota2=20;

$nota3=16;

'

//Capturando los valores múltiples desde la función

list($promedio,$mayor,$menor)=estadisticas($notal,$nota2,$nota3);

echo 'El promedio es: '.round($promedio);




• •
• echo '<br>La mayor nota es: '.$mayor; •

• •
• •
• echo '<br>La menor nota es: '.$menor; •

.................................................................................................................................................................................................•

Resultado:

El promedio es: 15

La mayor nota es: 20

La menor nota es: 10

6.5.8 Implementación de funciones anónimas (lambda en PHP)

U n a f u n c i ó n a n ó n i m a c u m p l e los m i s m o s r e q u e r i m i e n t o s q u e las funciones c o m u n e s ; lo q u e varía

es la forma de su i m p l e m e n t a c i ó n , es así q u e no tiene nombre de función y p u e d e ser u s a d o para

i m p l e m e n t a r función con menos líneas de código.

Una función anónima es una función (o s u b r u ti n a ) d e fi n i d a , y posiblemente invocada, sin estar

ligada a un nombre. En el cálculo lambda, todas las funciones son anónimas. El combinador Y

puede ser u ti l i z a d o en estas c i r c u n s t a n c i a s para proveer recursión a n ó n i m a . Algunos lenguajes de

programación t a m b i é n proveen soporte, tanto para f u n c i o n e s con nombre como para las f u n c i o n e s

a n ó n i m a s . Su formato es:

.................................................................................................................................

. .

: $variable= function(parámetros){ :
. .

: //Cuerpo de la función :

¡ return valor_de_retorno; ¡
. .

: } :
. .
. .
. .
...............................................................................................................................

Veamos el s i g u i e n t e caso:

o Se ti e n e un monto $5000.00 de d i n e r o en u n a cuenta b a n c a r i a , s i m u l a r e m o s un monto de retiro

de $1000.00, el c u a l debe a c t u a l i z a r a la cuenta por medio de u n a función anónima (PRIMERA

FORMA).
••••• DESARROLLO DE APLICACIONES WEB CON PHP

., · • · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · .

<?php


//Función lambda

$retiro=function($cuenta,$monto){

$cuenta-=$monto; •


• •

return $cuenta; •

};

//Invocando a la función

$cuenta=5000; •

• •

$monto=1000;



echo 'El monto de la cuenta es: $'

• . number _ f o r m a t ( $ c u e n t a , ' 2 ' , ' . ' , ' ' ) ;

echo '<br>El nuevo monto es: $'

• .number_format($retiro($cuenta,$monto), ' 2 ' , ' . · , ' ' ) ; •



• •

. . . . . . . . . . .. . . .. . . .. . .. . . . .. . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Resultado:

El monto de la cuenta es: $5000.00

El nuevo monto es: $4000.00

o Se tiene un monto $SOOO.OO de d i n e r o en u n a cuenta b a n c a r i a , s i m u l a r e m o s un monto de retiro

de $1000.00, el c u a l debe a c t u a l i z a r a la cuenta por m e d i o de u n a f u n c i ó n a n ó n i m a ( S E G U N D A

FORMA) .

...................................................................................................................................................................•..............................
. .

<?php

//Función lambda

· $retiro=function($cuenta,$monto){ !

$cuenta-=$monto; ·

echo '<br>El nuevo monto es: $'


.number_format($cuenta, ' 2 ' , ' . ' , ' ' ) ;

}; •



//Invocando a la función

' $cuenta=5000;

· $monto=1000;

echo 'El monto de la cuenta es: $' .


• •

. number_ f o r m a t ( $ c u e n t a , ' 2 ' , ' . ' , ' ' ) ; ;

$retiro($cuenta,$monto);

. . . . . .. . . . . . . .. . . .. . .. . .. .. . .. . . . . .. .. .. .. . . . . .. . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Resultado:

El monto de la cuenta es: $5000.00

El nuevo monto es: $4000.00

o Se tiene un monto $5000.00 de d i n e r o en u n a cuenta b a n c a r i a , s i m u l a r e m o s un monto de retiro

de $1000.00, el cual debe a c t u a l i z a r a la cuenta por m e d i o de u n a función anónima (TERCERA

FORMA).
CAP. 6: FUNCIONES ••

,·•································································································································ ,., , , ··········································•,


• •


<?php •

//Función Lambda

$retiro=create_function( $cuenta-=$monto; ' ) ;

//Invocando a la función

$cuenta=5000;

$monto=1000;

echo 'El monto de la cuenta es: $'

. number _ f o r m a t ( $ c u e n t a , ' 2 ' , ' . ' , ' ' ) ;

. echo '<br>El nuevo monto es: $'

' . number _format($retiro($cuenta, $ m o n t o ) , ' 2 ' , ' . ' , ' ' ) ; ¡

• •

• •
• •
• •
········································································································································ , .

Resultado:

El monto de la cuenta es: $5000.00

El nuevo monto es: $4000.00

Al FUNCIONES INCLUDE v REQUIRE 1

H a b í a m o s visto como concepto de función el poder romper el código en porciones pequeñas que

trabajan en c o m u n i ó n para un objetivo específico en la a p l i c a c i ó n web; pero hasta ahora l a s funciones

i m p l e m e n t a d a s lo h a n sido dentro de un m i s m o documento web, a q u í radica la ventaja de include y

require, pues d i c h a f u n c i ó n importa código desde el exterior; es decir, permite insertar un código P H P

en otro.

Entonces podemos d e d u c i r q u e :

o lnclude o requiere invoca código P H P en otro.

o Podemos i m p l e m e n t a r u n a a p l i c a c i ó n web en varios archivos PHP.

o En u n a a p l i c a c i ó n web, la lógica de negocio puede estar separada del d i s e ñ o web.

o Tanto include como require invocan archivos HTML y PHP; otros tipos de archivos deben ser

referenciados m e d i a n t e la etiqueta L I N K del HTML.

o Si necesitamos conectarnos a una base de datos p o d e m o s i n c l u i r u n a cadena de conexión.

i 6.6.1 j Función include i

Es una función que permite importar código PHP dentro de otro, haciendo lo que comúnmente

l l a m a m o s programación m o d u l a r . La característica p r i n c i p a l de la f u n c i ó n include es q u e c u a n d o el

archivo especificado no es encontrado muestra un mensaje de advertencia de error más c o n o c i d o

como «Errores w a r n i n g ... ! ! » , su formato es:

...........................................................................................
. .
• •

! include{'archivo.php'); !
. .
¡ include('archivo.html'); ¡

. .
.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Veamos el caso de i m p l e m e n t a c i ó n de la f u n c i ó n include:

D i s e ñ a r u n a a p l i c a c i ó n web en P H P que permita controlar la venta de productos en u n a fuente de

soda, en e l l a se debe ingresar el nombre del cliente y las cantidades de los productos ofrecidos.
••••• DESARROLLO DE APLICACIONES WEB CON PHP

La interfaz i n i c i a l se muestra a c o n ti n u a c i ó n :

FUENTE DE SODA

Ciente

[,sta de productos J'.canbd'ad )rreoo $ l�¼l!totof$

Ensalada de frutas $10.00 $0.00


------�
Jugo de frutas $13.00 $0.00

Helado $7.00 $0.00

sandwich $2S.OO $0.00

[ Finalizar venta J

Todos los de,echos r-e:ser'V.do @12015-Uc. H•nuel Torres R.

Tener en cuenta:

o Debe i m p l e m e n t a r un archivo l l a m a d o encabezado.php q u e permita mostrar la s i g u i e n t e i m a g e n :

FUENTE DE SODA

o Debe i m p l e m e n t a r un archivo ll a m a d o p i e . p h p que permita mostrar la siguiente i m a g e n :

Todos los deredtos N!HrvMk> ("2015-Uc. H•nuel Torres R.

'

o F i n a l m e n t e la a p l i c a c i ó n debe mostrar los siguientes resultados:


CAP. 6: FUNCIONES ••

FUENTE DE SODA

Ciente Fernanda Torres Lazare

3

P
l �
ita
� de
�p¡;
� odl
�;:-..
� �n
s
� J
���j¡íad
� c=========:J
) ""reoo""
,,..,
· $-------,r.:; ubtotal==$-------I
Ensalada de
1 $10.00 $10.00
frutas

Jugo de frutas 2 $13.00 $26.00

Helado 2 $7.00 $14.00

sandwich o $25.00 $0.00

FinalizarVenta j

TOTAL A PAGAR
$24.00

Todos los derechos reservado 02015·Lic. Manuel Tones R.

Archivo: fuente.php

,·•····································································································································· ··················································••,
• •
• •


<!DOCTYPE html>

• •

. <html> :

: <head> .

· <meta charset=''UTF-8''> :

<title></title> .

<link href=''estilo.css'' rel=''stylesheet''> ,

</head> •

<body>

<header>

<?php include( ' e n c a b e z a d o . p h p ' ) ; ?>

</header>

<section>

<?php

//Omitiendo errores de advertencia e incluyendo el archivo

//asignaPrecios.php

error_reporting(0);

include('asignaPrecios.php');

?>

<form name=''frmHelados'' action=''helados.php'' method="POST">

<table border="l" width="770"

cellspacing=''l'' cellpadding=''l''>

<tr>

<td>Cliente</td>

<td colspan=''3''>

<input type="text" name="txtCliente" size="104"

value=''c?php echo $cliente; ?>'' /></td>

</tr>

<tr>

<td i d = ' ' fi l a ' ' > L i s t a de Productos</td>

<td i d = ' ' fi l a ' ' > C a n t i d a d < / t d >

..................................................................................................................................................................................................
••••• DESARROLLO DE APLICACIONES WEB CON PHP

. .
. .

ctd i d = ' ' fi l a ' ' > P r e c i o $</td>

ctd i d = ' ' fi l a ' ' > S u b t o t a l $</td>

c/tr>

c tr»

ctd>Ensalada de Frutasc/td>

ctd><input type=''text'' name=''txtEnsalada''

value=''c?php echo $cantidadEns¡ ?>'' /></td>

ctd>c?php echo '$'.number_format($ensalada,2)¡ ?></td>

ctd><?php echo '$'. number_format($subtota1Ens,2)?></td>

c/tr>

ctr>

ctd>Jugo de Frutasc/td>

ctd><input type=''text'' name=''txtJugo''


value=''c?php echo $cantidadJug¡ ?>'' /></td> •



ctd><?php echo '$'.number_format($jugo,2)¡ ?></td>

• •
ctd>c?php echo '$'. number_format($subtota1Jug,2)?></td> •


• •

</tr>

• •

ctr> •

• •
• •


ctd>Heladoc/td> •

ctd><input type=''text'' name=''txtHelado'' •




value=''c?php echo $cantidadHel; ?>'' /></td> •

ctd>c?php echo '$'.number_format{$helado,2)¡ ?>c/td> •

ctd><?php echo '$'. number_format($subtota1Hel,2)?></td>

c/tr>

ctr>

ctd>Sandwichc/td>

ctd><input type="text" name="txtSandwich"

value=''c?php echo $cantidad5an¡ ?>'' /></td>

ctd><?php echo '$'.number_format($sandwich,2)¡ ?></td>

ctd><?php echo '$'. number_format($subtota1San,2)?></td>

c/tr>

c t r»

ctd></td>



ctd colspan=''3''><input name=''btnFinalizar'' type=''submit''

value=''Finalizar Venta'' /></td>

c/tr>

c?php

if ($_POST['btnFinalizar']){

?>

ctr>

ctd></td>

<td></td>

ctd>TOTAL A PAGAR</td>

ctd id=''codigo''>S

c?php echo number_format($total,2)¡ ?></td>

</tr>

c?php} ?> •

• e/table> •

• •
• </form> •

• •
c/section> •

• •
• •

cfooter> •

• •
• •

• c?php include{'pie.php')¡ ?> •


• •

c/footer> •


• </body> •

</html> •


...................................................................................... .. . . . . . .. . . . . . . ... ... . . .. . ....... . ........ ..................... ................ ... . .. .. ... . .. . . . .. . . . . . . . . . .•
CAP. 6: FUNCIONES ••

Archivo: encabezado.php

···································································································································································································
' '
<!DOCTYPE html> '

' '
' '

'
'
<html> '
'
'

'
'
<head> '
'

'

<meta charset=''UTF-8''> '

'

<title></title>

</head>

<body>

<img src=''bannerHelados.jpg'' width=''755'' height="200"/>

<h2 id=''centrado''>FUENTE DE SODA</h2>

</body>

</html>

., ............................................................................•...•...............•.......•.......•..........................................•...............•.......•.......•....

Archivo: pie.php

.•................................................................................................................................................................................................

' '

<!DOCTYPE html>

<html>
'

'
<head> '
'

' '
<meta charset=''UTF-8''> '

<title></title>

</head> •
'


<body> '

<h6 id="centrado">Todos los derechos reservado

@2015-Lic. Manuel Torres R.</h6>

'
<1mg src=''bannerPie.png'' width=''770'' height=''20''/> '
' '
' '
' '
' </body> '

</html>
' ..................................................................................................................................................................................................

Archivo: calculos.php

..................................................................................................................................................................................................

'

<?php
'
//Asignación de precios

$ensalada=10;

$jugo=13;

$helado=7;

$sandwich=25;


'

//Capturando el nombre del cliente •


'

$cliente= $_POST['txtCliente'];

//Capturando las cantidades solicitadas por el usuario


'
$cantidadEns - $_POST['txtEnsalada'];

$cantidadJug - $_POST['txtJugo'];

$cantidadHel - $_POST['txtHelado'];

$cantidadSan - $_POST['txtSandwich'];

//Calculando los subtotales

$subtota1Ens - $ensalada* $cantidadEns;

$subtota1Jug - $jugo* $cantidadJug;

$subtota1Hel - $helado* $cantidadHel;

$subtota1San - $sandwich* $cantidadSan;


'

'
'

//Calculando el total '

' '
' $total= $subtota1Ens+$subtota1Hel+$subtota1San+$subtotaljug;

'
'
' '
' . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '
••• • • DESARROLLO DE APLICACIONES WEB CON PHP

[ 6.6.2 1 Función require �

Tiene la misma funcionalidad que include con la diferencia de que no muestra mensaje de

advertencias cuando el archivo solicitado no se encuentra, sino más bien detiene la aplicación

mostrando un mensaje de « P H P error fatal .. ! ! » , ya q u e por concepto de la p a l a b r a require, podemos

d e d u c i r q u e un código es requerido por otro; por lo tanto, obligatorio, su formato es:

,········································································.

( r e q u i r e ( ' a r c h i v o . p h p ' ) ; (

• •

¡ r e q u i r e ( ' a r c h i v o . h t m l ' ) ; ;

........................................................................

Veamos el caso de i m p l e m e n t a c i ó n de la f u n c i ó n require:

D i s e ñ a r u n a a p l i c a c i ó n web en P H P q u e permita controlar el acceso de los u s u a r i o s al sistema, de

tal forma q u e se p u e d a s e l e c c i o n a r un ti p o de u s u a r i o (administrador, sistemas y operador) con sus

respectivas claves de acceso; mostrando así un mensaje de « U s u a r i o logueado correctamente . . . ! ! »

si el acceso es correcto.

La interfaz i n i c i a l se muestra a c o n ti n u a c i ó n :

CONTROL DE USUARIOS

Usuario Administrador •

Password

! INGRESAR 1

Prindpal I Salr

Tener en cuenta:

o Debe i m p l e m e n t a r un archivo l l a m a d o encabezado.php q u e permita mostrar la s i g u i e n t e i m a g e n :

CONTROL DE USUARIOS

o Debe i m p l e m e n t a r un archivo l l a m a d o pie.php q u e permita mostrar la siguiente i m a g e n :

Prindpal I Salr
1
CAP. 6: FUNCIONES ••

o Finalmente, la aplicación debe mostrar los siguientes resultados:

,/_

CONTROL DE USUARIOS

usuario logeado correctamente .. !!

Principal I Sair

Archivo: p r i n c i p a l. p h p

...................................................................................................................................................................................................
• •

¡ < ! DOCTYPE html> ;


• •

: <html> :
• •
• •

: <head> :

. <meta charset="UTF-8"> :
• •

: <title></title> :

<link href='"estilo.css'" rel='"stylesheet''> :

: </head> :

. <body> :

<header> ·

. <?php require( 'encabezado.php' ); ?> .

</header>

<section>

<?php

error_reporting(0);

require('captura.php');

$usuario= getUsuario();


$clave= getPassword();

?>

<form action='"principal.php'' method="'POST"'>

<table border="l" width="550"

cellspacing="'l'' cellpadding=''l''>

e tr»

<td>Usuario</td>

<td>

<select name=''selUsuarios''>

<option value=''Administrador''>Administrador</option>

<option value='"Sistemas''>Sistemas</option>

<option value='"Operador''>Operador</option>

</select>

</td>

</tr>

<tr>

<td>Password</td>

<td><input type="password" name="txtPassword"

maxlength=''S'' value='''' /></td>

</tr>

ct r»

<td colspan=''2'' id=''centrado''>

<input type="submit" value="INGRESAR"

name=''btnlngresar'' />

</td>

</tr>

c tr»

<td colspan=''2'' id=''centrado''>

<?php

if (isset($_POST['btningresar'J)){

..................................................................................................................................................................................................
••••• DESARROLLO DE APLICACIONES WEB CON PHP

···································································································································································································

• •

• require('validar.php'); •

• •

• •


if (valida($usuario, •

$clave)=='ok')
• •




header('location:bienvenida.php'); •


• •

else{



echo 'Error de datos . . ! ! ' ;

} •


?>

</td>

</tr>

</table>

</form>

</section>

<footer>

<?php require('pie.php'); ?>

</footer>

</body>

</html>
.................................................................................................................................................................................................

Archivo: encabezado.php

.•.................................................................................................•....................................................................•........................
. .

<!DOCTYPE html>

<html>

<head> •



<meta charset=''UTF-8''> •


<title></title>

</head>

<body>


<img src="banner_usuarios.jpg"/> •

• •


<h2 id="centrado">CONTROL DE USUARIOS</h2>

</body>

</html>

.................................................................................................................................................................................................

Archivo: pie.php

.................................................................................................................................................................................................
. .

<!DOCTYPE html>

<html>


<head> •
• •
• •
<meta charset=''UTF-8''>

<title></title>

</head>


<body>
• •
• •

<p id=''centrado''>

<a href=''principal.php''>Principal</a>

<a href=''javascript:close()''>Salir</a>

</p> •
• •


</body>

</html>

.................................................................................................................................................................................................

Archivo: captura.php

···································································································································································································
• •
• •
• •
<?php

function getusuari

return $_POST['
• •

function getPassword(){


return $_POST['txtPassword'J; •

. ?> .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .•
CAP. 6: FUNCIONES •••

Archivo: validar.php

·································································································································································································

<?php

function valida($usuario,$clave){

$acceso=' ' ;

if ($usuario=='Administrador' && $clave=='1234A') $acceso='ok';

if ($usuario=='Sistemas' && $clave=='1111A') $acceso='ok';

if ($usuario=='Operador' && $clave=='2222A') $acceso='ok';

return $acceso;

.................................................................................................................................................................................................

Archivo: bienvenida.php

.................................................................................................................................................................................................
. .

<!DOCTYPE html>

<html> •


<head> •

• •

• •

<meta charset=''UTF-8''> •


<title></title>

<link href=''estilo.css'' rel=''stylesheet''>

</head >

<body>

<header>

<?php require('encabezado.php'); ?>

</header>

<section>



<table border=''l'' width=''550'' •



• •
cellspacing=''l'' cellpadding=''l''> •

<tr>

<td id="centrado">Usuario logeado correctamente.! 1 < / t d >

</tr>

</table>

</section>

<footer>

<?php require('pie.php'); ?>

</footer>
• •




</body> •

• •


</html> •

• •

.................................................................................................................................................................................................

Archivo: estilo.css

.................................................................................................................................................................................................
. .
. .
. .
. .
.
.
body{ .
.
. .
. .
.
. font-family: tahoma; .
.
. .
. .
. .
.
. font-size: 14px; .
.
. .
. .
. .
.
.
} .
.
. .
. .
. .
.
.
#centrado{ .
.
. .
. .
. .
.
.
text-align: center; .
.
. .
. .
. .
. } .
. .
. .
. .
.
. table { .
.
. .
. .
. .
.
.
marg1n: auto; .
.
. .
. .
. .
.
.
} .
.
. .
. .
. .
.
.
img{ .
.
. .
. .
.
. marg1n: auto; .
.
. .
. .
. .
.
. display: block; .
.
. .
. .
. .
.
.
} .
.
. .
. .
. .
.
.
#centrado{ .
.
. .
. .
. .
. text-align: center; .
. .
. .
. .
.................................................................................................................................................................................................
••••• DESARROLLO DE APLICACIONES WEB CON PHP

. .
. .

td {

border: salid lpx #006699;


border-top: #006699;



border-right: #006699; •


• •
• •
• border-left: #006699; •

border-bottom: #006699;

.................................................................................................................................................................................................

m CASOS DESARROLLADOS )

Para todos los casos desarrollados usaremos un solo archivo de estilos, el c u a l d e t a l l a m o s a c o n ti n u a c i ó n :

Archivo: estilo.css

.................................................................................................................................................................................................
. .

body{

font-family: ta

font-size: 14px;

}

#centrado{

text-align: center; •


} •



table { •

· margin: auto; :


}

img{ •

: margin: auto; ·

' display: block; ;

: } :

. Hla{ :

; font-size: 13px; :

: background: #b9c9fe; :

¡ color: #039; ¡

; } ;

• •

¡ #error{ ¡

; color: red; l

• •

¡ font-size: 12px; :

¡ } ¡

¡ #codigo{ ;
• •

' color: blue; ¡

' font-size: 36px; ¡

¡ } :

• •
• •
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .•

o Caso desarrollado 1: Funciones de cadena - Registro de empleados

I m p l e m e n t e u n a a p l i c a c i ó n web con P H P q u e permita generar un código nuevo a un d e t e r m i n a d o

empleado catalogado como nuevo en la empresa, para lo cual deberá registrar sus apellidos,

nombres, fecha de nacimiento, estado c i v i l y tipo de sexo.


CAP. 6: FUNCIONES ••

La interfaz gráfica i n i c i a l es la siguiente:

Formulario de registro de empleados

RegtStre CODIGO
Apeldos Ingrese apellidos

apeldos . .!l GENERADO

RegLStre

Nombres Ingrese nombres


nombres •.!!

Fecha de Fecha no
dd/mm/yyyy
naci'niento �Ida

Estado civi Sohero •

Sexo O Masculno O Femenino

[ Autogenerar código j

Todos los de,echos reservados- üc. Mam,el Torres

Tener en cuenta:

0 La aplicación no deberá mostrar mensajes de error.

0 Se debe v a l i d a r los valores ingresados para los a p e l l i d o s , n o m b r e s y fecha de nacimiento, ya que

son necesarios para la generación de un código de e m p l e a d o .

0 Al presionar el botón Autogenerar código deberá generar el código del empleado usando el

siguiente criterio:

Año Estado civil Sexo Edad

actual

1: Soltero 1: Masculino Calculada a partir de

2: Casado 2: Femenino la fecha de nacimiento

3: Viudo

4: Divorciado

0 El estado civil del empleado debe registrarse en un control tipo SELECT con los siguientes

e l e m e n t o s : Soltero, Casado, Viudo y Divorciado.

0 El tipo de sexo del e m p l e a d o deberá seleccionarse desde un control tipo R A D I O .

0 Deberá i m p l e m e n t a r un botón de Autogenerar código, el c u a l permitirá mostrar el nuevo código

del e m p l e a d o de la siguiente m a n e r a : 141238.


••••• DESARROLLO DE APLICACIONES WEB CON PHP

0 F i n a l m e n t e los resultados deben mostrarse de la s i g u i e n t e forma:

Formulario de registro de empleados


CODIGO
Apeldos Tarres Lazara
GENERADO

Nombres Fernanda Ximena


141238
Fecha de
11/03/1976
nacimiento

Estado dvi Soltero

sexo O Masculno @ Femenino

[ Autogenerar código ]

Todos los derechos reserwidos- Lic. Manuel Torres

Archivo: codigo.php

.................................................................................................................................................................................................
. .

<!DOCTYPE html>

<html>

<head>

<meta charset=''UTF-8''>

<title>Registro de Empleados</title>

<link href=''estilo.css'' rel=''stylesheet''>

</head>

<body>

<header>

<h2 id=''centrado''>Formulario de registro de empleados</h2>

<img src="bannerEmpleados.jpg" width="750" height="214" />

</header>

<section>

<?php

error_reporting(0);

$apellidos=$_POST['txtApellidos'J;

$nombres=$_POST['txtNombres'];

$fecnac=$_POST['txtfecnac'J;

$estado=$_POST['se1Estado'];

$sexo=$_POST['rd5exo'];


$mNombres='';

· $mApellidos=' • ; '

· $mfecha= • ' ; :

. $permitidos= '/A[A-Z üÜáéíóúÁÉÍÓÚñÑ){l,100}$/i'; :

· if ( !preg_match($permitidos,$apellidos) ;

· 1 1 ! is_string($apellidos)) .

[ $mApellidos ='Registre apellidos . . ! ! • ; ¡

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .•
CAP. 6: FUNCIONES ••

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . . ' ' .
.

if (!preg_match($permitidos,$nombres)

1 1 !is_string($nombres)) •


• •

$mNombres ='Registre nombres . . ! ! ' ; •


if (!preg_match('/A\d{l,2}\/\d{l,2}\/\d{4}$/', $fecnac)) •

$mFecha='Fecha no valida';

if ($estado=='Soltero') $se1S='SELECTED'; else $se1S="";

if ($estado=='Casado') $selC='SELECTED'; else $selC="";

if ($estado=='Viudo') $selV='SELECTED'; else $selV="";

if ($estado=='Divorciado') $se1D='SELECTED'; else $se1D="";

switch($estado){

case 'Soltero':$cEstado=l;break; •

case 'Casado':$cEstado=2;break;

case 'Viudo':$cEstado=3;break;

case 'Divorciado':$cEstado=4;

if($sexo=='M') $cSexo=l;

if($sexo=='F') $cSexo=2;



$aFecha = explode('/', $fecnac); •

• •
• $año= $aFecha[2);
• •


• $edad=date('Y')-$año; •


<form name="frmRegistro" method="POST" action="codigo.php">

<table border=''0'' width=''750'' cellspacing=''0'' cellpadding=''0''>

ctr»

<td>Apellidos</td>

<td><input type=''text'' name=''txtApellidos'' size=''70''

placeholder=''Ingrese apellidos''

value="<?php echo $apellidos; ?>" /></td>

<td id="error"><?php echo $mApellidos; ?></td>

<td>CODIGO GENERADO</td>

</tr>

<tr>

<td>Nombres</td>

<td><input type=''text'' name=''txtNombres'' size=''70''

placeholder=''Ingrese nombres''

value=''<?php echo $nombres; ?>'' /></td>



c td id="error"><?php echo $mNombres; ?></td> •

• <td id="codigo">
• •

• •
<?php •



if(isset($_POST["btnGenerar")))

$codigo=substr(date('Y'), 2).$cEstado.

$cSexo.$edad;

else

$código=' ' ;

echo $código

?>

</td>

</tr>


ctr»

<td>Fecha de Nacimiento</td>

<td><input type=''text'' name=''txtFecnac'' size=''30''

placeholder=''dd/mm/yyyy''

value=''<?php echo $fecnac; ?>'' /></td>

<td id=''error''><?php echo $mFecha; ?></td>

<td></td>

• </tr>


ctr» •

• •

• •
• <td>Estado Civil</td> •

• <td>
• •

········································································································ · ,, , , .
••••• DESARROLLO DE APLICACIONES WEB CON PHP

. .
. .

<select name=''selEstado''>

<option value="Soltero" <?php echo $se1S; ?>>Soltero</option>

<option value="Casado" <?php echo $selC; ?>>Casado</option>

<option value="Viudo" <?php echo $selV; ?>>Viudo</option>

<option value="Divorciado" <?php echo $se1D; ?>>

Divorciado </option>

</select></td>

<td></td>

<td></td>

</tr>

<tr>

<td>Sexo</td>

<td><input type=''radio'' name=''rdSexo'' value=''M'' />

Masculino</td>

<td><input type=''radio'' name=''rdSexo'' value=''F'' />

Femenino</td>

<td><

</tr>

<tr>

<td></td>

<td><input type=''submit'' name=''btnGenerar''

value="Autogenerar codigo" /></td>


<td></td>

<td></td> ·

· </tr> ·
• •

¡ </table> :

. </form> .
• •

; </section> ;

; <footer> ,
• •
• •

: <h6 id="centrado">Todos los derechos reservados - :

· Lic. Manuel Torres</h6> ·

: </footer> .

. </body> ·

</html> ·
........ .. . . .. . . . .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... .. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. .... . . . . . . . . .•

Comentarios:

..................................................................................................................................................................................................
. .

error_reporting(0);

$apellidos=$_POST['txtApellidos'];

$nombres=$_POST['txtNombres'];
• •
• •
$fecnac=$_POST['txtFecnac']; •

$estado=$_POST['se1Estado'];

$sexo=$_POST['rd5exo'];

Apeldas Ingrese apelhdos �(--,[ txtApellidos



l •

• •

Nombres txtNombres ]
Ingrese nombres
< [

Fecha de
txtFecnac
nadmiento
dd/mm/yyyy
< [
l


Estado civl Soltero •�
<-------------,[ sel Estado •



l •




sexo t> Mascuino t> Femenino�(----,[ rdSexo ] •

[ Autogenerarcódigo [( [ btnGenerar ]

•. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . .......... . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . .......... . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . ... . . ..... .. .. . . . . . . . . . . . . . . . .

O m i ti m o s los errores de advertencia de P H P con la función error_reporting(O), luego capturamos

los valores ingresados y seleccionados por el usuario desde los controles del formulario.

Debemos tener en cuenta que para obtener los valores seleccionados desde el control radio

(para las opciones de sexo) se maneja de manera s i m i l a r a los d e m á s controles.


CAP. 6: FUNCIONES ••

..................................................................................................................................................................................................
. .

$mNombres=' ' ;

$mApellidos=' ' ;

• •
• •
$mFecha=' ' ;

$permitidos= '/A[A-Z üÜáéíóúÁÉÍÓÚñÑ]{l,100}$/i';

if (!preg_match($permitidos,$apellidos) 1 1 !is_string($apellidos))

• •


$mApellidos ='Registre apellidos . . ! ! ' ; •

if (!preg_match($permitidos,$nombres) 1 1 !is_string($nombres))

$mNombres ='Registre nombres . . ! ! ' ;



if (!preg_match('/A\d{l,2}\/\d{l,2}\/\d{4}$/', $fecnac)) •

$mFecha='Fecha no valida';

..................................................................................................................................................................................................

Iniciaremos la validación de los valores registrados por el usuario declarando variables para cada

elemento validado; luego solo para el caso de los nombres y apellidos se declara la variable

$permitidos, que contendrá los valores p e r m i ti d o s para el ingreso del nombre y apellido del

empleado, esto consta de caracteres en mayúsculas y minúsculas.

Para ambos casos, se preguntará si el valor ingresado es diferente al formato d e fi n i d o como

patrón en la variable $permitidos; entonces, se e m i ti r á un mensaje de error asignado a la variable

mApellidos y mNombres r e s p e c ti v a m e n t e ; inclusive hemos agregado la ñ y las ti l d e s para

apellidos y nombres que lo contengan; la función preg_match permite encontrar coincidencias

entre los caracteres; y la función is_string es para comprobar que se trata de una cadena de

texto.

Para la fecha de nacimiento se evalúa un formato directamente en la función preg_match, el cual

solo p e r m i ti r á el ingreso de valores con el formato dd/mm/aaaa .

.. . . . . . . .. ... .. . . . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ........... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .. ..... ... . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


.. .
.
.
. if ($estado=='Soltero') $selS='SELECTED'; else $sel5="";
.
.
.
.
• if ($estado=='Casado') $selC='SELECTED'; else $selC=''''; •
• •
. •
.
.
.
.
if ($estado=='Viudo') $selV='SELECTED'; else $selV='''';
.
.
.
. if ($estado=='Divorciado') $se1D='SELECTED'; else $se1D='''';
.
.
. . . .. . . . . ....... .... .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ...... . ... . . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . ..... . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

V e r i fi c a m o s qué ti p o de estado civil seleccionó el usuario y se asigna por defecto la opción

SELECTED, para que se mantenga dicho valor al momento de generar el código del empleado .

......................................................................................................................................... .
. .

switch($estado){

case 'Soltero' :$cEstado=l;break;

case 'Casado' :$cEstado=2;break;



• •
• •

case 'Viudo':$cEstado=3;break;

case 'Divorciado':$cEstado=4;

.................................................................................................................................................................................................•

Ahora evaluamos el estado civil del empleado para asignar un número por cada ti p o de estado,

y así componer el nuevo código del empleado, según la e s p e c i fi c a c i ó n del caso; 1 será asignado

al estado soltero, 2 al estado casado y así sucesivamente.


••••• DESARROLLO DE APLICACIONES WEB CON PHP

······················ ······················································································································· ... , ..•.•••••.•....•..•.......•......•.....•••••.•••.••


• •

; if($sexo=='M') $cSexo=l; :

i f ( $ s e x o = = ' F ' ) $cSexo=2;

$aFecha = e x p l o d e ( ' / ' , $fecnac);

$ a ñ o = $aFecha[2];

$edad=date('Y')-$año;
..................................................................................................................................................................................................

De la m i s m a manera q u e el estado civil, para el tipo de sexo t a m b i é n se le asignará un n ú m e r o :

1 para masculino y 2 para femenino; hay q u e tener en cuenta q u e la v a r i a b l e $cSexo formará

parte del nuevo código del e m p l e a d o .

Parte del código autogenerado solicita el año actual, por tanto, debemos obtener la fecha actual

en la variable $a Fecha, luego capturamos el a ñ o de d i c h a fecha en la v a r i a b l e $año y, fi n a l m e n t e ,

calculamos la edad con la fórmula date('Y')-$año. Las variables $año y $edad serán parte del

nuevo código d e l e m p l e a d o .

A n a l i z a r e m o s el código e m b e b i d o de HTMLS y P H P para el registro de los a p e l l i d o s del e m p l e a d o ;

no se olvide q u e t a m b i é n debe ser v a l i d a d o y q u e se debe mostrar el mensaje de error de color


rOJO:


• 1
aecetre CODIGO
Apeldas Ingrese apellidos
• 1 apelidos . .!! GENERAOO

... ...
................................................................................................... ............................................ ................... ................. .........
. " .

<tr>

.........................................................
.
.
• .
. .

. <td>Apellidos</td> :
. .
.
·
. ......................................................... .

.....................................................................................................................................................
. .
. .
. .
. .
. <td><input type="text" name="txtApellidos" size="70" .
• •
. .
. .
. .
. placeholder=''Ingrese apellidos" .
. .
. .
.



value="<?php echo $apellidos; ? >" /></td> .
.
•. .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .... ' ...............................................................................................

.•.......••.......................•.............. ...............•.......................•............... ......


.
. ·.
. • • .
.
, <td 1d - " error " > < .> p h p echo $mApell1dos,

>
. ></td>
.

..............................................................................................................

··························································
• •

\ <td>CODIGO GENERADO</td> ,---------------------�


•. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . •

</tr>

..................................................................................................................................................................................................

La propiedad placeholder permite imprimir un mensaje al usuario mediante el control text.

Si consideramos que esta fi l a consta de tres c o l u m n a s y q u e en la tercera deberá mostrarse

un mensaje de error de acuerdo a la validación realizada a los controles del f o r m u l a r i o ; para

este caso, i m p r i m i r e m o s la v a r i a b l e $mApellidos, q u e mostrará el mensaje de error c u a n d o el

u s u a r i o deje vacío el control o l l e n e con caracteres no permitidos.


CAP. 6: FUNCIONES ••

, · • · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·········• .

• •
• •


<tr> •

• •
• •
• •
• <td>Nombres</td> •

• •
• •
• •
• <td><input type=''text name="txtNombres" size="70" •

• •
• •

• placeholder=''Ingrese nombres'' •
• •

• •

• value=''<?php echo $nombres; ?>'' /></td> •



• •

• < id=''error''><?php echo $mNombres; ?></td> •

• •

• •

<td id="codigo">

• •
• •


<?php •

• •
• •


if(isset($_POST["btnGenerar"])) •

• •
• •

• $código=substr(date('Y'), 2).$cEstado.$cSexo.$edad; •




• else •


• •
• •
• $código=' ' ; •
• •

• •

• •



echo $codigo •

• •

. ? > :


</td> •



• •


</tr>

• •
.. ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . . . . . . .
. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ......... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . ..

En esta fi l a de la t a b l a se debe i m p r i m i r el código autogenerado del e m p l e a d o ; hemos v a l i d a d o

la selección del botón generar por parte del usuario, ya q u e al presionarlo deberá generar el

código y registrarlo en la v a r i a b l e $codigo. La f u n c i ó n substr permite obtener u n a parte del a ñ o

actual, pues la función date('Y') emite 2014, pero en el código solo necesitamos 14; por tanto,

substraemos los dos últimos dígitos. F i n a l m e n t e , concatenamos las v a r i a b l e s o b t e n i d a s en los

pasos anteriores en la variable $codigo y se i m p r i m i r á en d i c h a celda .

.· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · .

<tr>

<td>Fecha de Nacimiento</td>

<td><input type=''text'' name=''txtFecnac'' size=''30''

placeholder=''dd/mm/yyyy''

' value=''<?php echo $fecnac; ?>'' /></td> •

<td id=''error''><?php echo $mFecha; ?></td>

<td></td>

</tr>
..................................................................................................................................................................................................

En la tercera c o l u m n a i m p r i m i m o s el mensaje de error obtenido a partir de la v a l i d a c i ó n de la

fecha de n a c i m i e n t o d e l empleado, e l l o mediante la variable $mFecha. Recuerde q u e en todos

los mensajes se invoca a un estilo l l a m a d o error q u e permite mostrar de color rojo el m i s m o .

... . .. . . .. ......................................... .. . . . . .... ..... . . .. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... .. . .. . . . . . . . ... .. .. .................................... .. . . . .. . .. . .... .. .. .. ..


<tr>


<td>Estado Civil</td> ·
• •
• •
• •

<td> •


<select name=''selEstado''>

<option value="Soltero" <?php echo $sel5; ?>>Soltero</option>

<option value=''Casado'' <?php echo $selC; ?>>Casado</option>

<option value=''Viudo'' <?php echo $selV; ?>>Viudo</option>

<option value=''Divorciado'' <?php echo $se1D; ?>>Divorciado </option >

</select>

</td> •




<td></td> •

• •
• •
<td></td> •

</tr>
. .
. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. .

La i m p r e s i ó n r e a l i z a d a en cada opción permite mantener el estado seleccionado en el control

a u n después de haber generado el nuevo código del e m p l e a d o ; estas variables fueron asignadas

con el valor SELECTED en pasos anteriores.


••••• DESARROLLO DE APLICACIONES WEB CON PHP

o Caso desarrollado 2: Funciones numéricas - Promedio de notas

Implemente una aplicación web con PHP que permita calcular el promedio de notas de un

determinado alumno, el cual ingresará su nombre completo y sus cuatro notas, al fi n a l se deberá

mostrar el nombre del alumno, promedio, nota más alta, nota más baja y la condición del alumno.

La interfaz gráfica propuesta es la siguiente:

Promedio de notas

ALUMNO Registre normres .. l!

NOTAS

Nota 1 Error en Nota 1 Nota 2 Error en Not.l 2

Nota 3 Error en Nota 3 Nota 4 Error en Nota 4

1 Promediar j

Alumno

Promedio O

Nota más alta

Nota más baja

Condioon Desaprobado

Todos los derechos ,-eservados- Lic. Manuel Torres

Debemos considerar los siguientes aspectos:

0 Al iniciar el formulario no debe mostrar los datos resultantes, estos se mostrarán solo cuando el

usuario presione el botón Promediar.

0 El cálculo del promedio, resulta de la tres mejores notas del alumno.

0 Use funciones numéricas para determinar la nota más alta y más baja.

0 Debemos validar cada control y mostrar un mensaje de error según lo solicitado por el formulario.

A c o n ti n u a c i ó n , se muestra la ejecución y el ingreso de valores al formulario:


CAP. 6: FUNCIONES •••

Promedio de notas

. ,
'
1

i

' 1

.,.

'
- 1 ,
'
,

1
1
1 I
,
-

ALUMNO Angel a Victoria Tarres Lazara

NOTAS

Nota 1 20 Nota 2 17

Nota 3 14 Nota 4 18

Promediar
1 1

Alumno Angela Victoria Torres Lazara

Promedio 18

Nota más alta 20

Nota más baja 14

CondiciÓn Aprobado

Todos los derechos reserv� - Lic. Miinuel Tor,-es

Archivo: promedio.php

..................................................................................................................................................................................................
. .

<!DDCTYPE html>

<html>

<head>

<meta charset=''UTF-8''>

<title></title>

<link href=''estilo.css'' rel=''stylesheet''>

: </head> :
• •

i cbody» i

. <header> ¡

<h2 id=''centrado''>Promedio de notas</h2> ·

<img src=''bannerEstudiantes.jpg'' width=''660'' height=''200''/>

<br>

</header>

<section>

<?php

error_reporting(0);

$alumno=$_POST[ºtxtAlumnoº];

$nota1=$_POST['txtNota1'];

$nota2=$_POST['txtNota2'];

$nota3=$_POST['txtNota3'];

$nota4=$_POST['txtNota4']; ·


; $mAlumno= ' ' ; ¡

¡ $permitidos= '/A[A·Z üÜáéíóúÁÉÍÓÚñÑ]{l,100}$/iº; !


if (!preg_match($permitidos,$alumno) :

1 1 ! is_string($alumno))

$mAlumno='Registre nombres . . ! ! ' ;

$mNota1=' ' ;

$mNota2=' ' ;
. .
.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
••••• DESARROLLO DE APLICACIONES WEB CON PHP

. .
. .



$mNota3=' ' ;


$mNota4= ' ' ;

if(empty($notal} 1 1 ! is_numeric($notal})

$mNotal='Error en Nota 1';

elseif{$nota1<0 1 1 $nota1>20}

$mNotal='Error en Nota 1';

if(empty($nota2} 1 1 ! is_numeric($nota2})


$mNota2='Error en Nota 2'; •


elseif{$nota1<0 1 1 $nota2>20} •
• •

• •
• $mNota2='Error en Nota 2'; •



if(empty($nota3} 1 1 ! is_numeric($nota3})

$mNota3='Error en Nota 3'; •

elseif($nota3<0 1 1 $nota3>20}

$mNota3='Error en Nota 3';

if(empty($nota4} 1 1 !is_numeric($nota4}}

$mNota4='Error en Nota 4';

elseif($nota4<0 1 1 $nota4>20}

$mNota4='Error en Nota 4';

?>

.
<form name="frmPromedio" method="post" action="promedio.php">

<table w i d t h = " 6 5 0 " border="l" cellspacing="3" cellpadding="3">

<tr>

<td width="80">ALUMNO</td>

<td width=''457'' id=''error''>

<input type=''text'' name=''txtAlumno'' size=''60''


value=''<?php echo $alumno; ?>''/>

<?php echo $mAlumno; ?> •

• •
• </td> •

• •
• •


</tr> •


• •
<tr> •

<td>NOTAS</td>

<td></td>

</tr>

<tr>

<td colspan=''2''>

<table width=''650'' border=''l''

cellspacing=''2'' cellpadding=''2''>

<tr>

<td width="179">Nota 1</td>

<td width="179">
.
<input type=''text'' name=''txtNotal'' size=''S''

value=''<?php echo $natal; ?>'' />

</td>

<td width="179" id="error"><?php echo $mNotal; ?></td>

<td width="179">Nota 2</td>

<td width="179">

<input type=''text'' name=''txtNota2'' size=''S''


value="<?php echo $nota2; ?>" />


• •



• </td> •
• •


<td width="179" id="error"><?php echo $mNota2; ?></td> •
• •

</tr> •

c tr» •

<td>Nota 3</td> •

<td><input type=''text'' name=''txtNota3'' size=''S''

value=''<?php echo $nota3; ?>'' />

</td>

c td id="error"><?php echo $mNota3; ?></td>



• <td>Nota 4</td>


<td><input type=''text'' name=''txtNota4'' size=''S''


value=''<?php echo $nota4; ?>'' />

</td>
..................................................................................................................................................................................................
CAP. 6: FUNCIONES ••

......................................................................... .
.



ctd id=''error''><?php echo $mNota4; ?></td>

c/tr>

</table>

</td>

c/tr>

ctr>

ctd></td>

ctd><input type=''submit'' value=''Promediar'' /></td>



• •
</tr> •


• •

• c?php

• •

• $notas=array($notal,$nota2,$nota3,$nota4); •

• $mayor=max($notas);

$menor=min($notas);

$promedio=round(($notal+$nota2+$nota3+$nota4-$menor)/3,0);

if ($promedio>=l3)

• $condicion='Aprobado';

• else


$condicion='Desaprobado';


?>

ctr>

ctd>Alumnoc/td>

ctd>c?php echo $alumno; ?>c/td>

</tr>


ctr>
• •
• •
• ctd>Promedioc/td>
• •
• •
• •
• ctd><?php echo $promedio; ?></td> •
• •
• •


c/tr> •



ctr>

ctd>Nota más altac/td>

ctd><?php echo $mayor; ?></td>

</tr>

ctr>

ctd>Nota más bajac/td>



ctd>c?php echo $menor; ?></td>

c/tr>


ctr>

ctd>Condicionc/td>

ctd><?php echo $condicion; ?></td>

</tr>

</table>

</form>

</section>

• cfooter>
• •


<h6 id="centrado">Todos los derechos reservados - •





Lic. Manuel Torresc/h6> •

• •


• </footer> •

c/body>

</html>
•. . .. .... .. . . . . . .. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ..... .. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. ..... .. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. .

Comentarios:

,-•················································································································································································· .


error_reporting(0);

$alumno=$_POST['txtAlumno'];



• $nota1=$_POST['txtNotal'];

$nota2=$_POST[ 'txtN o t a 2'];

$n o t a 3=$_P O ST['txtN o t a 3'];




$n o t a 4=$_P O ST['txtN o t a 4'];

..................................................................................................................................................................................................

O m i ti m o s los errores de advertencia del PHP, luego capturamos todos los valores registrados por

el a l u m n o .
••••• DESARROLLO DE APLICACIONES WEB CON PHP

. .
. .


• $mAlumno=' ' ;

$permitidos= '/A[A-Z üÜáéíóúÁÉÍÓÚñÑ]{l,100}$/i';

if (!preg_match($permitidos,$alumno) 1 1 !is_string($alumno)) •

$mAlumno='Registre nombres . . ! ! ' ;


• •
• •


··············································································································································· ···················································

Validaremos el ingreso del nombre del a l u m n o creando la v a r i a b l e $permitidos, q u e permitirá

a l m a c e n a r los caracteres permitidos en d o n d e se i n c l u y a las « ñ » y las ti l d e s . Luego se c o n d i c i o n a

verificando el contenido ingresado con el valor asignado a la variable $permitidos. Recuerde q u e

la función preg_match permite c o m p a r a r cadenas, y la f u n c i ó n is_string evalúa si el contenido

de la variable es cadena de caracteres .

..................................................................................................................................................................................................
. .


• $mNotal=' ' ;

$mNota2=' ' ;

$mNota3=' ' ;

$mNota4=' ' ;

if(empty($notal) 1 1 !is_numeric($notal))
• •

• •
• $mNotal='Error en Nota 1'; •

• •
elseif($nota1<0 1 1 $nota1>20)

$mNotal='Error en Nota 1';

if(empty($nota2) 1 1 !is_numeric($nota2))

$mNota2='Error en Nota 2';

• elseif($nota1<0 1 1 $nota2>20)


• $mNota2='Error en Nota 2';

if(empty($nota3) 1 1 !is_numeric($nota3))

$mNota3='Error en Nota 3';

elseif($nota3<0 1 1 $nota3>20) •
• •




$mNota3='Error en Nota 3'; •

• •

• •


if(empty($nota4) 1 1 !is_numeric($nota4))

$mNota4='Error en Nota 4';

elseif($nota4<0 1 1 $nota4>20)

$mNota4='Error en Nota 4';


..................................................................................................................................................................................................

En caso de v a l i d a r las notas se debe considerar ( m e d i a n t e la función empty) q u e no se encuentre

vacía la v a r i a b l e ; verificar ( m e d i a n t e la función is_numeric) que el valor sea numérico y que

d i c h a nota se encuentre entre O y 20 .

. . . . . . . . . . . . . . . . . . . . . . . . . ... . .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.

ctr»

<td width="80">ALUMNO</td>

<td width="457" id="error">


<input type="text" name="txtAlumno" size="60" •

value=" < ?php echo $alumno; ? > " / >< ?php echo $mAlumno; ?>

</td> •

</tr>
..................................................................................................................................................................................................

En esta fi l a mantenemos el valor ingresado en el nombre del a l u m n o i m p r i m i e n d o su nombre en

el control txtAlumno; además, se debe mostrar ( m e d i a n t e la v a r i a b l e $mAlumno) un mensaje

de error evaluado en códigos anteriores.


CAP. 6: FUNCIONES ••

................................................................................. .
. .

<tr>

<td width=''179''>Nota l</td>

• <td width="179"> •

• •
• •
• •
<input type=''text'' name=''txtNotal'' size=''5''

value=''<?php echo $notal; ?>'' />

</td>

<td width=''179'' id=''error''><?php echo $mNotal; 1></td>

<td width=''179''>Nota 2</td>



<td width="179"> •

• •

<input type=''text'' name=''txtNota2'' size=''S''

value=''<?php echo $nota2; ?>'' />

</td>

<td width=''179'' id=''error''><?php echo $mNota2; 1></td>

</tr>
. . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . .. . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

En esta fila i m p r i m i m o s los valores obtenidos en la notal y nota2, h a c i e n d o que se mantengan

las notas i m p r i m i é n d o l a s dentro del mismo control text, a d e m á s de i m p r i m i r el mensaje de

error obtenido en códigos anteriores mediante la variable $mNotal y $mNota2. Tenga en

cuenta que su archivo estilo.css i m p l e m e n t e el estilo #error, el c u a l contiene la d e fi n i c i ó n de

texto en color rojo .

............. . .... ... . .. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . ..... ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .


. .


<tr>

<td>Nota 3</td>
• •

<td><input type=''text'' name=''txtNota3'' size=''5''

value=''<?php echo $nota3; ?>'' />



</td>


<td id=''error''><?php echo $mNota3; 1></td> •

<td>Nota 4</td>

'

<td><input type=''text'' name=''txtNota4'' size=''S''

value=''<?php echo $nota4; ?>'' />


• •


</td> •


• <td id=''error''><?php echo $mNota4; 1></td>

</tr>

..................................................................................................................................................................................................

En esta fila i m p r i m i m o s los valores obtenidos en la nota3 y nota4 h a c i e n d o que se mantengan

las notas, i m p r i m i é n d o l a s dentro del mismo control text, a d e m á s de i m p r i m i r el mensaje de

error obtenido en códigos anteriores mediante la variable $mNota3 y $mNota4. Tenga en

cuenta que su archivo estilo.css i m p l e m e n t e el estilo #error, el c u a l contiene la d e fi n i c i ó n de

texto en color rojo .

.................. .
. .

$notas=array($notal,$nota2,$nota3,$nota4);

$mayor=max($notas);

$menor=min($notas);


• $promedio=round(($nota1+$nota2+$nota3+$nota4-$menor)/3,0)¡ •

if ($promedio>=13)



$condicion='Aprobado'; •

else

$condicion='Desaprobado';

.................................................................................................................................................................................................•
••••• DESARROLLO DE APLICACIONES WEB CON PHP

Para poder d e t e r m i n a r la mayor y menor nota hemos implementado una variable llamada

$notas, la c u a l a l m a c e n a las notal, nota2, nota3 y nota4 , como un solo arreglo; a partir de

a q u í podemos usar la función max para d e t e r m i n a r c u á l de las notas es la mayor, y lo mismo

para la menor nota.

Si las variables contienen los siguientes datos: nota1=20, nota2=17, nota3=14 y nota4=18, con

esta a s i g n a c i ó n logramos que $notas se convierta en un arreglo u n i d i m e n s i o n a l , de tal forma

que los valores se a l m a c e n e n de la siguiente manera:

ARREGLO VALOR

$notas[O] 20

$notas[1] 17

$notas[2] 14

$notas[3] 18

El promedio es c a l c u l a d o a partir de las notas capturadas en pasos anteriores, e l i m i n a n d o la

menor nota obtenida a partir de la función min; t a m b i é n debemos tener en cuenta que se debe

redondear dicho promedio u s a n d o la función round.

Finalmente evaluamos el promedio obtenido y le asignamos el valor «Aprobado» y

«Desaprobado» a la v a r i a b l e $condicion, para luego i m p r i m i r l o en sus celdas correspondientes.

o Caso desarrollado 3: Funciones implementadas por el usuario - Venta de productos

I m p l e m e n t e una a p l i c a c i ó n web con P H P que permita d e t e r m i n a r el descuento y neto a pagar por la

venta de una determinada pieza de computadora, u s a n d o funciones i m p l e m e n t a d a s por el u s u a r i o .

La interfaz gráfica i n i c i a l es la s i g u i e n t e :

VENTA DE PRODUCTOS

Piezas de computadoras

N.º Venta: 00001

Fecha: 05-07-14

Hora: 04:26 AM

roducto Teclado multimedia •

ntidad Precio:
$0.00
J PROCESAR j
CAP. 6: FUNCIONES ••

Tener en cuenta:

0 Al i n i c i a r el f o r m u l a r i o no debe mostrar los datos resultantes, estos se mostrarán solo c u a n d o el

u s u a r i o presione el botón Procesar.

0 Al seleccionar un producto de la lista deberá mostrar su precio de forma automática.

0 I m p l e m e n t e funciones para captura de valores.

0 I m p l e m e n t e funciones para la impresión del número de venta, fecha de venta y hora de la venta.

0 I m p l e m e n t e funciones que permitan c a l c u l a r el subtotal, descuento y neto a pagar.

0 Los valores seleccionados para la venta deben mantenerse a u n después de presionar el botón

Procesar.

0 Debemos v a l i d a r el ingreso de la cantidad de productos comprados; en caso se ingrese un valor

incorrecto, mostrar un mensaje tal como se muestra en la siguiente imagen.

0 El monto de descuento se basa en el siguiente criterio:

SUBTOTAL % DE DESCUENTO

< 300 8 %

> 300 y < 500 10 %

<500 20 %

Ingrese una cantidad correcta .. !!

OK

0 F i n a l m e n t e , si todos los datos son correctos, el botón Procesar debe generar la siguiente v e n t a n a :
••••• DESARROLLO DE APLICACIONES WEB CON PHP

VENTA DE PRODUCTOS

Piezas de computadoras

N.º Venta: 00001

Fecha: 05-07-14

Hora: 03:04 PM

Producto Teclado multimedia •

ntidad 5 Precio:
$20.00
[ PROCESAR ]

NÚMERO: 00001

FECHA: 05-07-14 HORA: 03:04 PM

PRODUCTO Teclado

TIDAD: 5 PREOO: $20.00

UBTOTAL $100.00

DESCUENTO $8.00 NETO APAGAR


$92.00

Todos los derechos reservados- Lic. Manuel Torres

Archivo: venta.php

················································································································································ .
• •

' < ! DOCTYPE html > '



<html>

<h

<meta charset=''UTF-8''>

<link href=''estilo.css'' rel=''st

<title>Venta de Productos</titl

</he

<bod

<header>

<h2 id="centrado">VENTA DE PRODUCT05</h2> •

; <h3 id="centrado">Piezas de Computadoras</h3> ;


• •

<img src="bannerVenta.jpg" width="700" height="212"/> ·

</header>

<secti

<form name="frmVenta" method="POST">

<!--Tabla de Ingreso-->

<table width=''700'' border=''l'' cellspacing=''0'' cellpadding


.

<tr

< width="200"></td>

< width=''200''></td>

<td width=''150''>Nº Venta:</td> •


• •
<td width="50"><?php echo generaCodigo(); ?></td> •

• •

• •
</tr>

<tr>

<td></td>

<td></td>
,,,.,,,,,,,,,,,,., ,.,,,,,,,,,,,,.,,, ,.,,,,,,,,,,,,,,, , .. ,,,,,,,.
CAP. 6: FUNCIONES ••

.
·································································································································································································· .

<td>Fecha:</td>

ctd><?php echo muestraFecha(); ?></td>

</tr>

<tr>

ctd></td>

<td></td>

• ctd>Hora: c/td>

• <td><?php echo muestraHora(); ?></td>

</tr>




ctr>
• •




<tr>
• •

• •


<td>Producto</td> •
• •


<?php •


• •
error_reporting(0);


list($teclado,$mouse,$impresora,$disco,$lectora)=


• productoxDefecto(getProducto());

?>

<td colspan=''3''>

cselect name=''selProducto''

onchange=''this.form.submit()''>

<option value="Teclado"<?php echo $teclado; ?>>

Teclado multimediac/option>

<option value=''Mouse''<?php echo $mouse; ?>>




Mouse opticoc/option>

coption value="Impresora"<?php echo $impresora; ?>>


Impresora color</option>



coption value="Disco Duro"<?php echo $disco; ?>>

• Disco Duro</option>


coption value="Lectora DVD"c?php echo $lectora; ?>>

Lectora DVD</option>

</select>

c/td>

<td></td>

<td></td>

</tr>

ctr»

ctd>Cantidadc/td>

<td><input type=''text'' name=''txtCantidad'' size=''10''

• value=''<?php echo getCantidad(); ?>'' /></td>


<td>Precio:c/td>


<td id="código">c?php echo '$'.number_format(



• •


asignaPrecio(getProducto()),2); ?>


• •
• </td> •

• •

• </tr>

• •
• •
ctr> •
• •


<td></td> •

• ctd></td> •


ctd><input type="submit" value="PROCESAR" /></td>

ctd></td>

</tr>

</table>

<?php if(!empty($_PDST['txtCantidad'])) { ?>

<!--Tabla de Impresión de Resultados-->


<table border=''l'' width=''700"' cellspacing=''0'' cellpadding=''0''>

• ctr»

ctd width=''200''>NUMERO:c/td>

<td width="200">c?php echo generaCodigo(); ?> </td>


ctd width=''200''></td>
'

• ctd width=''200''></td>

'
• </tr>

ctr>
.................................................................................................................................................................................................•
••••• DESARROLLO DE APLICACIONES WEB CON PHP

. .

<td>FECHA:</td>

<td><?php echo muestraFecha(); ?></td>

<td>HORA:</td>


<td><?php echo muestraHora(); ?></td>
'

• </tr>
'


'
<tr>

' <td>PRODUCTO</td>

<td colspan=''3''><?php echo getProducto(); ?></td>

<td></td>

<td></td>

'
</tr>

<tr>

'
<td>CANTIDAD:</td>

'

<td><?php echo getCantidad(); ?></td>

<td>PRECIO:</td>

<td><?php echo ' $ ' .number_format(

asignaPrecio(getProducto()),2); ?>

</td>

'


</tr>
'

<tr>

'
<td></td>

<td></td>

'
</tr>


</table>
'

• <table border=''l'' width=''700'' cellspacing=''0'' cellpadding=''0''>


'

<tr>

<td width="200">SUBTOTAL</td>


<td width=''200''>
'

<?php

$subtotal=calculaSubtotal(asignaPrecio(getProducto()),

' getcantidad());

'
echo '$'.number_format($subtotal,'2', ' , ' , ' ' ) ; ?>

</td>

<td width=''200''></td>

<td width=''200''></td>

</tr>

<tr>

<td>DESCUENTO</td>

<td><?php

$descuento= calculaDescuento($subtotal);

echo '$'.number_format($descuento,'2','. ' , ' ' ) ; ?>

</td>

<td>NETO A PAGAR</td>

<td id=''código''><?php

$neto= calculaNeto($subtotal,$descuento);

echo '$'.number_format($neto,'2','. ' , ' ' ) ; ?>

</td>

</tr>

</table>

<?php}

else

echo "<script languaje='javascript'>

alert('Ingrese una cantidad correcta . . ! ! ' )

</script>";

?>

</form>

</section>

<footer></footer>

</body>

</html>

..................................................................................................................................................................................................
CAP. 6: FUNCIONES •••

..................................................................................................................................................................................................
. .

<?php

function getProducto(){

return $_POST['se1Producto'];

function getCantidad(){

return $_POST['txtCantidad'];

function generaCodigo(){

$n = 1;

return str_pad($n,S,'0',STR_PAD_LEFT); •


• •
• •
}

• •
• •


function muestraFecha(){ •
• •
• •

return date('d-m-y'); •

function muestraHora(){

return date('h:i A');

function asignaPrecio($producto){

switch ($producto){

case 'Teclado': return 20; break;

case 'Mouse': return 30; break;

case 'Impresora': return 120; break;

case 'Disco Duro': return 270; break;

case 'Lectora DVD': return 20; break;

default: return 0;

function productoxDefecto($producto){

if ($producto=='Teclado') $selT='SELECTED'; else $selT=""; •


if ($producto=='Mouse') $selM='SELECTED'; else $selM="";
• •

• •


if ($producto=='Impresora') $sell='SELECTED'; else $sel!=""; •


• •



if ($producto=='Disco Duro') $selD='SELECTED'; else $selD=""; •



• •
if ($producto=='Lectora DVD') $selL='SELECTED'; else $selL=""; •



• •
return array($selT,$selM,$selI,$selD,$selL);

}

function calculaSubtotal($precio,$cantidad){

return $precio*$cantidad;

function calculaDescuento($subtotal){

if ($subtotal<=300)

return $subtotal*0.08;

elseif ($subtotal<=500)

return $subtotal*0.1;

else

return $subtotal*0.2;

function calculaNeto($subtotal,$descuento){

return $subtotal-$descuento;

• •
• •
• •

•• . . . . . . . . • . . . . . . . • . . . . . . . • . . . . . . . . . . • . . • . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . • . . • • . . . . . • . . . . . . . • . . . .... .... .....•... .............................•..........................•.............• •

Comentarios:

..................................................................................................................................................................................................

<td><?php echo generaCodigo(); ?></td>

<td><?php echo muestraFecha(); ?></td>

<td><?php echo muestraHora(); ?></td>


..................................................................................................................................................................................................
••••• DESARROLLO DE APLICACIONES WEB CON PHP

Imprimiremos los valores obtenidos desde las funciones generaCodigo (función que genera

el código autonumérico del registro), muestraFecha (función que muestra la fecha actual) y

muestraHora (función que muestra la hora actual) .

.. . . . . .. . ... . . .. . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.

error_reporting(0);

list($teclado,$mouse,$impresora,$disco,$lectora)=productoxDefecto(getProducto());


··································································································································································································

O m i ti m o s los errores de advertencia de PHP con la función error_reporting. Hemos

implementado una función llamada productoxDefecto, que permite devolver una matriz de

mensajes de acuerdo al producto seleccionado, que luego serán asignados a las variables

$teclado, $mouse, $impresora, $disco y $lectora. La función list que recibe dicha matriz tendrá

la misión de asignar a cada variable el valor devuelto desde la función en estricto orden de

llegada. Considere que para determinar los mensajes, debemos enviar como parámetro el

nombre del producto obtenido desde la función getProducto.

·································································································································································································•,


<tr> •

• •

<td>Cantidad</td>

<td><input type=''text'' nam e = ''t xt C ant idad '' size=''10''



value=''<?php echo getCantidad(); ?>" /></td>

<td>Precio:</td>
• •
<td id="código"><?php echo ' $ ' .number_format(asignaPrecio(getProducto()),2)¡ ?> •

</td>

</tr>
..................................................................................................................................................................................................

El script permite imprimir la c a n ti d a d ingresada por el usuario en el mismo control, haciendo

que no se pierda el valor registrado. En el caso del precio del producto, se mostrará cuando el

usuario seleccione un producto desde el cuadro combinado; por tal motivo, debe implementar

el siguiente código en el control selProducto: <select name="selProducto" onchange="this.

form.submit()"> .

..................................................................................................................................................................................................
. .

<?php if(!empty($_POST['txtCantidad'])) { ?>



• •
<!--Tabla de Impresion de Resultados-->

<table border=''l'' width=''700'' cellspacing=''0'' cellpadding=''0''>


················································································ .....•.......................•.....................•.......•..••...•..........................................•...

V e r i fi c a m o s si el usuario ingresó una c a n ti d a d adecuada en el control txtCantidad, si es correcto

se mostrará la tabla de impresión de resultados; hay que tener en cuenta que la llave se debe

cerrar al fi n a l i z a r la tabla .

................................................................................................................................................. .
. .

<tr>

<td width=''200''>SUBTOTAL</td>

<td width=''200''>
• •

• •
<?php

$subtotal=calculaSubtotal(asignaPrecio(getProducto()), getCantidad());

echo ' $ ' .number_format($subtotal, ' 2 ' , ' . ' , ' ' ) ;

?>

</td>

<td width=''200''></td>

<td width=''200''></td>




</tr> •

• •

• •

··································································································································································································
CAP. 6: FUNCIONES ••

Calculamos el subtotal a pagar por la compra del producto y lo imprimimos en la celda

correspondiente, recuerde que la función number_format está preparada para redondear a

dos d e c i m a l e s el valor numérico.

···································································································································································································.

c t r»

<td>DESCUENTO</td>

<td><?php

' $descuento= calculaDescuento($subtotal);

echo ' $ · . number _format($descuento, ' 2 ' , ' . ' , · ' ) ; ?>

</td>

: <td>NETO A PAGAR</td> :

<td id=''codigo''><?php

$neto= calculaNeto($subtotal,$descuento);

. echo ' $ · . number _format($neto, ' 2 ' , ' . ' , · ' ) ; ?>



</td> •

</tr>
..................................................................................................................................................................................................

De la misma forma, calculamos el descuento, el neto y lo imprimimos en sus celdas

correspondientes .

.· · · · · · · · · · • . . . . • . . • • • . • • . . • . . . . • . • • • . . • . . . . • . . . • • . • • . . . • . . . • • . . . • . • . . . . . • . . . . . . . . • • • . • • . . • • . . . . • . • . . . • • . . • . • . . . • • • . . . • • . . • • • . . • • . • . . . . . . · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · .
. .

: } :

:. else :
.
. .

¡ echo ''<script languaje='javascript'> :


. .

¡ alert ( ' I n g r e s e una cantidad correcta . . ! ! ' ) ¡

! </script>"; !
. .
. . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .

Cuando la cantidad ingresada no es correcta, se debe e m i ti r un mensaje emergente desde

el navegador, para lo c u a l usamos la función alert de JavaScript. Para invocar a esta función

debemos usar la etiqueta <script language='javascript'> .

.
•......... .. . ·····················································································································································································.

function getProducto(){

return $_POST['se1Producto'];

function getCantidad(){

return $_POST['txtCantidad'];

function generaCodigo(){

$n = 1;

return str_pad($n,5, '0',STR_PAD_LEFT);

• function muestraFecha(){




return date('d-m-y');

• •
• •
• } •

• •


function muestraHora(){ •



• return date('h:i A, ) ; •

} •

function asignaPrecio($producto){

switch ($producto){

case 'Teclado': return 20; break;

case 'Mouse': return 30; break;

case 'Impresora': return 120; break;

case 'Disco Duro': return 270; break;



• case 'Lectora DVD': return 20; break;


default: return 0;

. . .. . .. . .. . . .. .. . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. . . . . . .. . .. . . .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .
••••• DESARROLLO DE APLICACIONES WEB CON PHP

La f u n c i ó n getProducto es la encargada de capturar el producto s e l e c c i o n a d o por el usuario

en la compra de productos. La función getCantidad es la encargada de obtener la c a n ti d a d de

productos comprados por el u s u a r i o .

La función generaCodigo permite autogenerar n u m é r i c a m e n t e el n ú m e r o de venta a partir de

un n ú m e r o entero, para lo cual usamos la f u n c i ó n str_pad para repetir los ceros a la i z q u i e r d a

y así obtener el siguiente formato 000001. El n ú m e r o 5 representa la cantidad de repeticiones

q u e tendrá el n ú m e r o cero, al fi n a l de la función se define STR_PAD _LEFT para q u e los ceros se

i m p r i m a n al lado i z q u i e r d o de la v a r i a b l e $n.

La función muestraFecha permite retornar la fecha actual capturada desde el sistema, lo m i s m o

ocurre con la f u n c i ó n muestraHora, será obtenida desde el sistema.

La f u n c i ó n asignaPrecio permite asignar un precio al producto seleccionado por el usuario, este

deberá ser evaluado a partir de un parámetro.

································································································································································································•·,

function productoxDefecto($producto){

if ($producto=='Teclado') $selT='SELECTED'; else $selT='''';

if ($producto=='Mouse') $selM='SELECTED'; else $selM="";

if ($producto=='Impresora') $selI='SELECTED'; else $selI='''';



'
if ($producto=='Disco Duro') $selD='SELECTED'; else $selD="";

if ($producto=='Lectora DVD') $selL='SELECTED'; else $selL="";

return array($selT,$selM,$selI,$selD,$selL);

..................................................................................................................................................................................................

La función productoxDefecto tiene la m i s i ó n de devolver un arreglo de mensajes, a s i g n á n d o l e

solo a uno de ellos el atributo SELECTED; estos serán impresos en cada opción del cuadro

combinado selProducto; todo esto para poder mantener el producto seleccionado por el

u s u a r i o en su m i s m o control.

······················· .

'
' '

' function calcula5ubtotal($precio,$cantidad){ '


'
'
'

return $precio*$cantidad;

function calculaDescuento($subtotal){

if ($subtotal<=300)

return $subtotal*0.08;

elseif ($subtotal<=500)
'
' return $subtotal*0.1; '

'

else

return $subtotal*0.2¡

function calculaNeto($subtotal,$descuento){

return $subtotal-$descuento;

}
'

' . . . . . . . . . . . . . . . .. .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. .. . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '

La función calculaSubtotal permite determinar el costo subtotal en base a la c a n ti d a d y precio

d e l producto. La función calculaDescuento determina el monto de descuento en base al monto

subtotal, pues según el criterio el subtotal es inferior a 300, o entre 301 y 500, o superior a 500

se debe a s i g n a r un porcentaje de descuento.

F i n a l m e n t e , la función calculaNeto permite c a l c u l a r el monto neto a pagar por la compra de un

producto.
CAP. 6: FUNCIONES ••

o Caso desarrollado 4: Funciones anónimas - Pensión de estudiantes

Implemente una aplicación web con PHP que permita determinar la pensión mensual que paga un

determinado estudiante, este se o b ti e n e de la siguiente manera, con la evaluación de su promedio

ponderado:

PROMEDIO CATEGORÍA

Superior a 1 7 A

Entre 14 y 17 B

Entre 12 y 14 e

Inferior a 1 2 D

Para obtener el monto de la pensión mensual se deberá evaluar la categoría obtenida desde el

promedio ponderado, según la siguiente tabla:

CATEGORÍA MONTO MENSUAL

A $ 550.00

B $ 650.00

e $ 750.00

D $ 800.00

La interfaz gráfica propuesta es la siguiente:

PENSION DE ESTUDIANTES

Simulador de cuotas

Alumno

Promedio
[ PROCESAR j
ponderado

Todos los derechos reserv� - Lic. M�nuel Torres

Tener en cuenta:

0 Al iniciar el formulario no debe mostrar los datos resultantes, estos se mostrarán solo cuando el

usuario presione el botón Procesar.

0 Implemente funciones para captura de valores.

0 Los valores seleccionados para la venta deben mantenerse aun después de presionar el botón

Procesar.

0 Implemente una función lambda que determine la categoría del estudiante según su promedio.

0 Implemente una función lambda que calcule la pensión del estudiante según su categoría.

0 Implemente una función lambda que determine la fecha a c t u a l.

0 Implemente una función lambda que asigne un valor constante de 5 cuotas para todos los

estudiantes.
••••• DESARROLLO DE APLICACIONES WEB CON PHP

A c o n ti n u a c i ó n , se muestra la ejecución y el ingreso de valores al f o r m u l a r i o :

PENSION DE ESTUDIANTES

Simulador de cuotas

Alumno Angela Victoria Torres Lazaro

Promedio
19 [ PROCESAR ]
ponderado

Alumno Angela Victoria Torres 1 azaro

Promedio 19

categoría A

RESUMEN DE CUOTAS

Monto pensón $550.00

Fecha actual 06/07/2014

Número de cuotas 5

RESUMEN DE FECHAS Y CUOTAS

Fechas Monto por cuota

07/07/2014 $550.00

07/08/2014 $550.00

07/09/2014 $550.00

07/10/2014 $550.00

07/11/2014 $550.00

Total por semestre $2750.00

Tocios los derechos resel'Vados - Lic. Manuel Torres

Archivo: pension.php

..................................................................................................................................................................................................
. .

<!DOCTYPE html>

<html>

<head>

<meta charset=''UTF-8''>

<link href=''estilo.css'' rel=''stylesheet''>

<title>Pensión de estudiantes</title>

</head>

<body>

<header>

< h2 id=''centrado''>PENSION DE ESTUDIANTE5</h2>

< h3 id=''centrado''>Simulador de cuotas</h3>

<img src=''bannerUniversidad.JPG'' width=''700'' height=''182'' />

</header>

<section>

<?php error_reporting(0); ?>

<form name="frmPension" method="POST">

<!--Tabla para ingreso de valores-->

<table border=''0'' width=''700'' cellspacing=''S'' cellpadding=''l''>

<tr>

<td>Alumno</td>
..................................................................................................................................................................................................
CAP. 6: FUNCIONES ••

··································································································································································································· .
• •



<td><input type="text" name="txtAlumno" size="70" •


• •


value=''<?php echo getAlumno(); ?>'' /></td>


<td></td>

</tr>

<tr>

<td>Promedio ponderado</td>

<td><input type=''text'' name=''txtPromedio''

value=''<?php echo getPromedio(); ?>" /></td>

<td><input type=''submit ' ' value=''PROCESAR''

name=''btnProcesar''/></td>

< / tr>

</table>

<?php

$categoria = function($promedio){

if ($promedio>17)

return " A ",


·

elseif ($promedio>=14)

return " B ",


.

elseif ($promedio>=12)

return "C";

else

return "D";



}; •

• •
• •
• •


• •

• •

• •

• <?php if(isset($_POST("btnProcesar"])){?> •

• •

• <!--Tabla para el resumen de categoría-->


<table border=''l'' w idth= ''7 00'' cellspacing=''l'' cellpadding=''l''> •

<tr>

<td width=''200''>Alumno</td>

<td width=''200''><?php echo getAlumno(); ?></td>

<td width=''200''></td>

</tr>

<tr>

<td>Promedio</td>

<td><?php echo getPromedio(); ?></td>

<td></td>

</tr>

<tr>

<td>Categoria</td>

<td><?php echo $categoria(getPromedio()); ?></td>

<td></td>

</tr>

</table>

<?php

$pension= function($categoria){

if ($categoria=="A") •


• return 550; •



• •
elseif ($categoria=="B")

• •

• return 650; •
• •
• •


elseif ($categoria=="C")

• return 750;

elseif ($ca te g o r ia== ''D'') •

return 800·,

else

return ' '


,.

};

$fecha= function(){ return date('d/m/Y'); };

$cuotas= function() { return 5; };

..................................................................................................................................................................................................
••••• DESARROLLO DE APLICACIONES WEB CON PHP

. .
. .



<!--Tabla resumen de pensión-->

<table border=''l'' width=''700'' cellspacing=''l'' cellpadding=''l''>

<tr>

<td width="200">RESUMEN DE CUOTAS</td>

<td width=''200''></td>

<td width=''200''></td>

</tr>

<tr>

<td>Monto Pensión</td>

<td><?php echo '$'.number_format($pension($categoria(

getPromedio())),'2', ' . ' , " ) ; ?>




</td>


<td></td>
• •
• •


</tr>



<tr> •


• •
• •
• <td>Fecha Actual</td> •

• •


<td><?php echo $fecha(); ?></td>
• •
• •
• •
<td></td>

• •

</tr>


<tr> •

<td>Número de Cuotas</td>

<td><?php echo $cuotas(); ?></td>

<td></td>

</tr>

</table>

<!--Tabla para las posibles fechas y cuotas-->

<table border=''l'' width=''700'' cellspacing=''l'' cellpadding=''l''>

<tr>

<td colspan=''2''>RESUMEN DE FECHAS Y CUOTAS</td>

</tr>

<tr>

<td>Fechas</td>

<td>Monto por cuota</td>

</tr>

<?php

.
for($i=1;$i<=$cuotas();$i++){

$montoTotal += $pension($categoria(getPromedio()));

?>

<tr>

<td>

<?php

$f=$fecha();

echo date('d/m/Y', strtotime("$f +$i month"));

?>

</td>

<td><?php echo '$'.number_format($pension($categoria( •


getPromedio())),'2',',',''); ?> •


</td> •

• •


</tr> •

• •
• •



<?php} ?> •
• •
• •

• <tr> •
• •
• •

<td>Total por semestre</td> •


<td><?php echo '$'.number_format($montoTotal, ' 2 ' , ' , ' , ' ' ) ; ? >

• </td> •

</tr>

</table>

<?php} ?>

</form>

..................................................................................................................................................................................................
CAP. 6: FUNCIONES ••

····································································································································································································
• •

¡ </section> i

. .

, cfooter> ,
. .
. .

, ch6 id="centrado">Todos los derechos reservados - ,


. .

, Lic. Manuel Torresc/h6> ,


· c/footer>

c?php

: function getAlumno(){ return $_POST['txtAlumno']; } :

: function getPromedio(){ return $_POST['txtPromedio']; } :

?>

c/body>

: </html>

............................••....•..•......••..............................................•.......•......••......•...............................................•..............................

Comentarios:

.•·········································································· .

$categoría= functíon($promedío){

if ($promedío>17)

return "A";

elseíf ($promedio>=14)

return "B".
,

elseíf ($promedío>=12)
" ( " ·
return ,

else

return "D";

};

..................................................................................................................................................................................................

Se implementa la función anónima ( l a m b d a ), que determina la categoría según el promedio

obtenido por el a l u m n o , esta función asignará directamente la categoría a la v a r i a b l e $categoría .

..................................................................................................................................................................................................
.

$pension= functíon($categoría){

if ($categoria==''A'')

return 550;

, elseíf ($categoría=="B")

return 6 5 0 ·,

elseíf ($categoría=="(")


return 7 5 0 ·,

elseíf ($categoría=="D")

• return 800·,

• •
• •

else •

return ' '


,.

};

$fecha= function(){ return date('d/m/Y'); };


• •
• •
$cuotas= function() { return 5; };

•. . . . • . . . . . . . . . . • • . • • . . • • . . • . • . • . . . • • . • . . . . . • . . • . . . • • . • . • . . . . . . • • . . • • . . . . . . . . . • • . . • • . . • . . . • . . • • . . . • • . . . . . . . . • . • . . . • • • • • • . . . • • . • . . . • . . • • . . . . . . . • . . . • . . . . . • • . • • . . . . • • . . . . . . • • . . • • . . • . • • • . . . . • . . • • . • • .

Usamos la función anónima (lambda) para determinar el monto de la pensión en base a la

categoría obtenida en el proceso anterior; este resultado será asignado directamente a la

v a r i a b l e $pensión.

Luego obtenemos la fecha actual por medio de una función a n ó n i m a ( l a m b d a ) , y le asignamos

a la v a r i a b l e $fecha. De la m i s m a forma al n ú m e r o de cuotas constante de la a p l i c a c i ó n l l a m a d a

$cuotas.
••••• DESARROLLO DE APLICACIONES WEB CON PHP

. .
. .

< ?php

for($i=1;$i<=$cuotas();$i++){

$montoTotal += $pensión($categoria(getPromedio()));

?>


<tr> •



<td> •
• •

• •
• <?php •

$f=$fecha();

echo date( ' d / m / Y ' , strtotime("$f +$i month"));

?>



</td>

• <td><?php echo ' $ ' .number_format($pension($categoria(

getPromedio())),'2',',',''); ?>

</td>

</tr>

<?php} ?>
• •
• •
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

De acuerdo al número de cuotas se procederá a i m p r i m i r los montos en la celda correspondiente,

y a la vez se irá a c u m u l a n d o los montos en la v a r i a b l e $montoTotal. Aquí es d o n d e i m p r i m i r e m o s

los valores enviados desde las funciones a n ó n i m a s , como la fecha actual y la p e n s i ó n .

. . . . . . . . . . . . . . ............ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . .. ...... . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ..... ... .. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

function getAlumno(){ return $_POST['txtAlumno']; }

function getPromedio(){ return $_POST['txtPromedio']; }

. . . . . . .. .. . . . .. . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , .. , .

La función getAlumno permite obtener el nombre del a l u m n o registrado en el control txtAlumno,

la f u n c i ó n getPromedio permite obtener el p r o m e d i o registrado en el control txtPromedio.

También podría gustarte