Sie sind auf Seite 1von 118

Introduccin

Sean todo bienvenidos.


A lo largo de este curso, aprenderemos los pasos necesarios para programar en PHP, junto
con una rpida introduccin a las bases de la programacin.
Para iniciar nuestro curso, debemos saber donde obtememos PHP y de dnde surge la idea
de PHP.

UN POCO DE HISTORIA DE PHP

PHP es un acrnimo de PHP: Hypertext Preprocessor, aunque los orgenes del nombre se
remontan al nombre Personal Home Page. PHP es un lenguaje de alto nivel que va
embebido (insertado) en pginas HTML. Por otro lado, PHP es un lenguaje del lado del
servidor (Server Side Scripting Languaje), lo cual significa que el usuario abre la pgina
HTML y hace una peticin de interactuar, PHP, instalado en el servidor web, interpreta la
peticin y enva una respuesta al usuario, lo cual hace la diferencia entre lenguajes como
PHP y lenguajes como javascript, que son lenguajes del lado del usuario.

PHP fue concebido en 1994 por Rasmus Lerdorf, cuyo uso fue personal por esos tiempos,
para controlar la cantidad de personas que consultaban su hoja de vida, es decir, su
"decubrimiento" fue accidental (qu les parece?, como la penicilina)

PHP es un lenguaje de cdigo abierto, lo cual implica que, por un lado, hay un grupo de
desarrolladores que contribuyen a la elaboracin y fortalecimiento del lenguaje; y, en
segundo lugar, que es un lenguaje por el que no necesitamos pagar derechos de autor
(licencia) para utilizarlo.

CMO FLUYE LA MAYORA DE LA INFORMACIN A TRAVS DEL


INTERNET EN UNA PGINA DINMICA

Una pgina dinmica implica la interaccin entre el usuario y un script desarrollado en un


lenguaje que permita el dinamismo, es decir, que permita la interaccin entre el usuario y
un Servidor Web y un Servidor de Base de Datos (en caso de existir uno). Es decir, que el
usuario haga una peticin al servidor Web, ste se comunica con el servidor de base de
datos, extrae la informacin de la base de datos y presenta la informacin en la pantalla del
usuario.

Un ejemplo bastante claro, es la forma en la que nos inscribimos en algn servicio de


correo electrnico, en el que proporcionamos nuestro nombre, apellido, un nombre para el
correo de la forma minombre@miproveedor.com y una palabra clave. Cuando, por ejemplo,
al da siguiente, vamos a ver nuestros correos electrnicos, basta con escribir nuestro
nombre de usuario y palabra de acceso para que accesemos a nuestra cuenta. Todo lo
anterior, es gracias a una pgina dinmica, que solicita los datos al servidor Web que a su
vez, extra los datos de nuestra cuenta del Servidor de Base de Datos.

Lo anterior es algo similar a la siguiente animacin:

LO QUE PODEMOS HACER CON PHP

Lo que se puede hacer con PHP es bsicamente cualquier cosa que se pueda hacer con un
script CGI, es decir, trabajo con formularios, como su procesamiento y manejo dinmico;

generar pginas con contenido dinmico (de nuevo, el contenido dinmico es el que le
permite a la pgina la interaccin con el usuario); mandar o recibir cookies, etc.

Una caracterstica de PHP, es la capacidad de trabajar con una gran cantidad de bases de
datos, lo cual lo hace un programa verdaderamente potente, siendo que, por ejemplo, si lo
"juntamos" con MySQL (un Gestor de Bases de Datos con licencia GNU), nuestros
recursos salen literalmente "GRATIS"

Bien, en nuestra prxima entrega vamos a aprender a instalar PHP y vamos a desarrollar
nuestra primera pgina web. Por el momento, hasta pronto.

Instalando PHP
Hola, cmo estn?, continuamos ahora con la instalacin de PHP Lo primero es bajar el
programa de la pgina de PHP www.php.net y seguir los siguientes pasos:

El archivo .zip como habrn visto se ha guardado en el escritorio (pues as se lo


especificamos al programa que descomprimi nuestros archivos, por otro lado, cuando
descomprimimos el archivo), al descomprimir los archivos, tambin es necesario
especificarle al programa que descomprime que mantenga los nombres de las carpetas
(folders) para que se descomprima tal y como lo bajamos del sitio web.

Como habrn visto, la instalacin es bastante sencilla, y el tipo de instalador que escogern
depender del tipo de servidor web que deseen utilizar en sus aplicaciones (Apache o IIS).
Para el presente curso tomaremos como base el servidor Apache (por cierto, saban que
tambin es gratis).

Finalmente, hay que tener en cuenta que lo mejor de todo es utilizar PHP como mdulo de
Apache, por lo que ser necesario que se asguren a tener la configuracin de su archivo
httpd.conf de la siguiente forma:

LoadFile
LoadFile
LoadModule php5_module modules/mod_php.so

php\bin\php5ts.dll
php\bin\fdftk.dll

Con lo anterior, estmos listos para comenzar a trabajar en PHP.

NUESTRO PRIMER PROGRAMA PHP


Al igual que cualquier script de HTML, podemos escribir el cdigo PHP en cualquier editor
de texto que escojamos, claro est, si hay que hacer alguna recomendacin, la
recomendacin obvia es un editor de texto que sea freeware, es decir, que sea gratis. Uno
bastante bueno es ConText, el cual se puede bajar de su direccin de internet
www.context.cx

Luego de haber escrito nuestro script PHP, debemos guardar el documento con la
extensin .php

Bien, como ya lo habrn imaginado, nuestro primer programa ser el tpico y casi infaltable
"Hola Mundo!" (Casi inservible, pero muy vivificante). Como ya dijimos, necesitamos
crear una pgina HTML con los comandos PHP embebidos (o insertados), dentro de las
etiquetas especiales de inicio <? php y final ?>de la siguiente forma:

<html>

<head>
<title>Mi primer programa PHP</title>
</head>
<body>
<?php echo "Hola Mundo!"; ?>
</body>
</html>
Lo anterior, como ya la mayora habr imaginado, produce la siguiente salida:

Como resulta obvio, los resultados de nuestro programas en PHP los veremos en nuestro
navegador de Internet, siendo que los programas se insertan en pginas HTML.

Por supuesto, el resultado final se hubiese logrado con menos scripts en HTML puro, pero
en fin, el objetivo era simplemente mostrar la forma en la que un fragmento de cdigo en
PHP debe iniciar y terminar. Nuestros programas sern ms grandes y complejos conforme
vayamos avanzando y aprendiendo ms y ms.

Por el momento, hasta pronto.

Variables Parte 1
Las variables son uno de los conceptos ms bsicos en la programacin. Las variables son,
en pocas palabras: contenedores de datos.

Las variables son datos, a los que podemos manipular basados en un nombre: el nombre de
la variable, sin necesidad de hacer referencia al tipo de dato al que la variable hace
referencia. En PHP, cada variable debe comenzar con el signo de dlar ($) ms el nombre
de la variable de la manera siguiente:
$nombre
Para asignarle un valor a la variable, debemos utilizar el smbolo de asignaci, el cual no es
otro que el signo de igual (=). Una observacin (con carcter de advertencia), que debe
hacerse, es que no es lo mismo el carcter de asignacin (=), que el smbolo comparativo de
igualdad (= =). Cuando asignamos un valor, por ejemplo $nombre = "Miguel", le decimos
a PHP que la variable $nombre tiene el valor de cadena de caracteres "Miguel", mientras
que $nombre = = "Miguel", hace la comparacin entre el valor que tiene $nombre y la
cadena de caracteres "Miguel". Es decir, en buen castellano, la primera le dice a PHP quiero
que la variable que se llama $nombre guarde el valor "Miguel", mientras que la segunda,
por decirlo de alguna forma, le pregunta a PHP si la variable $nombre, guarda en su interior
el valor "Miguel".

Por favor dirijan su atencin a las comillas dobles que estn antes del valor Miguel y que
tambin estn al final de dicho valor asignado a la variable $nombre. Si bien vamos a entrar
en mayor detalle en un captulo futuro, tenemos que adelantar que no es lo mismo el
tratamiento de nmeros, que el tratamiento de cadenas de caracteres como es el caso del
ejemplo que hemos presentado. Por ejemplo, no es lo mismo "64", que 64. "64" hace
referencia a la cadena de caracteres formadas por el valor ASCII de "6" y "4", mientras que
64, sin comillas dobles, hace referencia al dgito 64, con el cual ya se pueden efectuar
operaciones matemticas como suma, resta multiplicacin, etc. De acuerdo, tal vez al
principio no resulte tan sencillo de comprender, pero cuando hagamos referencia a las
operaciones con cadenas, les aseguro que vamos a entender en su totalidad ambos
conceptos.

OTRO PROGRAMA EN PHP


Bien, hagamos otro pequeo programa para mostrar lo que la asignacin de valores a
variables significa, vamos a trabajar con el mismo ejemplo de la varible $nombre y el valor
"Miguel":
<? php
$nombre = "Miguel";
echo $nombre;
?>
La salida de esto en pantalla, no es ms que Miguel, sin comillas y sin "adorno" alguno.

OBSERVACIONES NECESARIAS
En primer lugar, hay que decir que el programa es similar al de Hola Mundo!, es decir,
intil pero gratificante. Con todo y eso, la intencin es mostrar algunas cosas importantes
de la programacin en PHP, que se muestran de hecho desde el primer programa que
desarrollamos en PHP. En primer lugar, como ya se mencion desde el principio, cada
cdigo PHP insertado en HTML debe comenzar y terminar con las etiquetas especiales <? y
?>, las letras php despus de la etiqueta de apertura <? son opcionales, pero son
recomendables para distinguir de manera ms sencilla en donde finaliza el script HTML y
comienza el cdigo PHP, por otro lado, cada final de lnea de cdigo debe finalizar con el
punto y coma (;), que es el smbolo de final de sentencia. Un final de sentencia implica que
la instruccin especfica ha terminado y que la siguiente lnea contendr otra instruccin.

Por otro lado, los espacios en blanco en PHP son opcionales, pero contribuyen mucho a dar
legibilidad a nuestro cdigo, as, el segmento de cdigo del ejemplo anterior pudimos
haberlo escrito de la siguiente forma:

<?php $nombre="Muguel";echo $nombre;?>

El resultado final sera exactamente el mismo, pero el dilema de entender un segmento de


cdigo como el anterior sera verdaderamente un dolor de cabeza, sobre todo si nuestros
programas se llegan a hacer (y se harn) mucho ms grandes que el ejemplo anterior.

Por ltimo, la instruccin echo de PHP tiene la funcin, como ustedes seguramente ya lo
habrn adivinado, de imprimir en pantalla lo que se le ordene imprimir. Claro est, la
utilidad y poder de esta instruccin se discutirn con detenimiento a lo largo de todo el
curso.
Por hoy, hasta pronto.

Variables Parte 2
Antes que nada, hay que explicar un poco las razones del por qu hay necesidad de hacer
una segunda parta para las variables. Las razones son las siguientes:

Si el concepto de variable no se entiende bien, nada en un programa PHP podr


funcionar.

Las consideraciones faltantes en cuanto a variables son tan importantes como las
primeras.

Y por ltimo, el captulo anterior se estaba haciendo demasiado grande (esto es slo
una irona)

Nombre buenos y nombres malos


Hay normas sencillas en cuanto a los nombres que una variable debe tener. En primer lugar
hay que decir que el tamao de las variables, es decir, de sus nombres, no tiene mayor
importancia, las variables pueden tener un nombre tan grande como les apetezca, as por
ejemplo, un nombre como:

$elreydeconstantinoplasequieredesconstantinopolizar = "Nombre largo";

Es totalmente vlido, aunque por supuesto, no es precisamente el nombre ms explicativo y


prctico que podemos asignarle a una variable, sin embargo, no causa problema alguno.

Pese a las facilidades que brinda PHP para el tamao de los nombres de las variables, lo
ms conveniente es darles nombres explicativos, que tengan que ver con el tipo de datos
que se estn guardando como:

$nombre = "Miguel";
$edad = 49;
$consulta_mysql = "SELECT * FROM suscribientes WHERE username =
'astroboy'";
$punto_flotante = 164845.35
$arreglo = array("Hola", "Adis", "Buenos Das", "Buenas Noches");
&$valor_por_referencia = "pasando valor por referencia a una funcin";

Claro est, cada quien utilizar los nombres que resulten ms convenientes, pero en general,
como ya se dijo, la idea es nombrar cada variable para que resulte sencillo comprender qu
tipo de datos estn siendo guardados dentro de ellas.

Por otro lado, hay ciertas reglas que seguir a la hora de darle nombre a las variables. Dichas
reglas son:

Todas las variables deben comenzar con el signo de dlar ($).

Las variables NO pueden comenzar (despus del signo de dlar claro est) con
nmeros, as:
o $123,
o $0, no son nombre vlidos

Las variables NO pueden comenzar o contener en su nombre smbolos especiales


como ?, &, %, #, @, !, *, (, ), <, >. Por consiguiente, las variables
o $%porcentaje,
o $$precio,
o $#_de_telefono, no son vlidas en lo absoluto

Las variables no pueden llevar tildes o ees en su contenido, es decir que:


o $nio,
o $pasin, no son nombre vlidos en PHP

Las variables SI pueden comenzar con el guin bajo ( _ ), de manera que las
variables $_nombre, $_GET, $_123 son totalmente vlidas y pueden ser utilizadas
sin ningn problema en segmentos de cdigo PHP.

Con respecto a la forma en la que se declaran y utilizan las variables, esto es lo ms


relevante que debemos saber para el desarrollo de este curso, en nuestra prxima entrega,
aprenderemos sobre las operaciones bsicas con las variables. Por el momento, hasta
pronto.

Operaciones Matemticas con variables


Las operaciones con variables dependern del contenido que stas guarden, por
consiguiente no es lo mismo utilizar el signo de ms (+) con variables que guardan
nmeros, que utilizarlo con variables que guardan cadenas de caracteres.

Las operaciones matemticas con variables se llevan cabo de manera horizontal y de


izquierda a derecha.

Para poner un ejemplo, si tenemos las variables siguientes:

$numero1 = 15;
$numero2 = 23;

Y el fragmento de cdigo:

<?php
$numero1 = 15;
$numero2 = 23;
echo $numero1 + $numero2;
?>

Obtendremos un resultado como el siguiente:

