You are on page 1of 94

CURSO INTRODUCTORIO DE PROMOGRAMACIN EN PHP

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 decomprima 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 php\bin\php5ts.dll
LoadFile php\bin\fdftk.dll
LoadModule php5_module modules/mod_php.so

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.
LAS VARIABLES EN PHP. 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.
LAS VARIABLES EN PHP. 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)
NOMBRES 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

Resultado

==

Igualdad

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

===

Identidad

$a= = =$b

!=
<
>

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

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


mismo tipo (slo PHP4 o mayor)

<=

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 LOS OPERADORES
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 EN PHP. Parte 1 (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 maoyra 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 pus, 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. Parte 2 (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 pus, 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 nuetra prxima entrega.
De momento, hasta pronto!

ESTRUCTURAS DE CONTROL. Parte 3 (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. Parte 4 (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. Parte 5 (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 observaci 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. Parte 6 (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 evaluaci, (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. Parte 7


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. Parte 8 (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 progama
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. Parte 1
Como ya vimos con anteriordad, 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 varibles 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. Parte 2
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 funcin hola(). 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.
FUNCIONES. Parte 2

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 necesitacemos 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 opreacin 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
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 habn 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, aprederemos sobre estilo y algunos consejos de cmo hacer nuestros
programas ms profesionales y documentados.
Por el momento, hasta pronto!
LA IMPORTANCIA DEL ESTILO Y DE LA ESTANDARIZACIN
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
progama 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!.
LOS COMENTARIOS
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.
LA 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
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 SIZE = 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!
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

formato en
caracteres

Decripcin

Valor devuelto

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

Presentacin textual en formato de tres letras


del da de la semana (Ingls)

Presentacin textual completa del mes del ao


January a December
(Ingls)

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 1 si est en formato de


(Estados Unidos)
ahorro, 0 si no lo est.

Da del mes sin ceros precedentes

l ('L'
Minscula)

Presentacin textual completa del da del mes


Sunday a Saturday
(Ingls)

Nos dice si es ao bisiesto o no

1 si es bisiesto, 0 sino.

Presentacin numrica del mes, con ceros


precedentes

01 a 12

Presentacin abreviada del mes (tres letras en


Jan a Dec
Ingls)

Presentacin numrica del mes del ao sin


ceros precedentes

Diferencia del tiempo de Greenwich (GMT) en


Ejemplo: +0200
horas

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


Ejemplos: EST, MDT ...
se est trabajando

Segundos al estilo de la poca Unix

(January 1 1970 00:00:00


GMT)

representacin numrica de los das de la


semana (empezando de 0)

0 (para el Domingo) a 6
(para el Sbado)

Nmero de la semana del ao al estilo ISO8601 empezando en Lunes(agregado en PHP

Ejemplo: 42 (es la 42a


semana del ao)

Mon a Sun

1 a 31

1 a 12

formato en
caracteres

Decripcin

Valor devuelto

4.1.0)
Y

Representacin anual completa

Ejemplos: 1999 o 2003

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 zonaeste de UTC
es siempre positivo.

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 SIZE = 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


SIZE = 20>
<INPUT TYPE = TEXT NAME = "nombre_producto" MAXLENGHT =
15 SIZE = 15>
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 SIZE =
20><BR>
Por favor inserte el nombre del producto:

<INPUT TYPE = TEXT NAME = "nombre_producto" MAXLENGHT = 35 SIZE


= 35><BR>
<!--HASTA AQU PRIMERAS INSERCIONES-->
Por favor digite el precio del producto:
<INPUT TYPE = TEXT NAME = "precio_original" MAXLENGHT = 5 SIZE = 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 selecin 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)

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 SIZE
= 35><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 siguiten 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 prinicipio, 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
menu) 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, definitvamente 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:
1. 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)
o <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>
2. 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:

Nuestra salida final es la siguiente:

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:

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.


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:

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 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>
Como vern, eso implica adiciones en muchas partes del cdigo, y correcciones
necesarias en algunas otras partes.
Nuestro cdigo ahora es el siguiente:

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 SIZE = 35>
NOMBRE: <INPUT TYPE = "TEXT" NAME = "nombre"
MAXLENGHT = 25 SIZE = 25>
<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:
o echo "<CENTER><H3>Bienvenido(a) ".
$nombre."</H3></CENTER>";
o

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

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.
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 nuesta 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 prinicipal 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.


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...