La misma lgica aplica para todas las operaciones matemticas bsicas, es decir la suma
($variable1 + $variable2), la resta ($variable1 - $variable2), la multiplicacin ($variable1 *
$variable2) y la divisin (($variable1 / $variable2); adems, est una operacin ms, la
operacin mdulo ($variable1 % $variable2). La operacin mdulo proporciona el cociente
que resulta de la divisin entre la variable1 y la variable2. Si bien de momento la utilidad
de esta funcin no resulta alocadamente obvia, podemos asegurar que la utilizarn en ms
de algn programa que desarrollen en un futuro cercano.

Operaciones con cadenas


Existe un operador de cadena que es el operador punto ( . ), este operador sirve para
concatenar una cadena con otra, de la forma $variable1.$variable 2. Es decir, si tuvisemos
el siguiente segmento de cdigo:

<?php
$primer_nombre = "Juan";
$segundo_nombre = "Antonio";
echo $primer_nombre.$segundo_nombre
?>

El resultado impreso en la pantalla sera:


JuanAntonio
Bien, en cuanto a las operaciones ms bsicas con variables y en cuanto a las reglas de
declaracin de variables, hemos aprendido lo necesario. En nuestro prxima entrega, vamos
a aprender sobre otro tipo de operadores utilizados en PHP.
Por el momento, hasta pronto.

Operadores en PHP
Operadores de Comparacin
Los operadores de comparacin se utlilizan, como su nombre lo indica, para hacer
comparaciones entre valores (la gran mayora de las ocasiones guardados en variables) que
necesitan desempear un papel en nuestro cdigo. En PHP dichos operadores son:

Operador

Nombre

Ejemplo

==

Igualdad

$a = = $b Cierto si $a es igual a $b

===

Identidad

$a= =

Resultado
Cierto si $a es igual a $b y si adems son del

=$b

mismo tipo (slo PHP4 o mayor)

!=

Desigualdad

$a != $b Cierto si $a no es igual a $b

<

Menor que

$a < $b Cierto si $a es estrictamente menor que el de $b

>

Mayor que

$a > $b Cierto si $a es estrictamente mayor que $b

<=

Menor o igual
$a <= $b Cierto si $a es menor o igual que $b
que

>=

Mayor o igual
$a >= $b Cierto si $a mayor o igual que $b
que

Operadores de Incremento y Decremento


Los operadores de decremento o incremento son de gran utilidad en la programacin, sobre
todo porque ahorran tiempo, esfuerzo y cdigo. Dichos operadores incrementan o
decrementan en uno el valor de la variable a la que se le est aplicando dicho decremento o
incremento. Claro est, la utilidad la veremos con un poco ms de obviedad a la hora de ver
los bucles, en los que de hecho, los operadores de incremento o decremento, hacen su debut
triunfal y decididamente impresionante.
En PHP, los operadores de Incremento y Decremento son los siguientes:

OPERADOR

NOMBRE

EFECTO

$a++

Postincremento Devuelve el valor de $a y luego lo incrementa en uno

++$a

Preincremento

$b--

Postdecremento Devuelve el valor de $b y luego lo decrementa en uno

--$b

Predecremento

Incrementa en uno $a y luego devuelve el valor de $a ya


incrementado
Decrementa en uno $b y luego devuelve el valor de $b ya
decrementado

Operadores Lgicos
Los operadores lgicos son de extrema utilidad a la hora de decidir si un valor y otro o un
valor u otro, cumplen con ciertas condiciones. De nuevo, la utilidad de estos operadores los
veremos cuando veamos las estructuras de control. En PHP, los operadores lgicos son los
siguientes:

Ejemplo

Nombre

Resultado

$a and $b

Cierto slo si $a y $b son ciertos

$a or $b

Cierto si $a $b ambos son ciertos

$a xor $b O exclusiva Cierto si $a $b son ciertos, pero no si ambos son ciertos a la vez
!$a

Negacin Cierto si $a no es cierto

$a&&$b

Cierto slo si $a y $b son ciertos

$a||$b

Cierto si $a $b ambos son ciertos

Siendo que lo ms seguro es que se estn preguntando cul es la diferencia entre and y &&
o entre or y ||. La respuesta es sencilla, los smbolos && y || son abreviaciones o, ms an,
son herencia del lenguaje del cual deriva PHP, es decir C/C++. Dado lo anterior, para todos
aquellos que ya tengan experiencia en la programacin con C/C++, esta notacin les
resultar muy familiar.
Esto es todo en cuanto a los operadores se refiere, en nuestro prximo encuentro,
aprenderemos sobre la precedencia que tiene los operadores en PHP.
Pero eso ser, hasta la prxima!!!

Precedencia de Operadores en PHP


La precendencia de operadores especifica que operaciones han de efectuarse primero en
caso de existir ms de una operacin en un segmento de cdigo, por ejemplo 1 + 2 * 3 sera
igual a 7 y no igual a 9, ya que el operador de multiplicacin (*) tiene mayor precedencia
que el de suma (+). En PHP la precedencia es como sigue:

Asociatividad

Operadores

izquierda

izquierda

or

izquierda

xor

izquierda

and

derecha

print

izquierda

=, +=, -=, *=, /=, %=

izquierda

?:

izquierda

||

izquierda

&&

izquierda

izquierda

izquierda

&

no asociativo

==, !=, ===

no asociativo

<,<=,>,>=

izquierda

+, - , .

izquierda

*, /, %

derecha

!,~,++,--,(int), (double), (string),(array), (object), @

derecha

no asociativo

new

Operador Ternario
El operador ternario ?:, funciona de la forma (exp1) ? (exp2) : (exp3);
Lo anterior significa que la expresin tomar el valor de exp2 si exp1 se vala como cierto,
y el valor de exp3 si el valor de exp1 resulta falso. Un ejemplo sera:
<?php
$nombre = "Roberto";
echo ($nombre == "Roberto") ? "Hola Roberto" : "No te conozco";
?>
El cdigo anterior nos da como salida en la pantalla lo siguiente:

Si la variable $nombre hubiese tenido otro valor diferente a Roberto, entonces el resultado
en pantalla hubiese sido No te conozco
Este operador se utiliza de forma similar en una gran cantidad de lenguajes de
programacin, por lo que para quienes ya tienen experiencia en programacin, por ejemplo
en C o C++, no les resultar desconocido.
Bien, eso es todo, por el momento, en cuanto a operadores se refiere, en la prxima entrega
aprenderemos sobre las estructuras de control, y nuestros programas en PHP comenzarn a
hacerse ms interesantes, por el momento: hasta pronto.

Estructuras de control (IF)


Como ya se explic con anterioridad, cada archivo de comandos PHP se compone de una
serie de sentencias. La sentencia puede ser una asignacin, una llamada a una funcin
(calma, las funciones vienen en camino en una entrega posterior), una sentencia
condicional, etc. Por favor recuerden que cada sentencia termina con el punto y coma (;), lo
que significa que si dicho smbolo no se escribe al final de cada sentencia, PHP har de
cuenta que la sentencia no ha terminado hasta que un punto y coma sea encontrado. Los
resultados de omitir un punto y coma van desde los ms leves e insignificantes, hasta los
ms catastrficos, desesperantes y estresantes (enfermedad de moda en nuestros tiempos,
adems de casi inevitable), que se puedan imaginar, as que por favor, no olviden de
finalizar cada sentencia con un punto y coma. Por otro lado, tambin es necesario
mencionar que las sentencias pueden ser agrupadas en grupos de sentencias, que estarn
encerradas dentro de llaves { }. Por consiguiente, un grupo de sentencias encerradas en
llaves, son en realidad, una sola sentencia. En esta entrega, veremos los diferentes tipos de
sentencias que pueden haber en un programa PHP:

IF

"Si me gustan los chocolates, me los como"

Una de las estructuras de control ms bsicas, y sin embargo una de las ms importantes, es
la estructura if. Dicha estructura evala el valor de una expresin y dependiendo de si la
evaluacin resulta verdadera o falsa, la sentencia a continuacin de if se ejecutar o se
ignorar.
La sintaxis es la siguiente:

if(expr1)
sentencia

As, si tenemos el siguiente fragmento de cdigo:

<?php
$a = 1;
$b = 3;
if($a < $b)
echo "$a es menor que $b";
?>

El resultado en pantalla sera el siguiente:

Dado que 1 (valor de $a) es decididamente menor que 3 (el valor de $b), la sentencia echo
"$a es menor que $b" se imprime en la pantalla de nuestro navegador de Internet. Si el caso
hubiese sido que el valor de $a hubiese sido, por ejemplo 5, el navegador simplemente nos
hubiese mostrado una pantalla vaca.

Por favor observen que al final de la sentencia que contiene el IF, NO hay un punto y coma.
Por favor tengan en cuenta que si ponen un punto y coma al final de la lnea de cdigo que
contiene el IF, dicha sentencia, si bien se ejecutar, tendr un defecto de sintaxis que puede
llegar a ser peligroso en caso de un programa verdaderamente grande.

La instruccin echo, como ya se explic anteriormente proporciona una salida en pantalla


de todo lo que est dentro de las comillas dobles (" "), por lo que es importante observar
cuidadosamente el resultado de nuestro cdigo. Si se dan cuenta la sentencia de impresin
(o de salida a pantalla) dice echo "$a es menor que $b", pero el resultado en pantalla dice
1 es menor que 3. Lo anterior implica que, cuando imprimimos variables dentro de una
instruccin echo, incluso cuando las variables estn incluidas dentro de las comillas, lo que
se imprimir en pantalla ser el valor de dicha variable y no la cadena de caracteres que
implica dicha variable, en nuestro ejemplo seran las cadenas "$a" y "$b". Si nuestro deseo
es imprimir las cadenas de caracteres mencionadas, entonces debemos utilizar la
instruccin de impresin de caracteres especiales \. En otras palabras, la instruccin debera
ser echo "\$a es menor que \$b";

Con las correcciones anteriores, el resultado sera el siguiente:

Como resulta claro, el operador \, hace que el carcter especial $ se imprima en pantalla.

Por otro lado, la mayora de las veces, necesitaremos agrupar ms de una sentencia, dentro
de la sentencia IF. Si ese fuese el caso, debemos de tener en cuenta que despus del primer
punto y coma, la sentencia IF se acaba, por ello, para encerrar a varias sentencias, dentro de
la sentencia IF, debemos utilizar las llaves { } para encerrar a todas las sentencias que
deseemos que estn dentro de nuestra estructura de control IF, de la siguiente forma:

<?php
$a = 1;
$b = 3;
if($a < $b){
echo "\$a es menor que\ $b<BR>";
echo "El valor de \$a es $a y el de \$b es $b";
}
?>

Para el ejemplo anterior, el resultado en pantalla sera el siguiente:

As pues, por favor recuerden de encerrar entre llaves las sentencias que han de ir dentro de
una sola sentencia IF.
Esto es todo en cuanto a IF, al menos por el momento. En la siguiente entrega veremos algo
sobre su complemento perfecto, es decir la sentencia ELSE.
Por el momento, Salud, Dinero y Amor! y hasta pronto.

Estructuras de Control (ELSE)


ELSE
"Si me gustan los chocolates me los como, sino, los regalo"

En muchas ocasiones, la evaluacin verdadera de una sentencia no es suficiente, ya que en


la mayora de las ocasiones es necesario hacer algo especfico si la evaluacin resulta
verdadera o hacer otra cosa si la evaluacin resulta falsa. Para ello existe un complemento
de la sentencia IF, que es la sentencia ELSE, la cual se ejecuta slo en caso de que la
sentencia no resulte verdadera.

As pues, siguiendo con nuestro ejemplo anterior (y cambindolo un poco), tendramos:

<?php
$a = 3;
$b = 1;
if($a < $b){
echo "\$a es menor que \$b<BR>";
echo "El valor de \$a es $a y el de \$b es $b";
}
else{
echo "\$a es mayor que \$b<BR>";
echo "El valor de \$a es $a y el valor de \$b es $b";
}
?>

Siendo que la evaluacin es falsa y definitivamente 3 no es menor que 1, nos vemos en la


obligacin de hacer que nuestro programa reaccione ante este hecho y que nos de una
respuesta en vez de dejarnos con una enigmtica pgina en blanco (el temor de cualquier
escritor,... incluso de un escritor de programas para computadora). Por las razones
anteriores, la sentencia ELSE viene en nuestro auxilio y nos brinda la otra solucin posible,
si la sentencia no es menor, entonces, debe ser mayor y nos imprime el resultado en
pantalla de la siguiente forma:

Sin embargo, hay algo que debera preocuparnos (pero,... siempre hay un pero, no es as?).
Si leyeron bien las ltimas dos filas del prrafo anterior dicen si la sentencia no es menor,
entonces, debe ser mayor, lo cual no debe ser algo mandatorio, porque, que tal si no es ni
mayor ni menor, sino ms bien igual. Esto implica que las sentencias IF...ELSE, no seran
suficientes. Habr alguna forma de solucionar esto?, existir alguna sentencia que nos
ayude a solventar este problema? La respuesta es S, s que la hay...

Pero eso lo veremos en nuestra prxima entrega.

De momento, hasta pronto!

Estructuras de Control (ELSEIF)


ELSEIF
"Si me gustan los chocolates me los como, sino, los vendo, sino, los regalo"

Cuando las evaluaciones de una expresin van ms all de una o dos sentencias, entonces
es necesario utilizar la instruccin elseif. Es decir, si la expresin 1 es verdadera se ejecutan
las sentencias despus de la instruccin IF, sino, se ejecutaran las que acompaan a elseif,
si la expresin 1 tampoco cumple con la evaluacin de elseif, entonces se ejecutan las
sentencias de else.

Para seguir con nuestro queridsimo y entraable ejemplo:

<?php
$a = 3;
$b = 1;
if($a < $b){
echo "\$a es menor que \$b<BR>";
echo "El valor de \$a es $a y el de \$b es $b";
}
elseif($a>$b){
echo "\$a es mayor que \$b<BR>";
echo "El valor de \$a es $a y el valor de \$b es $b";
}
else{
echo "\$a es igual que \$b<BR>";
echo "El valor de \$a es $a y el valor de \$b es $b";
}
?>

El resultado en pantalla sera:

Como podemos ver, basados en los valores de las variables, el segmento de cdigo que se
ejecutar es el que corresponde a elseif, es decir:

elseif($a>$b){
echo "\$a es mayor que \$b<BR>";
echo "El valor de \$a es $a y el valor de \$b es $b";
}

Y el resultado en pantalla lo demuestra.


Una ltima observacin que agregar es que podemos anidar sentencias IF...ELSEIF una
dentro de otra, dentro de otra, dentro de otra, tantas veces como necesitemos, es decir:

if(exp1){
sentencias
}
elseif(exp1){
sentencias
}

elseif(exp1){
sentencias
}

Tantas veces como sea necesario. Sin embargo, por razones de legibilidad, esto no es
recomendable y hay que decir que existen alternativas al anidamiento de sentencias. Pero
todo esto ser, como ya lo habrn adivinado, en otra entrega.
Por el momento, hasta pronto.

Estructuras de Control (WHILE)


S, la verdad es que las estructuras de control son, por decirlo de alguna manera, la columna
vertebral de cualquier lenguaje de programacin y es necesario explicarlas con toda la
holgura necesaria.

Como recordarn, en la entrega anterior vimos las estructura IF...ELSEIF...ELSE. Esta


estructura nos permite tomar una decisin en cuanto al rumbo que nuestro programa
tomar, dependiendo de si una condicin se cumple o no se cumple. En esta entrega
iniciaremos con lo que se conoce como bucles, lo que no es ms que una sentencia que se
repite una y otra vez, hasta que una condicin se cumple.

Empezamos:

WHILE
"Mientras sea de da, tengo que trabajar"

La sentencia WHILE viene a ser como el primer eslabn de la cadena evolutiva de un


bucle, es decir, el bucle ms sencillo que hay. Lo que hace esta sentencia no es ms que
decirle a PHP que ejecute las sentencias que contenga la instruccin WHILE, tanto tiempo
como la expresin se evale como verdadera (TRUE).

La sintaxis de WHILE es:

while(expresin){
sentencias
}

Como ejemplo pondremos lo siguiente:

<?php
$a = 1;
while($a < 11){
echo $a."<BR>";
$a++;
}
?>

El resultado en nuestro navegador sera el siguiente:

Observaciones necesarias

Como podrn observar, la sentencia WHILE, como se habrn dado cuenta, contiene el
operador de comparacin menor que (<), el cual le dice a while que la variable $a NO
DEBE llegar al nmero 11. Lo mismo pudo haberse logrado cambiando la sentencia por
"$a <= 10;", lo cual, de hecho hubiese sido ms exacto y ms legible.

Por otro lado, por favor observen la sentencia echo $a."<BR>";

Como ya habrn podido apreciar, despus de la variable, estamos utilizando el operador


punto (.), el cual, como ya sabemos, concatena resultados de cadena. En realidad, en
nuestro ejemplo, la concatenacin es una seudoconcatenacin, ya que en realidad, el
operador punto slo le dice a PHP que despus de la primera pasada por la variable $a (en
la cual dicha variable vale 1), agregue un salto de lnea de HTML, es decir la etiqueta
<BR>, de tal manera que al repetirse el bucle, siendo que $a todava es menor que 11, la
respuesta siguiente (2), se imprima en otra lnea. Este mismo ciclo o bucle, se repetir hasta
que la expresin se haga falsa, es decir cuando $a deje de ser menor que 11.

En nuestra prxima entrega, una forma distinta de WHILE.


La vida es corta!, a programar se ha dicho.

Estructuras de Control (DO...WHILE)


DO...WHILE
"Haz la limpieza, mientras an es de da"

La similitud entre los bucles DO...WHILE y los bucles WHILE es enorme, salvo que en los
bucles DO...WHILE se garantiza la ejecucin de las sentencias internas al menos una vez,
dado que la validez de la expresin a evaluar se efecta hasta el final de la sentencia, cosa
que no necesariamente debe pasar en un bucle WHILE, el cual evala la validez de la
expresin al principio de la sentencia.
La sintaxis de la sentencia DO...WHILE es la siguiente:

DO{
sentencias
}WHILE(expresin)

Siguiendo la misma lnea del ejemplo anterior, tendramos:

<?php
$a = 1;
do{
echo $a."<BR>";
$a++;
}while($a<=10)

?>

Obteniendo exactamente el mismo resultado en pantalla:

Algo que debemos agregar de DO...WHILE en cuanto al ejemplo propuesto, es que aunque
$a hubiese valido 11, la impresin de la pantalla se hubiese llevado a cabo. Por qu?,
porque la evaluacin de la sentencia se llev a cabo hasta el final del bucle. Esto es una
observacin realmente vital, pues si la intencin de nuestro programa hubiese sido la nunca
imprimir el nmero 11 en pantalla, entonces nuestro programa hubiese fallado de la manera
ms catastrfica posible. Por favor tengan en cuenta lo anterior cuanto utilicen
DO...WHILE

Suficiente sobre DO...WHILE, en la prxima entrega, uno de los bucles ms poderosos: el


fabuloso FOR.

"Carpe Diem!"

Estructuras de Control (FOR)


FOR
"Para todos estos nios, reparte estos caramelos"

La enorme belleza del bucle FOR, es que todo su poder se resume en una sola fila, la igual
que toda su complejidad. La sintaxis de un bucle FOR es la siguiente:
for (exp1; exp2; exp3)
La primera expresin (exp1) se ejecuta una vez, al principio del bucle.
La segunda expresin (exp2) se evala al comienzo de cada iteracin o retorno al bucle.
La tercera expresin (exp3) se ejecuta al final de cada iteracin o retorno al bucle.
Nuestro ejemplo sera:

<?php
for($i = 0; $i <= 10; $i++){
echo "Esta es la fila ".$i;
echo "<BR>";
}
?>

El resultado en pantalla sera el siguiente:

Observaciones:
En primer lugar, debemos notar que la variable $i es inicializada en 0 y termina en 10, por
consiguiente, y en estos momentos podr parecer totalmente irrelevante pero puede llegar a
salvarles la vida, el nmero de filas es 11 y no 10.

Por otro lado, la variable $i es inicializada en la declaracin del bucle FOR y no antes.

Bien, los bucles en PHP representan, como ya vimos, la forma de llevar a cabo una serie de
sentencias, basados en la evaluacin, (cierta o falsa) de las expresiones contenidas. En una
entrega posterior vamos a aprender una manera muy sencilla de tomar decisiones, siempre
claro, dentro de las estructuras de control.
Por el momento, hasta pronto.

Estructuras de Control (BREAK y CONTINUE)


En muchas ocasiones, es necesario forzar al flujo del programa para que se detenga o para
que contine. Para esos casos, existen dos sentencias que podemos utilizar break y
continue.

BREAK
"De aqu no has de pasar"

La sentencia BREAK escapa del flujo de una sentencia IF, FOR o SWITCH (tranquilos,
SWITCH lo veremos en la prxima entrega).

COTINUE
"De aqu en adelante, no me interesa lo que hagas"

Esta sentencia se utilizar dentro de la estructura de un bucle para saltar el resto de la


iteracin actual del bucle y continuar la ejecucin al comienzo de la iteracin siguiente.

En la siguiente entrega trata sobre una de las estructuras de control ms utilizadas despus
de IF y FOR: la sentencia SWITCH.
Por el momento, Hasta Pronto

Estructuras de Control (SWITCH)


Como ya vimos, las estructuras IF...ELSEIF...ELSE, son muy tiles para decidir el flujo de
nuestro programa dependiendo de la evaluacin de una expresin. Sin embargo, cuando las
opciones se vuelven muy grandes, el anidamiento de las sentencias IF...ELSEIF...ELSE se
vuelve un verdadero problema en cuanto a estilo y legibilidad. Habr una manera de
solventar este problema?... CLARO! para eso tenemos a nuestro buen amigo SWITCH.

SWITCH
"Como un ferrocarril cambiando de va"
La sentencia switch evala la expresin y dependiendo del valor de la expresin, as se
llevar a cabo un "caso" u otro. La sintanxis de SWITCH es la siguiente:
switch(expresin){
case 1:
sentencias a ejecutarse en caso de que expresin valga 1;
break;
case 2:
sentencias a ejecutarse en caso de que expresin valga 2;
break;
default:
sentencias a ejecutarse en caso de que expresin no cumpla con ninguno de los valores
anteriores;
}
Como podrn apreciar, la sentencia break se ha colocado al final de cada posible caso de
valor de expresin, dicindole a PHP que, si el valor de un caso especfico se cumple, el
siguiente caso no habr de ser evaluado, sino que el flujo de nuestro programa continuar
inmediatamente despus de la sentencia SWITCH. Adems, noten la presencia de la palabra
default, la cual est en nuestro SWITCH como un salvavidas, pues en caso de que
expresin no concuerde con ninguno de los posibles casos, la sentencia default se
ejecutar.
Ejemplo:

<?php
$nombre = "Eva";
switch($nombre){
case "Adan":
echo "El nombre es Adn";
break;
case "Abel":
echo "El nombre es Abel";
break;
case "Eva":
echo "El nombre es Eva";
break;
default:
echo "No hay nombre que concuerde";
}
echo "<BR>Esto est fuera de SWITCH";
?>
La salida en pantalla sera la siguiente:

SWITCH, como ya digimos es una forma de abreviar el trabajo de una serie de


IF...ELSEIF...ELSE anidadas en un cdigo mucho ms elegante y mucho ms legible a la
hora de hacer una depuracin para encontrar posibles errores o "bugs" en nuestro cdigo.

Bien, despus de esto podemos dar por finalizadas las estructuras de control, en nuestra
prxima entrega vamos a hablar de los arreglos (arrays) y las ventajas que stos
representan.
Por el momento, como siempre, hasta pronto.

Arreglos Simples
Como ya vimos con anterioridad, las variables son contenedores de datos en los que
nosotros (o como veremos ms adelante, el USUARIO) guarda datos que, en un
determinado momento y con la ayuda de otros tantos datos, podr convertirse en
informacin. Sin embargo, las variables que hemos visto hasta hoy son del tipo $a =
un_valor. Habr ocasiones en las que guardar ms de un valor en una sola variable se har
necesario, pero en las variables vistas hasta este momento, no es posible, pues si asignamos
primero un valor a una variable y luego le asignamos otro, el nuevo valor sustituir al
primero.
Para resolver nuestro problema, PHP tiene los arreglos o arrays, que no son ms que
variables con la capacidad de guardar ms de un dato.
Para declarar un arreglo o array, todo lo que tenemos que hacer es lo siguiente:
<?php
$libros = array("Don Quijote de la Mancha", "La Saga/Fuga de J.B.", "El Jarama",
"Ulises");
echo $libros[3];
?>
Lo anterior, dicho en simples y sencillas palabras dice:
1. La variable $libros es un arreglo de 4 elementos los cuales son "Don Quijote de la
Mancha", "La Saga/Fuga de J.B.", "El Jarama", "Ulises"
2. Mande a la pantalla el elemento 4 del arreglo (OJO, no es un error de dedo eso del
elemento 4) .
Nuestro resultado en pantalla es:

Antes de que la curiosidad nos corroa (claro, si ustedes ya saben programar, por ejemplo en
C/C++ el suspenso se les muri hace mucho), hemos de aclarar que la variable $libros
contiene 4 elementos: "Don Quijote de la Mancha", "La Saga/Fuga de J.B.", "El
Jarama", "Ulises", sin embargo, la instruccin echo dice echo $libros[3]. La razn de
esto es que los arreglos comienzan su conteo de elementos a partir de cero (0). Hay que
hacer notar que lo anterior es de suma importancia, pues no podemos hacer referencia a un
elemento inexistente dentro de un arreglo, por lo tanto, si nuestra intencin es referirnos al
elemento 4 del arreglo, debemos comenzar nuestro conteo desde 0, con lo que la
instruccin sera como ya hemos visto echo $libros[3].
En caso de que se estn preguntando el resultado de la referencia $libros[4], en la mayora
de las ocasiones no es ms que una pgina en blanco, sin embargo, el resultado tambin
podra ser un tanto inesperado. Como quiera que sea, por favor recuerden siempre de
empezar su conteo desde 0, algo seguro es que PHP no lo olvidar jams.
Eso es en cuanto a lo ms bsico de los arreglos, en nuestro prximo encuentro, algo sobre
arreglos asociativos y los arreglos multidimensionales.
Por el momento, recuerden que como bien dice Sabina: "No hay nostalgia peor, que aorar
lo que nunca jams sucedi!", as que no dejen para NUNCA, lo que pueden hacer DE
INMEDIATO.

Arreglos Asociativos y Multidimensionales


Arreglos Asociativos
Supongamos que estamos construyendo una pgina Web en la que, dependiendo del idioma
escogido, as se desplegar un saludo en nuestra pantalla del navegador.
Una solucin podra ser la siguiente:
<?php

$saludos = array("Hello!", "Salut!", "Que taaaaaal!");


echo $saludos[2];
?>
La impresin en pantalla sera:

Antes que nada, por qu se imprime el tercer saludo y no el nmero 2? (Una multa de
chocolates si no sabe la respuesta!)
Sin embargo, lo ms lgico sera que, en base a la seleccin de un idioma, el saludo
respectivo se desplegara. Para ello utilizamos los arreglos asociativos.
Considere ahora la siguiente adicin a nuestro ejemplo anterior:
<?php
$saludos = array("Ingls"=>"Hello!", "Francs"=>"Salut!", Espaol"=>"Que
taaaaaal!");
echo $saludos["Espaol"];
?>
El resultado en pantalla es exactamente el mismo que en el ejemplo anterior, pero claro,
esta nueva adicin nos permite ser un poco ms elegantes, adems de hacernos ms fcil la
correccin o modificacin de nuestro cdigo, haciendo referencia a la generalidad y no a la
especificidad.

Arreglos Multidimensionales

Hasta hoy hemos trabajado con arreglos de una sola dimensin, es decir con un slo ndice
(el ndice es el nmero que encerramos dentro de los corchetes en la referencia al array).
Sin embargo, existen los arreglos multidimensionales de la forma $a[x][y]. Podemos pensar
en el ejemplo anterior como una tabla en la que el primer ndice son las filas y el segundo
las columnas, de tal manera que si tuvisemos el siguiente arreglo:

$canciones = array( array("Quin me ha robado el mes de abril?", "El Blues de la


Soledad", "El breve espacio",),
array("Naturaleza muerta", "Cuando el mar te tenga", "Luca"));

Y luego enviamos un echo $canciones[0][1], la impresin en pantalla nos dara como


resultado "El Blues de la Soledad" (Y ese no es un resultado, es EL resultado!)
Para entender un poco mejor, hemos de decir que podemos hacer una clasificacin dentro
de nuestros arreglos multidimensionales para que la clasificacin e impresin en pantalla
nos resulte ms sencilla. Para ver esto, por favor observen el siguiente vdeo:

Bien, espero que la parte de arreglos les sea de mucha utilidad para crear programas
interesantes (sabemos perfectamente que s). En nuestra prxima entrega, vamos a aprender
a trabajar y a operar con cadenas.
Por el momento, suerte, mucha diversin con sus programas, y hasta pronto

Operaciones con Cadenas

La siguiente frase: "Pablito clav un clavito en la calva de un calvito", es una cadena de


caracteres que puede ser grabada en una variable en PHP de la forma que ya conocemos, es
decir de la forma $trabalenguas = "Pablito clav un clavito en la calva de un calvito".
Sabiendo lo anterior, trabajemos con los operadores de cadenas en PHP.
strlen:
La funcin strlen obtiene la longitud de una cadena y devuelve un nmero entero.
Aplicando nuestra variable, el cdigo es el siguiente:
<?php
$trabalenguas = "Pablito clav un clavito en la calva de un calvito";
echo strlen($trabalenguas);
?>
El resultado de esto es el siguiente:

substr:
Esta funcin devuelve una subcadena de la cadena original o, dicho de otra forma, una
parte de la cadena. Los argumentos de substr son tres: el primero es la cadena o variable
que contiene la cadena; el segundo es un nmero entero que representa la posicin en la
cual la subcadena comenzar a ser extrada; y el tercer argumento opcional, que es la
cantidad de caracteres que sern extrados. Con nuestra cadena, el ejemplo sera:
<?php
$trabalenguas = "Pablito clav un clavito en la calva de un calvito";

echo substr($trabalenguas, 17);


?>
El resultado en pantalla es el siguiente:

str_replace:
Esta funcin reemplaza una subcadena dentro de la cadena original, por otra subcadena.
Los argumentos que esta funcin recibe son tres: la subcadena que ha de buscar; la
subcadena que que debe reemplazar a la primera; y la cadena original o la variable que
contiena la cadena original.
<?php
$trabalenguas = "Pablito clav un clavito en la calva de un calvito";
echo str_replace("Pablito", "Pedrito", $trabalenguas);
?>
Nuestro resultado sera:

Las anteriores son probablemente las funciones de cadena ms utilizadas. Existen muchas
otras funciones, pero hara falta mucho ms espacio para explicarlas todas, sin embargo
vamos a mencionar algunas ms que podran ser de suma importancia.
strtolower:
Pasa de maysculas a minsculas. El nico argumento que recibe es la cadena o la variable
que contiene la cadena.
Si $a = "ABCD", entonces echo strtolower($a); imprimira abcd.
strtoupper:
Pasa de minsculas a maysculas. El nico argumento que recibe es la cadena o la variable
que contiene la cadena.
Si $a = "abcd", entonces echo strtoupper($a); imprimira ABCD.
substr_count:
Cuenta el nmero de apariciones de una subcadena.
echo substr_count ("Esta es la regla del es", "es"); imprime 2, pues la subcadena "es"
aparece 2 veces en la cadena original, la cadena Esta no es contada pues, si bien Esta
comienza con es, la primera de las letras es mayscula.
ucwords:
Hace que la primera letra de cada palabra de la cadena se convierta a mayscula.
echo ucwords("hola mundo"); imprime Hola Mundo.
Un breve ejemplo de las funciones de cadena es el siguiente:

Esto es probablemente lo ms importante en cuanto a funciones de cadena. En nuestra


prxima entrega aprenderemos sobre las expresiones regulares dentro de PHP. Pero eso ser
en la prxima entrega. Hasta pronto.

Expresiones Regulares

Debemos entender por una expresin regular una cadena de caracteres que se encuentra con
regularidad en una cadena compleja de caracteres. PHP implementa una serie de funciones
para la manipulacin de expresiones regulares. En esta entrega vamos a estudiar esas
funciones y su utilidad en un programa de PHP.
Las funciones para la manipulacin de expresiones regulares ms utilizadas que podemos
encontrar en PHP son:

ereg()

ereg_replace()

eregi()

eregi_replace()

Todas estas funciones toman como primer argumento la cadena o expresin regular con la
que se ha de trabajar.
Empecemos:
ereg("expresin", $contenedor, $arreglo)
Encuentra coincidencias de una expresin regular dentro de una cadena.
ereg("rojo", $colores);
El ejemplo anterior devolvera verdadero (TRUE), si la cadena de caracteres "rojo" se
encuentra en la variable $colores. Los argumentos que toma son: la expresin regular que
se ha de buscar, la variable que contiene la cadena, un argumento opcional en el que se
guardan las coincidencias.
As, el siguiente cdigo:
<?php
$expresion = "Rpidos corren los carros por el ferrocarril";
if(ereg("arr", $expresion, $regs)){
for($i=0; $i<=count($regs);$i++){
echo "Coincidencia $i<BR>";
}

}
?>
Nos presenta el siguiente resultado:

Como podemos ver, el programa encontr dos coincidencias de la expresin regular (o


cadena) "arr" y nos lo muestra en pantalla.
ereg_replace("expresion", "reemplazo", $contenedor)
La funcin reemplaza una cadena por otra, contenidas dentro de la variable contenedor, de
tal forma que al enviar una salida a la pantalla, se imprimir la cadena con los reemplazos
respectivos, sustituyendo a la expresin regular original.
Esto trabaja de la siguiente manera:
<?php
$expresion = "Rpidos corren los carros por el ferrocarril";
echo ereg_replace("Rpidos", "Lentos", $expresion);
?>
Produce la siguiente salida:

Como podemos ver, la expresin "Rpidos", ha sido sustituida por "Lentos".


eregi("expresin", $contenedor, $arreglo)
Encuentra coincidencias de una expresin regular dentro de una cadena sin diferenciar
maysculas de minsculas. Por lo dems, el funcionamiento es idntico a ereg().
eregi_replace("expresion", "reemplazo", $contenedor)
La funcin reemplaza una cadena por otra, contenidas dentro de la variable contenedor, de
tal forma que al enviar una salida a la pantalla, se imprimir la cadena con los reemplazos
respectivos, sustituyendo a la expresin regular original, sin distincin entre maysculas y
minsculas.
Esto es posiblemente lo ms utilizado en cuanto a las expresiones regulares dentro de PHP,
espero les sea de utilidad. En nuestra prxima entrega hablaremos de las funciones y su
poderosa utilidad.
Por el momento, recuerden que como dijo Julio Verne: "Todo lo que una persona puede
imaginar, otras podrn hacerlo realidad". Hagamos nuestros sueos realidad,... siempre.

Las Funciones Parte 1


Hasta este momento hemos utilizado algunas funciones predifinidas en PHP, como las de
manejo de expresiones regulares, o las de operaciones con cadenas, pero no tenemos
totalmente claro lo que es una funcin. Esto podr sonar a conducir un automvil mucho
antes de aprender a caminar, pero no es as, ya que las funciones predefinidas en PHP son
ms sencillas de utilizar que una funcin definida por el usuario, por una sencilla razn: en
las funciones predifinidas, las reglas de cmo operar con ellas ya vienen dadas por PHP; en
cambio en las definidas por el usuario (lase nosotros mismos), es necesario tener claro
qu queremos que nuestra funcin haga, qu tipo de parmetros ha recibir, que tipo de valor
ha de retornar, en caso de que retorne algn valor, en dnde habremos de hacer la llamada a
la funcin, etc.

Todo lo anterior, es precisamente lo que aprenderemos en esta entrega.


Para comenzar, diremos que una funcin es un conjunto de instrucciones que se ejecutan
cada vez que son llamadas en el cuerpo central de nuestro programa. La utilidad de las
funciones es enorme, si nos ponemos a pensar que una llamada a una funcin nos ahorrara
decenas (o cientos) de lneas de cdigo, pues bastara una sola llamada a la funcin cada
vez que sea necesario, en vez de escribir una y otra vez el mismo cdigo con distintos
parmetros.

Una funcin est compuesta por la palabra reservada para PHP function, un nombre y una
lista de parmetros, en caso que reciba parmetros. Para declarar una funcin, debe hacerse
de la siguiente forma:

function nombre_de_funcion (lista_de_parametros)

Un breve ejemplo es el siguiente:

<?php
function hola(){
echo "<B>Esta es una prueba</B>";
}
echo "Este es el cuerpo de nuestro programa";
echo "<BR>";
echo "Aqu est la llamada a la funcin:<BR>";
hola();
?>

El resultado de este pequeo programa es el siguiente:

En el ejemplo, la funcin hola(), no retorna ningn valor, y no recibe parmetro alguno


(por eso los parntesis vacos). Todo lo que hace es enviar un mensaje a la pantalla que dice
"Esta es una prueba" con un atributo de negrita. Una vez ms, la utilidad real de esta
funcin estriba en el hecho de que si en algn momento nuestro programa crece de manera
exponencial y se nos hace necesario imprimir, digamos treinta veces la cadena "Esta es
una prueba" (vaya un proyecto de programacin que sera, no lo creen?), sera necesario
escribir treinta veces la instruccin echo "Esta es una prueba"; lo cual se hace un poco
ms difcil que simplemente escribir la llamada a la funcinhola(). Por otro lado, en caso de
que necesitasemos cambiar el mensaje desplegado, tal vez por algo un tanto ms
profesional como "Esta ya no es una prueba", es mucho, mejor an, muchsimo mejor
cambiar este mensaje una vez, en la llamada a la funcin, que treinta veces, en cada
instruccin echo.

Como habrn visto, las funciones nos pueden ahorrar una cantidad enorme de trabajo. Por
esa razn, PHP incluye en sus libreras, una cantidad bastante grande de funciones
preformateadas, cosa que agradecemos en cantidad.

Nuestra siguiente reunin trata sobre los parmetros en las funciones (despus de esto... la
locura) y para que nos sirven.

De momento, vivan cada da como el ltimo de su vida!, programen al mximo... disfruten


de la existencia.

Las Funciones Parte 2 (Parmetros y Valores de Retorno)


Parmetros
Los parmetros en las funciones son los valores que la funcin recibe para poder operar y
llevar a cabo todas las instrucciones que dicha funcin tiene en su cuerpo.
Valor de retorno
El valor de retorno es el valor que la funcin retorna al cuerpo del programa o al cuerpo de
la funcin que la llam (si, como ya habrn adivinado, las funciones tambin pueden
anidarse y una funcin puede llamar a otra funcin) para poder operar con ese valor
retornado.
Para saber cmo funcionan los dos conceptos anteriores, veamos otro ejemplo:
<?php
function iva($precio_original){
$precio_final = ($precio_original * 0.13) + $precio_original;
return $precio_final;
}
echo "<CENTER>Clculo del Impuesto sobre el Valor Agregado (IVA)</CENTER>";
$producto = "Disco de Joaqun Sabina";
$precio_original = 15.50;
echo "El producto es: ".$producto."<BR>";
echo "El precio original es: ".$precio_original."<BR>";
echo "El precio final es: ";
echo iva($precio_original);
?>

El resultado en pantalla es el siguiente:

Bien, como podrn ver, el trabajo con funciones facilita la existencia del programador (y
vaya que s lo hace) de una forma enorme. En el caso de que necesitaremos cambiar el
porcentaje del impuesto (ojal que a un porcentaje menor), bastara con cambiar el valor
nica y exclusivamente en el cuerpo de la funcin, y no en cada operacin que efectuamos
a lo largo del programa.

De esta manera, el parmetro que la funcin ha recibido es el precio original del producto
(15.5) y el valor de retorno es el valor contenido en la variable $precio_final, el cual es el
resultado de una operacin matemtica llevada a cabo dentro de la funcin.
Hasta aqu con la primera parte de las funciones, en nuestra siguiente entrega aprenderemos
un poco ms sobre los parmetros de las funciones.
Por el momento, suerte, diversin con sus programas y hasta pronto.

Funciones Parte 3 (Parmetros por valor, por referencia


y por defecto)
En esta entrega vamos a aprender sobre los parmetros en las funciones. Primero que nada
es necesario mencionar que la informacin que se le pasa a las funciones puede pasrsele
por medio de una serie de constantes y/o variables separadas por comas, como ya vimos en
la entrega anterior. Los parmetros que se pasan a las funciones pueden ser por valor, por
referencia y parmetros por defecto.

Parmetros por valor:


Por defecto, los parmetros se pasan por valor. Esto significa que si el valor de la variable
que se pasa como parmetro a la funcin sufre algn cambio en su valor dentro de la
funcin, ste cambio no afectar al valor original de la variable.
El ejemplo siguiente aclara las dudas de mejor manera:

<?php
$original = "Esto es fuera de la funcin";
function cambio($original){
$original = "Esto es dentro de la funcin";
echo $original;
}
echo "Fuera de la funcin la variable es: ";
echo $original."<BR>";
echo "Dentro de la funcin, la variable es: ";
cambio($original);
echo "<BR>Esto est fuera de la funcin de nuevo: ";
echo $original;
?>

Lo anterior produce el siguiente resultado:

Parmetros por referencia:


Cuando se pasan parmetros por referencia, le damos autorizacin a la funcin (qu tal?,
verso sin mucho esfuerzo!) de cambiar permanentemente el valor original de la variable.
Para pasar siempre un parmetro por referencia, basta con anteponer un ampersand (&) al
nombre del parmetro en la definicin de la funcin de la siguiente forma:

<?php
$original = "Esto es fuera de la funcin";
function cambio_total(&$original){
$original = "Esto es dentro de la funcin y fuera de la funcin";
echo $original;
}
echo "Fuera de la funcin la variable es: ";
echo $original."<BR>";
echo "Dentro de la funcin, la variable es: ";
cambio_total($original);
echo "<BR>Esto est fuera de la funcin de nuevo: ";
echo $original;

?>

El cdigo anterior produce la siguiente salida:

Como se darn cuenta, la variable $original cambia definitivamente de valor al entrar al


cuerpo de la funcin, gracias a que su parmetro (es decir la variable $original) se ha
pasado por referencia.
Parmetros por defecto:
Los valores por defecto son expresiones constantes y no variables, que se pasan a la
funcin. Una observacin importante que debemos hacer, es que los parmetros por defecto
deben ser declarados a la derecha de cualquier parmetro que no sea por defecto pasado a la
funcin.
El ejemplo siguiente demuestra lo que significa pasar un parmetro por defecto:
<?php
function por_defecto($autor, $libro = "Cien aos de soledad"){
return "El libro es $libro y su autor es $autor";
}
echo por_defecto("Gabriel Garca Mrquez");
?>
Como ya haban imaginado, lo anterior produce la siguiente salida:

Muy bien, en cuanto a funciones, lo anterior es lo ms importante. Estamos seguros que con
esto, sus programas se volvern verdaderamente intensos e interesantes. En nuestra
prxima entrega, aprenderemos sobre estilo y algunos consejos de cmo hacer nuestros
programas ms profesionales y documentados.
Por el momento, hasta pronto!

El Estilo.Indentacin
Hasta el momento, en cada uno de los "miniprogramas" que hemos desarrollado, hemos
seguido una cierta cantidad de normas que, si bien no son obligatorias para construir un
programa en PHP, resultan verdaderamente vitales (y en caso de que no trabajen solos, sino
con un grupo de programadores, es una de las costumbres ms importantes y agradecidas
por los dems) en programas complejos y con muchas lneas de cdigo. A continuacin,
veremos con detalle algunas de estas normas, adems de agregar otras tantas.
Indentacin
La indentacin en los programas (no slo en los desarrollados en PHP, sino en casi todos
los lenguajes de programacin) es un buen hbito para la mayor comprensin de los
bloques de cdigo que se van anidando, y que representan un nmero de instrucciones que
llevan a cabo un fin comn (en la gran mayora de las ocasiones).
As por ejemplo, comparemos estos dos segmentos de cdigo:
<?php
$producto = "Camisa";
function descubriendo($producto){

if ($producto == "Camiseta"){
echo "El producto es una Camiseta";
echo "Adis";
}
elseif ($producto == "Camisa"){
echo "El producto es una Camisa";
echo "Adis";
}
else echo "No hay producto";
}
echo "El producto guardado es: <BR>";
descubriendo($producto);
?>
<?php
$producto = "Camisa";
function descubriendo($producto){
if ($producto == "Camiseta"){
echo "El producto es una Camiseta";
echo "Adis";
}
elseif ($producto == "Camisa"){
echo "El producto es una Camisa";
echo "Adis";
}
else echo "No hay producto";
}
echo "El producto guardado es: <BR>";
descubriendo($producto);
?>

Si bien ambos programitas hacen exactamente lo mismo, con cul de los dos se quedaran?
La indentacin nos sirve para comprender el orden en el que el programa fluye, de tal
forma que nos resulte muy difcil perdernos, por ejemplo, en el orden en el que un
if...elseif...elseif...elseif...else, est anidado en nuestro programa.
La indentaci, adems, no afecta el tamao de nuestro archivo, ya que los espacios en
blanco no son tomados en cuenta por el "compilador" de PHP.
En nuestra prxima reunin, hablaremos sobre los comentarios y su enorme importancia.
De momento, la peor de las batallas, es precisamente la que nunca se lleva cabo (que
conste, esto tiene que ver exclusivamente con las batallas que libramos con nosotros
mismos y nuestros conocimientos, ninguna, absolutamente ninguna otra batalla), sigan
programando y hasta pronto!.

El Estilo. Comentario
Continuando con el estilo y la estandarizacin, debemos hablar sobre una de las armas de
entendimiento ms fabulosas que los lenguajes de programacin (incluyendo PHP, claro
est) tienen: LOS COMENTARIOS.

La razn de la existencia de los comentarios estriba en la importancia de mantener el flujo


de nuestro programa bien documentado, de tal manera que, si otro programador llega y
pretende continuar o aadir algo a nuestro programa, pueda, gracias a los comentarios,
enterarse de los procesos, variables y estructuras de control que existen en nuestro
programa, a la par de saber para qu sirve cada una de stas.

Los comentarios en PHP pueden hacerse de dos formas, ambas al estilo C/C++, es decir:
los comentarios de lnea, que se hacen aadiendo al final de cada lnea de cdigo los
caracteres // ms el respectivo comentario y los comentarios multilnea, es decir que
abarcan ms de una lnea de nuestro programa, que inician con /* y terminan */, este
comentario puede abarcar ms de una lnea.

Imaginemos el siguiente programa:

<?php
$a = 15.55;

function calculo($a){
$m = 0.13;
return $f = ($a * $m) + $a;
}
echo "El precio final del producto es: ".calculo($a);
echo "Gracias por su compra<BR>";
echo "Vuelva Pronto!";
?>

El programa anterior produce una salida del siguiente tipo:

El programa obviamente cumple con su funcin, pero comparemos la siguiente adicin:

<?php
$a = 15.55; //variable que representa el precio original del producto sin impuesto

function calculo($a){ //funcin que calcula el precio final del producto, con todo e
impuesto
$m = 0.13; //variable que guarda el porcentaje del impuesto que se aplicar
return $f = ($a * $m) + $a; //clculo del impuesto al producto y retorno del valor al
cuerpo del programa
}
echo "El precio final del producto es: ".calculo($a)."<BR>"; //Impresin en pantalla
del precio final del producto
echo "Gracias por su compra<BR>"; //Despedida
echo "Vuelva Pronto!"; //Despedida
?>

La salida es exactamente la misma, es decir:

Lo cual nos da a entender que los comentarios no cambian en lo absoluto los resultados del
programa, pero nos dan una idea clara de lo que cada una de las lneas de cdigo de nuestro
programa hacen.

En nuestro siguiente encuentro hablaremos de lo que significa la estandarizacin en nuestro


programas, por el momento, por favor recuerden que la vida es bella y que los programas
son hermosos, es decir, A vivir y a Programar!, hasta pronto.

El Estilo. Estandarizacin
La estandarizacin de un programa, no es ms que tener las ideas claras de lo que queremos
que nuestro programa haga, y la forma en la que nuestro programa habr de ser construido.

Cuando estamos construyendo un programa es necesario aclarar la forma en la que el flujo


del programa habr de correr, es decir, tener una idea de las ramificaciones, decisiones,
funciones, variables, etc., que nuestro programa debe tener. As por ejemplo, supongamos
que tenemos que hacer un programa que calcule el precio de un producto dependiendo de
su precio original, agregando un impuesto especfico. Cmo aplicaramos la
estandarizacin?

Empecemos por decir que debemos de tener clara la forma en la que nuestro programa se
va a presentar ante el usuario. Siendo que an no hemos visto las salidas HTML
combinadas con PHP, la salida ser,... digamos no tan espectacular como debera. Sin
embargo, un comienzo en nuestra estandarizacin debera ser el preguntarnos desde lo ms
trivial hasta lo ms esencial como:

La justificacin de los diferentes tipos de texto ser?

La insercin del precio original ser a travs de?

La presentacin de la salida ser?

Habr indentacin en nuestro programa o no?

En dnde insertaremos los comentarios?

Cuntas funciones tendr, en caso de tener funciones?

Las respuestas a lo anterior podran ser:

1. Los ttulos estarn centrados, con una letra Verdana, con el atributo de resaltado o
negrita y en color Azul.
2. La insercin de los textos ser a travs de cuadros de texto
3. La salida ser presentada en texto plano, en letra Times New Roman
4. El cdigo fuente de nuestro programa ser indentado
5. Los comentarios sern de todo tipo, dependiendo del largo del comentario
6. Slo habr un funcin en nuestro programa, la cual calcular el precio final, en base
el parmetro del precio original del producto.

En esta seccin podramos decir algo del pseudocdigo, pero nos requerira varios captulos
extra. Sin embargo, podemos decirles que el pseudocdigo es el salvavidas de los
programadores a gran escala, sobre todo porque aclara muchas ideas en cuanto a la forma
en la que el cdigo fuente de nuestro programa habr de escribirse. El pseudocdigo es la
"traduccin" de los comandos y funciones que un programa habr de desarrollar con base
en su cdigo fuente. As por ejemplo:

...
declaracin de variable precio
declaracin de la funcin calculo
la variable precio final ser igual a la multiplicacin de la variable precio por el valor del
impuesto ms el precio original
retornar el valor de la variable precio_final
...

Este segmento de pseudocdigo sera "traducido" a PHP como:


...
$precio = 17.00

function calculo($precio){
return $precio_final = ($precio * 0.13) + $precio;
}
...

Como puede verse, el pseudocdigo ayuda a clarificar lo que nuestro cdigo fuente ha de
hacer. Si bien es cierto en este pequesimo fragmento de cdigo el pseudocdigo parece
inservible e incluso una fuente de atraso, la verdad es que en programas de gran calibre,
puede ser la diferencia entre un programa que corre sin problemas y uno que no.
Muy bien, en nuestras prximas entregas, vamos a desarrollar el proyecto propuesto
algunos prrafos arriba. Claro est, primero que nada aprenderemos sobre la combinacin
entre HTML y PHP.
De momento, "All you need is LOVE", as que... ama a tus programas como a t mismo.
Hasta Pronto.

Salidas HTML. Nuestro proyecto parte 1


Asumimos desde ya que todos poseemos un conocimiento al menos bsico de lo que
implica HTML y una pgina web bsica, de tal manera que no nos vamos a detener a
explicar con detalles para qu sirve cada vieta HTML que iremos insertando. (Para ms
referencia pueden consultar el curso de HTML brindado en aulafcil.com)
En esta entrega vamos a aprender de una manera ms detallada la forma en la que podemos
combinar HTML y PHP para generar una pgina dinmica que no solamente servir para
usos en Internet, sino tambin puede servir como un programa en una red interna.
Recordamos todos el proyecto a desarrollar?
Slo en caso de que no: tenemos que hacer un programa que calcule el precio de un
producto dependiendo de su precio original, agregando un impuesto especfico.
Recordamos todos la estandarizacin que ibamos a tener?
De nuevo, en caso de que no:
1. Los ttulos estarn centrados, con una letra Verdana, con el atributo de resaltado o
negrita y en color Azul.
2. La insercin de los textos ser a travs de cuadros de texto

3. La salida ser presentada en texto plano, en letra Times New Roman


4. El cdigo fuente de nuestro programa ser indentado
5. Los comentarios sern de todo tipo, dependiendo del largo del comentario.
6. Slo habr un funcin en nuestro programa, la cual calcular el precio final, en base
el parmetro del precio original del producto.
Agregaremos un par de cosas ms:

Las vietas HTML estarn siempre en mayscula.

Las sentencias PHP estarn siempre en minscula


Vamos por partes, les parece?
En primer lugar vamos a nuestro editor de texto y abramos un documento nuevo:

En este documento nuevo comenzaremos la construccin de nuestra pgina dinmica de la


siguiente manera:

<HTML>
<HEAD>
<TITLE>Proyecto Pgina Dinmica</TITLE>

</HEAD>
<BODY>
<!-- Formato del Ttulo de la pgina-->
<FORM METHOD = "POST" ACTION = "proyecto_1.php">
<FONT FACE = "Verdana" COLOR = "#1200FF">
<CENTER><B><H2>Sistema de Clculo de Impuesto de
Producto</H2></B></CENTER>
</FONT>
Por favor digite el precio del producto:
<INPUT TYPE = TEXT NAME = "precio_original" MAXLENGHT = 5 >
<P>
<INPUT TYPE = "Submit" VALUE = "Calcular Precio">
<?php
/
*************************************************************************
********************
* Programa que calcula el precio final de un producto, a partir de su precio original
ms un impuesto
* Autor:
* Fecha:
*************************************************************************
********************/
function calculo($precio_original){ //Funcin que calcula el precio final
return $precio_final = ($precio_original * 0.13) + $precio_original; //retorna precio
final
}

echo "<BR><H2><CENTER>El precio final es:


".calculo($precio_original)."</CENTER></H2>";
/*La salida ser centada como Header 2, incluyendo el precio final (calculado en la
funcin calculo()*/
?>
El resultado es el siguiente:

En nuestras siguientes entregas, vamos a continuar con este proyecto, el cual crecer, y se
mejorar. Esperamos que en cuanto a las salidas HTML todo est claro.
De momento, Hasta Pronto!

Funcin date(). Nuestro proyecto parte 2


Antes de continuar con nuestro proyecto, expliquemos una funcin que nos ser de gran
ayuda cuando desarrollemos nuestro programa.Hablamos de una de las funciones
predefinidas por PHP: date().
La funcin date() presenta la fecha con base a ciertos parmetros que se escriben dentro de
los parntesis. Dichos parmetros son:

formato en
caracteres

Decripcin

Valor devuelto

En minscula, retorna am o pm

am o pm

En Mayscula, retorna AM o PM

AM o PM

Presenta tiempo de Internet

000 a 999

Fecha tipo ISO 8601 (agregado en PHP 5)

2004-0212T15:19:21+00:00

Da del mes, 2 dgitos con precedencia de ceros 01 to 31

Presentacin textual en formato de tres letras del


Mon a Sun
da de la semana (Ingls)

Presentacin textual completa del mes del ao


(Ingls)

January aDecember

Formato de 12 horas, sin aadido de ceros


precedentes

1 a 12

Formato de 24 horas sin ceros precedentes

0 a 23

Formato de 12 horas, con aadido de ceros


precedentes

01 a 12

Formato de 24 horas con ceros precedentes

00 a 23

Minutes with leading zeros

00 to 59

I (i
mayscula)

Dice si el da del ao est en formato de ahorro


(Estados Unidos)

1 si est en formato de
ahorro, 0 si no lo est.

Da del mes sin ceros precedentes

1 a 31

l ('L'
Minscula)

Presentacin textual completa del da del mes


(Ingls)

Sunday a Saturday

Nos dice si es ao bisiesto o no

1 si es bisiesto, 0sino.

Presentacin numrica del mes, con ceros


precedentes

01 a 12

Presentacin abreviada del mes (tres letras en

Jan a Dec

formato en
caracteres

Decripcin

Valor devuelto

Ingls)
n

Presentacin numrica del mes del ao sin ceros


1 a 12
precedentes

Diferencia del tiempo de Greenwich (GMT) en


horas

Ejemplo: +0200

Fecha formateada al estilo RFC 2822

Ejemplo: Thu, 21 Dec


2000 16:01:07 +0200

Segundos con ceros precedentes

00 a 59

Sufijos ordinales en ingls para los das de la


semana. Formato de dos caracteres.

st, nd, rd or th. Trabaja


bien con el parmetro j

Nmero de los das del mes dado

28 a 31

Formato temporal de la computadora en la que se


Ejemplos: EST,MDT ...
est trabajando

Segundos al estilo de la poca Unix

representacin numrica de los das de la semana 0 (para el Domingo) a 6


(empezando de 0)
(para el Sbado)

Nmero de la semana del ao al estilo ISO-8601 Ejemplo: 42 (es la 42a


empezando en Lunes(agregado en PHP 4.1.0)
semana del ao)

Representacin anual completa

Ejemplos: 1999 o2003

Representacin anual de dos dgitos

Ejemplos: 99 o 03

El da del ao, empezando de cero (0)

0 a 365

Zona temporal contado en segundos. El conteo


de las zonas temporales al oeste de UTC es
-43200 a 43200
siempre negativo, y el de la zona este de UTC es
siempre positivo.

(January 1 1970 00:00:00


GMT)

Si bien en nuestro proyecto esta poderosa funcin no ser utilizada en toda su capacidad (la
cual como podemos ver, es enorme), nos servir para darle una mejor presentacin.
Cmo?, lo veremos en nuestro prximo encuentro. Por el momento, recuerden que "Nadie
puede matar la parte de s que ha hecho vivir en los otros" (ngeles Mastreta), as que
hagamos que nuestros conocimientos vivan en los dems, es decir: compartamos y
programemos. Hasta Pronto.

Nuestro Proyecto parte 3

En nuestra ltima entrega aprendimos sobre el uso de la funcin date(). En esta entrega
aplicaremos lo que aprendimos a nuestro proyecto.
Como recordarn, nuestro proyecto es: tenemos que hacer un programa que calcule el
precio de un producto dependiendo de su precio original, agregando un impuesto
especfico.
La salida de nuestro proyecto, hasta donde est, es la siguiente:

No sera fantstico que el programa presentara en pantalla la fecha en la que se lleva a


cabo la transaccin, en otras palabras, la fecha de hoy?
Bien, con base a lo que aprendimos sobre date(), podemos hacer la siguiente adicin a
nuestro cdigo:

<HTML>
<HEAD>
<TITLE>Proyecto Pgina Dinmica</TITLE>

</HEAD>
<BODY>
<!-- Formato del Ttulo de la pgina-->
<FORM METHOD = "POST" ACTION = "proyecto_1.php">
<FONT FACE = "Verdana" COLOR = "#1200FF">
<CENTER><B><H2>Sistema de Clculo de Impuesto de
Producto</H2></B></CENTER>
</FONT>
<BR>
<BR>
<?php
//Imprimiento la fecha de hoy en la pantalla
$fecha = date("j-m-Y");
echo "<H2> $fecha </H2>";
?>
Por favor digite el precio del producto:
<INPUT TYPE = TEXT NAME = "precio_original" MAXLENGHT = 5 >
<P>
<INPUT TYPE = "Submit" VALUE = "Calcular Precio">
<?php
/
*************************************************************************
********************
* Programa que calcula el precio final de un producto, a partir de su precio original
ms un impuesto

* Autor:
* Fecha:
*************************************************************************
********************/
function calculo($precio_original){ //Funcin que calcula el precio final
return $precio_final = ($precio_original * 0.13) + $precio_original; //retorna precio
final
}
echo "<BR><H2><CENTER>El precio final es:
".calculo($precio_original)."</CENTER></H2>";
/*La salida ser centrada como Header 2, incluyendo el precio final (calculado en la
funcin calculo()*/
?>
La adicin a nuestro proyecto no es, digamos, sustancial, sin embargo, una fecha puesta en
el lugar indicado siempre es bien agradecida.
La adicin anterior, le da a nuestro programa la siguiente salida:

Como vemos, la fecha nos dice que estamos en el cinco de octubre del ao 2006, y luego la
salida del programa sigue siendo la misma.
En nuestra prxima entrega, agregaremos un poco ms de ayuda para nuestros queridsimos
usuarios.
De momento por favor, por favor recuerden: "No hacen falta bombas para destruir un sitio.
No hace falta nada. Abandnalo y se caer en pedazos" (Robert Silverberg). Por favor, no
abandonen nunca el deseo de aprender, o se caer en pedazos. Hasta pronto.

Nuestro Proyecto parte 4


Hola de nuevo!
En esta entrega vamos a aadirle a nuestro proyecto algunas cosas que le ayudarn al
usuario.
Hasta el momento, la salida de nuestro proyecto es la siguiente:

Nuestra interaccin con el usuario se reduce a la solicitud del precio de un producto. No


sabemos en lo absoluto qu tipo de producto es. En esta entrega, le vamos a dar la
oportunidad al usuario de decirnos qu tipo de producto es.
Sin embargo, antes de comenzar, diremos que en esta entrega presentaremos una forma de
interactuar con el usuario, aunque tal vez no sea la ms adecuada. As y todo, es bueno que
conozcamos todas las posibilidades. Lo que haremos es agregar un cuadro de texto en el
que el usuario podr introducir el nombre del producto y otro cuadro en el que introducir
el tipo del producto.
Las adiciones a nuestro cdigo sern las siguientes:

Dos cuadros de texto HTML para que el usuario introduzca el nombre del producto
y el tipo del producto respectivamente

La salida del programa no slo imprimir el precio, sino tambin el tipo y el nombre
del producto.

La forma de hacerlos podra ser el siguiente segmento de cdigo:

PARA LOS CUADROS DE TEXTO

<INPUT TYPE = TEXT NAME = "tipo_producto" MAXLENGHT = 20 0>

<INPUT TYPE = TEXT NAME = "nombre_producto" MAXLENGHT = 15 5>

PARA LA SALIDA

echo "<BR><H2><CENTER>El Tipo de producto es: $tipo_producto. El


nombre
es:
$nombre_producto.
El
precio
final
es:
".calculo($precio_original)."</CENTER></H2>";

Nuestro csigo final sera:


<HTML>
<HEAD>
<TITLE>Proyecto Pgina Dinmica</TITLE>
</HEAD>
<BODY>
<!-- Formato del Ttulo de la pgina-->
<FORM METHOD = "POST" ACTION = "proyecto_1.php">
<FONT FACE = "Verdana" COLOR = "#1200FF">
<CENTER><B><H2>Sistema de Clculo de Impuesto de
Producto</H2></B></CENTER>
</FONT>
<BR>

<BR>
<?php
//Imprimiento la fecha de hoy en la pantalla
$fecha = date("j-m-Y");
echo "<H2> $fecha </H2>";
?>

<!--INSERTANDO ADICIONES-->
Por favor inserte el tipo de producto:
<INPUT TYPE = TEXT NAME = "tipo_producto" MAXLENGHT = 20 0><BR>
Por favor inserte el nombre del producto:
<INPUT TYPE = TEXT NAME = "nombre_producto" MAXLENGHT = 35 5><BR>

<!--HASTA AQU PRIMERAS INSERCIONES-->


Por favor digite el precio del producto:
<INPUT TYPE = TEXT NAME = "precio_original" MAXLENGHT = 5 >
<P>
<INPUT TYPE = "Submit" VALUE = "Calcular Precio">
<?php
/
*************************************************************************
********************
* Programa que calcula el precio final de un producto, a partir de su precio original
ms un impuesto
* Autor:

* Fecha:
*************************************************************************
********************/
function calculo($precio_original){ //Funcin que calcula el precio final
return $precio_final = ($precio_original * 0.13) + $precio_original; //retorna precio
final
}

//INSERCIONES EN CDIGO PHP


echo "<BR><H2><CENTER>El tipo de producto es:
$tipo_producto</CENTER></H2>";
echo "<BR><H2><CENTER>El nombre del producto es:
$nombre_producto</CENTER></H2>";

//HASTA AQU INSERCIONES EN CDIGO PHP


echo "<BR><H2><CENTER>El precio final es:
".calculo($precio_original)."</CENTER></H2>";
/*La salida ser centada como Header 2, incluyendo el precio final (calculado en la
funcin calculo()*/
?>

La salida de estas adiciones es:

Como vern, estas adiciones le dan un toque de profesionalismo a nuestro sistema, adems
claro, que el usuario tiene la oportunidad de introducir ms datos.
En nuestra siguiente entrega, mejoraremos estas nuevas adiciones.
Por el momento, hasta pronto.

Nuestro Proyecto parte 5


En nuestra entrega anterior, vimos como nuestro proyecto creci y le dio ms opciones al
usuario. En esta entrega, vamos a mejorar esas opciones, aunque restringiendo un poco al

usuario, con el objetivo de minimizar la cantidad de errores que pueden darse por digitar
errneamente (los famosos y temidos dedazos).

Hasta el momento, el usuario est facultado para escribir el tipo del producto, el nombre del
producto, y el precio del producto. No sera genial que con unos cuantos "clicks" de ratn,
el usuario pudiese escoger el tipo y el nombre del producto, mientras el sistema calcula el
precio final del producto?

Para comenzar, vamos a estandarizar un poco ms las opciones del usuario:

Las opciones de seleccin del usuario sern hechas con base a mens emergentes.
o Para los libros propuestos, el precio ser de 20.00 (ms el respectivo
impuesto)
o Para los discos propuestos, el precio ser de 15.50 (ms el respectivo
impuesto)

Muestra de Men Emergente

El precio ya no se escribir sino que ser calculado dependiendo del tipo del
producto.

La totalidad de nuestro cdigo, hasta el momento es la siguiente:

<HTML>
<HEAD>

<TITLE>Proyecto Pgina Dinmica</TITLE>


</HEAD>
<BODY>
<!-- Formato del Ttulo de la pgina-->
<FORM METHOD = "POST" ACTION = "proyecto_1.php">
<FONT FACE = "Verdana" COLOR = "#1200FF">
<CENTER><B><H2>Sistema de Clculo de Impuesto de
Producto</H2></B></CENTER>
</FONT>
<BR>
<BR>
<?php
//Imprimiento la fecha de hoy en la pantalla
$fecha = date("j-m-Y");
echo "<H2> $fecha </H2>";
?>
<!--INSERTANDO ADICIONES-->
Por favor escoja el tipo del producto:
<SELECT NAME = "tipo_prod">
<OPTION VALUE = "">
<OPTION VALUE = "disco">Disco
<OPTION VALUE = "libro">Libro
</SELECT>
<!--HASTA AQU ADICIONES-->

Por favor inserte el nombre del producto:


<INPUT TYPE = TEXT NAME = "nombre_producto" MAXLENGHT = 35 5><BR>
<P>
<INPUT TYPE = "Submit" VALUE = "Calcular Precio">
<?php
/
*************************************************************************
********************
* Programa que calcula el precio final de un producto, a partir de su precio original
ms un impuesto
* Autor:
* Fecha:
*************************************************************************
********************/
//Inserciones en el cdigo PHP
$precio_original = 0;
if($tipo_prod =="disco"){
$precio_original = 15.5;
}
elseif($tipo_prod=="libro"){
$precio_original = 20;
}
//Hasta aqu inserciones en el cdigo PHP
function calculo($precio_original){ //Funcin que calcula el precio final
return $precio_final = ($precio_original * 0.13) + $precio_original; //retorna precio
final
}

echo "<BR><H2><CENTER>El tipo de producto es: $tipo_prod</CENTER></H2>";


echo "<BR><H2><CENTER>El nombre del producto es:
$nombre_producto</CENTER></H2>";
echo "<BR><H2><CENTER>El precio final es:
".calculo($precio_original)."</CENTER></H2>";
/*La salida ser centada como Header 2, incluyendo el precio final (calculado en la
funcin calculo()*/
?>
Hasta aqu con las adiciones a nuestro proyecto.De momento les dejo con un vdeo que
muestra la salida de nuestro cdigo fuente:

Por el momento recuerden, que el lugar a donde vamos, depende exclusivamente del lugar a
donde QUEREMOS ir. Hasta Pronto.

Nuestro proyecto parte 6 - Explicaciones obligatorias


Hola y bienvenidos. En esta entrega vamos a revisar las adiciones hechas en nuestra entrega
anterior con todo el detenimiento necesario.

La primera de nuestras adiciones es una vieta de seleccin HTML


Por favor escoja el tipo del producto:
<SELECT NAME = "tipo_prod">
<OPTION VALUE = "">
<OPTION VALUE = "disco">Disco
<OPTION VALUE = "libro">Libro
</SELECT>
Esta adicin le permite al usuario seleccionar uno de dos producto (no los dos a la vez),
para evitar algn error de digitacin por parte del usuario. Adems, una adicin curiosa
dentro de esta vieta de seleccin: un valor vaco. Esto es en realidad para evitar que la
seleccin tenga un valor especfico por defecto, y as minimizar la cantidad de errores que
el usuario podra cometer.
En segundo lugar tenemos la siguiente adicin:

$precio_original = 0;

Lo hecho aqu recibe el nombre de inicializacin, lo cual no es ms que dar un valor inicial
a una variable con el objetivo de que sta no guarde en su interior cualquier valor de la
memoria, lo que se conoce como "valores basura". Esta es una buena costumbre que sera
bueno que tuvisemos desde un principio, pues no solamente nos servir con PHP, sino con
muchos, muchiiiiiiiisimos otros lenguajes.

La tercera de nuestras adiciones fue una estructura de control:

if($tipo_prod =="disco"){
$precio_original = 15.5;
}
elseif($tipo_prod=="libro"){

$precio_original = 20;
}

Esta estructura, en conjuncin con la vieta de seleccin (el men emergente o pop up
men) es en realidad la GRAN ADICIN. La estructura toma el valor seleccionado en el
men emergente (disco o libro) y procesa el resultado. Como habrn visto, la
variable$tipo_prod es, en realidad, el nombre de la vieta SELECT y la comparacin de
igualdad ($tipor_prod =="disco")se hace con el valor de la vieta OPTION.
Por otro lado, antes de decir el por qu, la pregunta para el apreciable lector es la siguiente:
por qu en la estructura de control incluimos un elseif en lugar de un simple else?
La respuesta es la siguiente: si la estructura hubiese incluido un else en lugar del elseif que
contiene, cualquier otro valor distinto de "disco" hubiese valido 20, incluyendo un espacio
vaco, por lo que nuestro programa hubiese tenido un valor de 22.60 incluso antes de haber
seleccionado un tipo de producto, lo cual, obviamente, no es aceptable. De esto se deduce
que la sentencia else, si hemos de hacer una comparacin con otra estructura de control, es
similar a la sentencia default en un switch, es decir, si cualquier otra comparacin de la
sentencia switch no se cumple, la sentencia default ser escogida y se ejecutar.
En nuestra siguiente entrega, vamos a hacer una adicin ms a nuestro cdigo, que nos
obligar a hacer una adicin importante a nuestra sentencia if...elseif.
Por el momento, los dejamos con la siguiente reflexin de Giovanni Giacomo Casanova:
"El amor no es ms que una curiosidad". Amemos lo que hacemos, amemos lo que
aprendemos, seamos curiosos, no nos conformemos nunca. Hasta Pronto.

Nuestro proyecto parte 7


Hola una vez ms. En esta entrega vamos a hacer un par de adiciones importantes a nuestro
proyecto que nos obligarn a hacer uso de muchos de nuestros conocimientos de PHP. En
esta ocasin vamos a insertar un men emergente ms, que restringir al usuario para evitar
todava ms la posibilidad de una mala digitacin. Vamos a restringir la digitacin del
nombre del producto.
Hasta este momento, la salida de nuestro programa tiene la siguiente estructura:

Hasta este punto el usuario tiene la facultad de escribir el nombre del producto que se est
vendiendo es ese momento. Sin embargo, pese a que esto es una facultad, tambin puede
ser un problema, en caso de que el usuario no sea el mejor mecangrafo (digitador para los
ms extremistas). Hay que decir en este punto que, como programadores, debemos asumir
siempre la premisa principal de la ley de Murphy: "Si algo puede salir mal, definitivamente
saldr mal". En otras palabras, debemos pensar siempre en lo peor, y "curarnos en salud".
As pues, vamos a hacer otro men emergente para que el usuario escoja el nombre del
producto que se est vendiendo.

Las adiciones a nuestro cdigo sern las siguientes:

El nuevo men emergente (vamos a decir aqu que la cantidad de productos de la


tienda es bastante limitada, para que nuestro cdigo no se haga del tamao de una
sbana)

<SELECT NAME = nombre_prod>


<OPTION VALUE = "El hombre del traje gris">El hombre del traje gris Joaqun Sabina
<OPTION VALUE ="Mentidas piadosas">Mentiras piadosas - Joaqun Sabina
<OPTION VALUE = "Cien aos de soledad">Cien aos de soledad - Gabriel
Garca Mrquez
<OPTION VALUE = "El jinente polaco">El jinete polaco - Antonio Muoz
Molina
</SELECT>

Nuestro cdigo de seleccin PHP (en realidad, la parte sabrosa de esta adicin)

switch($tipo_prod){
case "disco":
$precio_original = 15.5;
calculo($precio_original);
break;
case "libro":
$precio_original = 20.00;
calculo($precio_original)
break;

default:
echo "Tipo no vlido";
}

Nuestro cdigo final ser el siguiente:

<cke:HEAD>

<cke:TITLE>Proyecto Pgina Dinmica</cke:TITLE></cke:HEAD>

Nuestra salida final es la siguiente:

<FORM MET

Hay que decir que en nuestro cdigo hay que agregar al inicio la vieta <HTML> y,
despus de las vietas <HEAD></HEAD> la vieta <BODY>, al igual que, al final las
vietas de cierre </BODY></HTML>
Con esto nos evitamos errores de digitacin. Sin embargo, hay otros errores posibles.
Cules?. Nos enteraremos en nuestra prxima entrega. De momento. Hasta Pronto.

Nuestro proyecto parte 8


Hola de nuevo. Espero que hayan seguido experimentando con nuestro proyecto y que
hayan descubierto cules eran los posibles errores que el usuario podra cometer a la hora
de hacer las selecciones de tipo de producto y nombre de producto respectivamente.

La salida de nuestro programa en pantalla le permite al usuario escoger - y no escribir o


digitar - el tipo del producto, en conjuncin con el nombre del producto que el comprador
desea llevarse a su casa. Sin embargo, el usuario tiene la posibilidad de equivocarse a la
hora de escoger. Por ejemplo, el programa le da la posibilidad de escoger un tipo de
producto "Disco" y escoger un nombre de producto El jinete polaco - Antonio Muoz
Molina, con lo que se crea la confusin, adems de que se le cobra al comprador o bien ms
(en caso de lleve un disco y se le cobre un libro) o bien menos (en caso de que lleve un
libro y se le cobre un disco)

Algo que hay que hacer notar, es que este programa puede utilizarse tanto a nivel de
intranet, como a nivel de internet, en una tienda On-line, en la que el usuario y el
comprador, vendran a ser el mismo.

En fin, modos de reparar este error, como modos de hacer el proyecto que hemos ido
desarrollando, las hay muchas, y esperamos que todos y cada uno de los apreciables
lectores encuentren su propio estilo. Para este curso, y siendo que pretendemos utilizar la
mayor cantidad de conceptos aprendidos en este curso, nos decidimos por hacerlo
utilizando switch e if..else anidados.

De lo anterior vemos que las adiciones a nuestro programa se dan en la estructura switch,
agregando una estructura if..else a cada case, de la siguiente forma:

switch($tipo_prod){
case "disco":
if($nombre_prod == "Cien aos de soledad" || $nombre_prod =="El jinete
polaco"){
echo "<H1>El producto escogido es un libro, corrija</H1>";
}
else{
$precio_original = 15.5;
calculo($precio_original);

}
break;
case "libro":
if($nombre_prod == "El hombre del traje gris" || $nombre_prod ==
"Mentiras piadosas"){
echo "<H1>El producto escogido es un disco, corrija</H1>";
}
else{
$precio_original = 20.00;
calculo($precio_original);
}
break;
}

De esta forma, nuestra salida queda de la siguiente forma:


<cke:HEAD>
<cke:TITLE>Proyecto Pgina Dinmica</cke:TITLE></cke:HEAD>
<FORM METHOD="POST" ACTION="proyecto_1.php">
<CENTER>
<font color="#1200FF" face="Verdana"><B><H2>Sistema de Clculo de
Impuesto de Producto</H2></B></font>
</CENTER>
<BR>
<BR>
<?php
//Imprimiento la fecha de hoy en la pantalla
$fecha = date("j-m-Y");
echo "<H2> $fecha </H2>";
?>
Por favor escoja el tipo del producto:

Con las adiciones anteriores, la salida a pantalla de nuestro programa queda de la siguiente
forma:

Esta es la salida cuando cometemos un error en cuanto a la seleccin del nombre del
producto.
La salida, cuando no hay error alguno es la siguiente:

En nuestra prxima entrega, ms mejoras a nuestro proyecto.


De momento, hasta pronto.

Nuestro proyecto parte 9


Hola, cmo estn?.
En esta entrega vamos a corregir un problema que hemos ido dejando en el cajn de lo de
"para ms tarde", pero que no es precisamente algo que no salte a la vista. Nuestra salida,
hasta el momento, es la siguiente:

Pregunta, se han percatado del error?, se percataron de l desde un inicio?


Muy bien, el error es sencillo pero crucial, despus del punto decimal, las posiciones que
existen son tres y no dos, como debera ser para los precios en dinero. Poca cosa, tal vez,
pero no cuando se trata de dinero (y si no que lo digan los dueos de los supermercados)

Para este fin, existe una funcin predefinida en PHP, que nos ayudar a decirle a nuestro
programa, no slo la cantidad de espacios decimales que necesitamos en nuestra salida,
sino, adems, el tipo de separador que necesitamos para las posiciones decimales, y el tipo
de separador para los miles.

Dicha funcin se llama number_format(). Y su utilizacin es la siguiente:

number_format(nmero flotante o variable que lo contiene, posiciones decimales a ser


desplegadas, separador de decimales, separador de miles)

El lugar en el que vamos a incluir esta funcin ser, como ya habrn adivinado, en el
momento de imprimir nuestra salida, es decir en la sentencia:

echo "<BR><H2><CENTER>El precio final es:


".number_format(calculo($precio_original), 2, '.', ','). "</CENTER></H2>";

As pues, la totalidad de nuestro cdigo, ahora, es la siguiente:

<cke:HEAD>

<cke:TITLE>Proyecto Pgina Dinmica</cke:TITLE></cke:HEAD>

<FORM METHOD="POST" ACT

Con la adicin anterior, nuestra salida mejora y nuestro programa se acerca cada vez ms a
la realidad. Aqu tienen una salida en vdeo:

Muy bien, en nuestra siguiente entrega le haremos una adicin ms a nuestro programa:
Vamos a dejar al usuario escoger ms de un producto de la lista.
Por el momento, recuerden que como dijo Antonio Machado: "Si es bueno vivir, todava es
mejor soar, y lo mejor de todo, despertar". Soar es bueno, cumplir esos sueos, es lo
mejor de todo. Hasta pronto.

Nuestro Proyecto parte 10

Bienvenidos. En esta entrega, le permitiremos al usuario escoger ms de un producto a


comprar. Hasta hoy, el programa nos permite escoger un producto y luego calcular su
precio con un impuesto. Sin embargo, qu hay si el comprador quiere dos productos del
mismo tipo.
Las adiciones necesarias son:

Para comenzar, vamos a hacerle un cambio de forma a nuestro programa, a partir de


este momento, los clculos los vamos a hacer en una tabla.

Las adiciones en PHP son simplemente la operacin $precio_final =


(($precio_original * 0.13) + $precio_original)*$cantidad; la cual ahora toma en
cuenta la variable (que no es ms que el campo de texto del mismo nombre)
$cantidad y la une a la funcin calculo();

El cdigo corregido y aumentado sera:

<CENTER><TABLE BORDER = 1>


< TH>TIPO<TH>NOMBRE<TH>CANTIDAD<TH>PRECIO FINAL
< TR>
< TD>
< SELECT NAME = "tipo_prod">
< OPTION VALUE = ""> </OPTION>
< OPTION VALUE = "disco">Disco</OPTION>
< OPTION VALUE = "libro">Libro</OPTION>
< /SELECT>
< TD>
< SELECT NAME = "nombre_prod">
< OPTION VALUE = ""> </OPTION>
< OPTION VALUE = "El hombre del traje gris">El hombre del traje gris - Joaqun
Sabina</OPTION>
< OPTION VALUE ="Mentiras piadosas">Mentiras piadosas - Joaqun
Sabina</OPTION>
< OPTION VALUE = "Cien aos de soledad">Cien aos de soledad - Gabriel Garca
Mrquez</OPTION>
< OPTION VALUE = "El jinete polaco">El jinete polaco - Antonio Muoz
Molina</OPTION>
< /SELECT>
< TD>
< INPUT TYPE = TEXT NAME = "cantidad" MAXLENGTH = 5 >
< TD>
< ?php
/*************************************************************************
********************

* Programa que calcula el precio final de un producto, a partir de su precio original


ms un impuesto
* Autor:
* Fecha:
*************************************************************************
********************/
$precio_original = 0;
function calculo($precio_original, $cantidad){ //Funcin que calcula el precio final
return $precio_final = (($precio_original * 0.13) + $precio_original)*$cantidad;
//retorna precio final
}
switch($tipo_prod){
case "disco":
if($nombre_prod == "Cien aos de soledad" || $nombre_prod =="El jinete polaco"){
echo "<H1>El producto escogido es un libro, corrija</H1>";
}
else{
$precio_original = 15.5;
echo "<CENTER>".number_format(calculo($precio_original,
$cantidad),2,'.',',')."</CENTER>";
}
break;
case "libro":
if($nombre_prod == "El hombre del traje gris" || $nombre_prod == "Mentiras
piadosas"){
echo "<H1>El producto escogido es un disco, corrija</H1>";
}
else{
$precio_original = 20.00;
echo "<CENTER>".number_format(calculo($precio_original,
$cantidad),2,'.',',')."</CENTER>";
}
break;
}
/*La salida ser centada como Header 2, incluyendo el precio final (calculado en la
funcin calculo()*/
?>
< /TABLE></CENTER>

Como vern, eso implica adiciones en muchas partes del cdigo, y correcciones necesarias
en algunas otras partes.
Nuestro cdigo ahora es el siguiente:

<cke:HEAD>

<cke:TITLE>Proyecto Pgina Dinmica</cke:TITLE></cke:HEAD>

<FORM METHOD="POST" ACT

En nuestra prxima entrega, haremos de nuestro proyecto, un proyecto que pueda ser
subido a una pgina web, aadiendo algunas de las funciones ms comunes del manejo
Web.

Por el momento, recuerden, sigan programando, experimenten, equivquense y corrijan.


Slo as aprendern. Hasta pronto.

Nuestro proyecto parte 11


Hola una vez ms. Como ya habamos dicho, en esta entrega vamos a aprender algunos
pasos esenciales para hacer de nuestro proyecto un proyecto Internet.
Para comenzar, siendo que nuestra pequea tienda va a estar en la red, es necesario saber la
identidad de las personas que entrarn en nuestra pgina. Si bien es cierto, la mejor forma
de hacerlo es con una bases de datos, ese tema no es tocado en este curso por razones de
espacio. Sin embargo, a manera de ejemplo, vamos a hacer un simulador de base de datos
para ver como funciona nuestra pgina de acceso al programa que ya desarrollamos con
anterioridad.
Con el objetivo anterior puesto en mente, vamos a desarrollar una pgina extra, adems de
la que ya tenemos escrita, con el objetivo de garantizar el ingreso a nuestros futuros
clientes.
Nuestras nuevas adiciones al cdigo son:

Una nueva pgina HTML para pedir los datos del usuario (correo electrnico y
nombre), la pgina contendr lo siguiente:
<HTML>
< HEAD>
< TITLE>Pgina de ingreso al sistema de compras</TITLE>
< /HEAD>
< BODY>
< FONT FACE = "arial" COLOR = "#1200FF">
< CENTER><B><H3>Por favor digite su nombre y su email</H3></B></CENTER>
< FORM METHOD = GET ACTION = "proyecto_1.php">
< BR>
< BR>
< BR>
< CENTER>
e-mail: <INPUT TYPE = "TEXT" NAME = "correo" MAXLENGHT =
35 5>
NOMBRE: <INPUT TYPE = "TEXT" NAME = "nombre"
MAXLENGHT = 25 5>
< BR>
< BR>
< INPUT TYPE = "SUBMIT" VALUE = "Remitir Informacin">
< /FONT>
< /CENTER>

< /BODY>
< /HTML>

Una leve adicin en nuestra pgina de proyecto_1.php, para darle la bienvenida al


cliente, con base a lo que introdujo en la pgina anterior, que por cierto la
llamaremos login. El cdigo adicionado a nuestra pgina ser:
echo "<CENTER><H3>Bienvenido(a) ".$nombre."</H3></CENTER>";

La totalidad del cdigo en la pgina proyecto_1.php es como sigue:

<cke:HEAD>
<cke:TITLE>Proyecto Pgina Dinmica</cke:TITLE></cke:HEAD>
<FORM METHOD="POST" ACTION="proyecto_1.php">
<CENTER>
<font color="#1200FF" face="Verdana"><B><H2>Sistema de Clculo de
Impuesto de Producto</H2></B></font>
</CENTER>
<BR>
<BR>
<?php
//Imprimiento la fecha de hoy en la pantalla
echo "<CENTER><H3>Bienvenido(a) ".$nombre."</H3></CENTER>";
$fecha = date("j-m-Y");
echo "<CENTER><H2> $fecha </H2></CENTER>";
?>

Las salidas de cada pgina son, para la pgina login:

Para la pgina proyecto_1:

Posiblemente se estn preguntando sobre la utilidad de esta adicin, siendo que lo nico
que hace es transferir el nombre de una pgina a otra. Pues bien, la importancia radica en
realidad, en la posibilidad de almacenar esta informacin en una base de datos y guardar en
dicha base de datos un rcord de las transacciones hechas por dicho usuario, de tal manera
que se pueda dar una clasificacin de un cliente regular hasta un cliente excelente, de tal
manera que el cliente excelente pueda tomar algunas ventajas de su condicin y recibir
descuentos y promociones de cuando en cuando, claro est, gracias al dato de su correo
electrnico que ingres en la pgina login. Adems, hay que decir que a nivel de atencin al
cliente no hay nada ms reconfortante que recibir una bienvenida con nuestro nombre y
apellido.
En nuestra prxima entrega, aprenderemos a sacar las estadsticas elementales de las
personas que entran en nuestra pgina.
Por el momento, sigan experimentando y programando. Hasta pronto.
<cke:HEAD>
<cke:TITLE>Proyecto Pgina Dinmica</cke:TITLE></cke:HEAD>
<FORM METHOD="POST" ACTION="proyecto_1.php">
<CENTER>
<font color="#1200FF" face="Verdana"><B><H2>Sistema de Clculo de
Impuesto de Producto</H2></B></font>
</CENTER>
<BR>
<BR>
<?php
//Imprimiento la fecha de hoy en la pantalla
echo "<CENTER><H3>Bienvenido(a) ".$nombre."</H3></CENTER>";
$fecha = date("j-m-Y");
echo "<CENTER><H2> $fecha </H2></CENTER>";
?>

<CENTER><TABLE BORDER=1>
<TH>TIPO<TH>NOMBRE<TH>CANTIDAD<TH>PRECIO FINAL <TR> <TD>
<SELECT NAME="tipo_prod">
<?php echo "<OPTION VALUE = '$tipo_prod'></OPTION>";?>
<OPTION VALUE="disco">Disco</OPTION>
<OPTION VALUE="libro">Libro</OPTION>
</SELECT><TD>
<SELECT NAME="nombre_prod">
<?php echo "<OPTION VALUE = '$nombre_prod'></OPTION>";?>
<OPTION VALUE="El hombre del traje gris">El hombre del traje gris
- Joaqun Sabina</OPTION>
<OPTION VALUE="Mentiras piadosas">Mentiras piadosas - Joaqun
Sabina</OPTION>
<OPTION VALUE="Cien aos de soledad">Cien aos de soledad - Gabriel
Garca Mrquez</OPTION>
<OPTION VALUE="El jinete polaco">El jinete polaco - Antonio Muoz
Molina</OPTION>
</SELECT><TD>
<?php echo "<INPUT TYPE = TEXT data-cke-saved-NAME = 'cantidad' NAME =
'cantidad' VALUE = '$cantidad' MAXLENGTH = 5 SIZE = 5>"; ?> <TD>
<?php
/*************************************************************************
********************
* Programa que calcula el precio final de un producto, a partir de su precio original ms
un impuesto

* Autor:
* Fecha:
*************************************************************************
********************/
$precio_original = 0;
function calculo($precio_original, $cantidad){ //Funcin que calcula el precio final
return $precio_final = (($precio_original * 0.13) + $precio_original)*$cantidad;
//retorna precio final
}
switch($tipo_prod){
case "disco":
if($nombre_prod == "Cien aos de soledad" || $nombre_prod =="El jinete polaco"){
echo "<H1>El producto escogido es un libro, corrija</H1>";
}
else{
$precio_original = 15.5;
echo "<CENTER>".number_format(calculo($precio_original,
$cantidad),2,'.',',')."</CENTER>";
}
break;
case "libro":
if($nombre_prod == "El hombre del traje gris" || $nombre_prod == "Mentiras
piadosas"){
echo "<H1>El producto escogido es un disco, corrija</H1>";
}

else{
$precio_original = 20.00;
echo "<CENTER>".number_format(calculo($precio_original,
$cantidad),2,'.',',')."</CENTER>";
}
break;
}
/*La salida ser centada como Header 2, incluyendo el precio final (calculado en la
funcin calculo()*/
?></TABLE>
</CENTER>
<CENTER>
<INPUT data-cke-saved-name="Submit" name="Submit" TYPE='Submit'
VALUE='Calcular Precio'>
</CENTER>
<?php
echo "<INPUT TYPE = HIDDEN data-cke-saved-NAME = 'nombre_prod' NAME =
'nombre_prod' VALUE = '$tipo_prod'>";
echo "<INPUT TYPE = HIDDEN data-cke-saved-NAME = 'nombre_prod' NAME =
'nombre_prod' VALUE = '$nombre_prod'>";
echo "<INPUT TYPE = HIDDEN data-cke-saved-NAME = 'nombre_prod' NAME =
'nombre_prod' VALUE = '$cantidad'>";
?>
</FORM>

Nuestro proyecto parte 12


Hola de nuevo, en esta entrega vamos a ver cmo hacer un "entregador de estadsticas".
Este tipo de programa, es de utilidad ms a nivel de "webmaster", ya que proporciona la

"identidad" de la computadora que ha entrado a ver nuestra pgina. La utilidad, sencilla: al


enviar cookies a la mquina visitante, es factible hacer una pgina personalizable por parte
del usuario. Esto, entre muchas otras posibilidades.
Este reporte de estadsticas ser presentado gracias a dos pginas ms (se imaginan, ya
llevamos cuatro!), a las que llamaremos, en un arranque de originalidad,estadstica.php y
resultado_estadistica.php
Las adiciones a nuestro cdigo sern las siguientes:

<?php
$esta_pagina = $_SERVER["PHP_SELF"];
$IP = $_SERVER["REMOTE_ADDR"];
?>

Y a nuestro programa original, le agregaremos un enlace a la pgina


resultado_estadistica.php:

<CENTER><A HREF = "resultado_estadistica.php">Estadsticas</A></CENTER>


Hasta este momento, la salida de nuestra pgina principal no ha cambiado en gran cosa,
salvo por el enlace que nos lleva a la pgina de las estadsticas.

Otra explicacin que se hace necesaria, es la del uso de dos variables predifinidas:
$_SERVER["PHP_SELF"] y $_SEVER["REMOTE_ADDR"]

La variable predefinida $_SERVER es un arreglo que contiene informacin tal como


cabeceras, rutas o paths y la ubicacin de los scripts que utilizamos. Las entradas en este
arreglo son creadas por el servidor web. No hay garanta que todo servidor web proveer
cualquiera de estos datos; los servidores podran omitir alguno o proveer algunos otros que
no estamos especificando aqu.. Una gran nmero de estas variables estn contadas en las
especificaciones CGI 1.1, por lo que, si la curiosidad les toca el alma, pueden ver dichas
especificaciones y esperar cualquiera de estas.

Ahora bien, PHP_SELF proporciona el nombre del archivo del script que se est
ejecutando en este momento, relativo al documento raz. Para nuestro caso sera
/work/proyecto_1.php

Por otro lado REMOTE_ADDR nos proporciona la direccin IP del usuario que est
viendo nuetra pgina en este momento.

Dicho lo anterior, la explicacin del por qu inclumos dichas sentencias en nuestra nueva
pgina son, la primera ($_SERVER["PHP_SELF"]), para que nuestro programa tenga "la
idea clara" del lugar en donde se ubican nuestro archivos y evitar as algn error de
OBJETO NO ENCONTRADO por parte del servidor WEB y la segunda
($_SERVER["REMOTE_ADDR"]) para poder tener la direccin IP de la persona que
nos est visitando.

Hasta este momento, con nuestra pgina estadistica.php, tenemos asegurado que el
programa sabe la direccin IP de la persona que ha visitado nuestra pgina, sin embargo,
cmo lo sabemos nosotros?.

La pregunta anterior tendr una respuesta en nuestra prxima entrega. De momento,...


Hasta pronto.

Nuestro proyecto parte 13


Hola, cmo estn?.
Estamos en el camino de hacer de nuestro proyecto un "final feliz", y en este nuevo
encuentro, hablaremos de cmo terminar nuestro progama de estadsticas para que nos
presente el "documento de identidad", es decir la IP de la computadora que ha visitado
nuestra pgina.
En nuestro encuentro previo, hicimos la pgina que le hace saber a nuestro servidor la IP de
la computadora que ha visitado nuestro sitio, sin embargo, como ya se habrn dado cuenta,
nosotros (los mortales), no sabemos la direccin de esa computadora.

As pues, necesitamos crear la cuarta de nuestras pginas (una muy, muy cortita, por cierto),
la cual constar del siguiente cdigo:

<?php
include("estadistica.php");

echo "Esta pgina ha sido visitada por: $IP";


?>

Bien, probablemente se estarn preguntando qu es la primera sentencia de nuestro


programa. Pues bien, esta sentencia cumple la funcin de incluir y evaluar el archivo
especificado entre parntesis y encerrado entre las comillas dobles (para nuestro caso, el
archivo estadistica.php).

Dicho en otras palabras, lo que hacemos es incluir a todo el archivo y utilizarlo para
imprimir una salida en pantalla, la cual ser (redoble de tambores): la IP de la computadora
que ha visitado nuestra pgina.

Antes de ver la salida en pantalla, es necesario incluir al "compaero de frmula" de


include(), es decir: require().

require(), se sustituye a si mismo por el archivo especificado. Es decir, podemos requerir la


utilizacin de un archivo dentro de nuestro programa mediante esta directiva.

Hay que decir que require() no es una funcin predefinida, sino, en realidad, una
construccin del lenguaje. Como tal, las reglas de las funciones no se le aplican. Por otro
lado, esta sentencia no devuelve ningn valor.

Dicho lo anterior, los dejamos con la salida de todas las pginas juntas, para que vean que,
en definitiva, la unin hace la fuerza:

Antes de continuar, hay que aclarar que para efectos de este ejemplo, utilizamos, como se
habrn dado cuenta, otro archivo que se llama login2.php en lugar del original login.php,
sin embargo, ambos archivos tienen exactamente la misma informacin.

Muy bien, espero que la salida de nuestro programa les sirva para ver cuan poderoso e
interesante es programar en PHP.

Por el momento, hay un pensamiento importantsimo que es imperativo que conozcamos:


"Es detestable esa avaricia espiritual que tienen los que, sabiendo algo, no procuran la
transmisin de esos conocimientos" (Miguel de Unamuno). Compartan sus conocimientos,
lo nico mejor que una persona que sabe, es un enorme grupo de personas que saben. Hasta
pronto.

Nuestro proyecto parte 14


Hola una vez ms!
En esta entrega vamos a agregar un ltimo "aderezo" a nuestro proyecto. Agregaremos un
elemento de seguridad. La razn: con el programa tal como est, las estadsticas pueden ser
visitadas por cualquier persona que haga click en el enlace que dice Estadsticas, cosa que
no es conveniente, ni para nosotros y, mucho menos, para el usuario.
Para lograr dicho objetivo, crearemos una pgina ms (cinco en total, esto es toda una
locura!) que nos servir como intermedio entre nuestra pgina principal y la de estadsticas.
Los cambios a nuestra pgina principal (proyecto_1.php) sern nfimos: simplemente un
cambio en la direccin a la que "mirar" el enlace Estadsticas, es decir:

<CENTER><A HREF = "seguridad.php">Estadsticas</A></CENTER>

Por otro lado, nuestra nueva pgina contendr la siguiente informacin:


<HTML>
<HEAD>
<TITLE>Entrada a WebMaster</TITLE>
</HEAD>
<BODY>
<H2><CENTER>Bienvenido WEBMASTER</CENTER></H2>
<H3><CENTER>Por favor escriba su nombre de usuario y su palabra de
acceso</CENTER></H3>
<H4><CENTER>Nombre de usuario: </CENTER></H4>
<CENTER><INPUT TYPE = "TEXT" NAME = "id_usuario"></CENTER>

<H4><CENTER>Palabra de acceso: </CENTER></H4>


<CENTER><INPUT TYPE = "PASSWORD" NAME = "password"></CENTER>
<CENTER><INPUT TYPE = "SUBMIT" VALUE = "Entrar"></CENTER>
<?php
if($id_usuario == "" && $password == ""){
echo "";
}
elseif($id_usuario =="Alberto" && $password == "bibidi"){
echo "<CENTER><A HREF = '/work/resultado_estadistica.php'>Ir a
Estadsticas</A></CENTER>";
}
else{
echo "<H1><CENTER>Usuario o Palabra de Acceso
equivocado</CENTER></H1>";
}
?>
</BODY>
</HTML>

Y la salida de nuestro programa es la siguiente:

En nuestra siguiente entrega, las consideraciones finales a nuestro proyecto.


Por el momento, hasta pronto.

Consideraciones Finales
Muy bien, hemos llegado prcticamente al final de esta deliciosa aventura, en la que hemos
aprendido las bases de la programacin en PHP, suficientes para manejar decisiones, crear

funciones, conocer "identidades", manejar cadenas, reconocer expresiones regulares,


etctera. Todo lo anterior es suficiente para crear programas que nos puedan ayudar o
incluso buenos para subirlos a la red.

Como ya se dijo anteriormente, por razones de espacio no ha sido posible incluir el manejo
de base de datos ni la integracin con algn GBDD (Gestor de Bases de Datos) como por
ejemplo MySQL, sin embargo, esperamos poder incluir todo lo anterior en un futuro en
otro curso.

En fin, nuestra ltima pgina (la de seguridad) qued como sigue:

if($id_usuario == "" && $password == ""){


echo "";
}
elseif($id_usuario =="Alberto" && $password == "bibidi"){
echo "<CENTER><A HREF = '/work/resultado_estadistica.php'>Ir a
Estadsticas</A></CENTER>";
}
else{
echo "<H1><CENTER>Usuario o Palabra de Acceso
equivocado</CENTER></H1>";
}

Las ltimas consideraciones sobre esta pgina son la siguientes:

La razn para hacer empezado con un if($id_usuario == "" && $password ==


"") fue porque, al entrar a esta pgina, los campos del nombre del usuario y la
palabra de acceso estarn vacos, por consiguiente, si hubisemos omitido el primer
if y hubisemos comenzado por if($id_usuario == "Alberto" && $password ==
"bibidi") y luego un

else{
echo "<H1><CENTER>Usuario o Palabra de Acceso
equivocado</CENTER></H1>";
}

El programa hubiese comenzado por evaluar lo que encontr desde un inicio, es


decir un espacio vaco, por consiguiente el resultado de nuestra evaluacin resulta
como: $id_usuario != "Alberto && $password != "bibidi", lo cual le dice a
nuestro programa que debe imprimir en pantalla el mensaje de Usuario o Palabra
de Acceso equivocado. Esto puede que resulte de poca importancia, pero le resta
vistosidad y profesionalismo a nuestro proyecto.

Finalmente utilizamos un elseif...else porque de lo contrario, hubisemos


garantizado el acceso a todo el mundo a nuestra pgina de informes. Cmo?, bien
en caso de haber dejado solamente un else, diciendo:
else{
echo "<CENTER><A HREF = '/work/resultado_estadistica.php'>Ir a
stadsticas</A></CENTER>";
}

La entrada a cualquier persona que no cometiese el error de dejar en blanco los campos de
nombre de usuario y palabra clave, estara garantizada.
Ahhh bueno!!!, todas las despedidas parecen tener un deje de tristeza,... sin embargo, es
justo decir que no hay nada que deseemos ms en este mundo, que este curso haya servido
para despertar en todos la curiosidad y el "hambre" de conocimiento suficiente para seguir
aprendiendo todo sobre PHP. Y ya que hablamos de "hambre" de conocimiento, recuerden
siempre: "No hay amor ms sincero que el amor a la comida". En otras palabras, amen sus
conocimientos, amen lo que aprenden, gracias por su atencin, gracias por su curiosidad y...
HASTA PRONTO.

Das könnte Ihnen auch gefallen