Beruflich Dokumente
Kultur Dokumente
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.
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:
Como habrn visto, la instalacin es bastante sencilla, y el tipo de instalador que escogern
depender del tipo de servidor web que deseen utilizar en sus aplicaciones (Apache o IIS).
Para el presente curso tomaremos como base el servidor Apache (por cierto, saban que
tambin es gratis).
Finalmente, hay que tener en cuenta que lo mejor de todo es utilizar PHP como mdulo de
Apache, por lo que ser necesario que se asguren a tener la configuracin de su archivo
httpd.conf de la siguiente forma:
LoadFile
LoadFile
LoadModule php5_module modules/mod_php.so
php\bin\php5ts.dll
php\bin\fdftk.dll
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.
Variables Parte 1
Las variables son uno de los conceptos ms bsicos en la programacin. Las variables son,
en pocas palabras: contenedores de datos.
Las variables son datos, a los que podemos manipular basados en un nombre: el nombre de
la variable, sin necesidad de hacer referencia al tipo de dato al que la variable hace
referencia. En PHP, cada variable debe comenzar con el signo de dlar ($) ms el nombre
de la variable de la manera siguiente:
$nombre
Para asignarle un valor a la variable, debemos utilizar el smbolo de asignaci, el cual no es
otro que el signo de igual (=). Una observacin (con carcter de advertencia), que debe
hacerse, es que no es lo mismo el carcter de asignacin (=), que el smbolo comparativo de
igualdad (= =). Cuando asignamos un valor, por ejemplo $nombre = "Miguel", le decimos
a PHP que la variable $nombre tiene el valor de cadena de caracteres "Miguel", mientras
que $nombre = = "Miguel", hace la comparacin entre el valor que tiene $nombre y la
cadena de caracteres "Miguel". Es decir, en buen castellano, la primera le dice a PHP quiero
que la variable que se llama $nombre guarde el valor "Miguel", mientras que la segunda,
por decirlo de alguna forma, le pregunta a PHP si la variable $nombre, guarda en su interior
el valor "Miguel".
Por favor dirijan su atencin a las comillas dobles que estn antes del valor Miguel y que
tambin estn al final de dicho valor asignado a la variable $nombre. Si bien vamos a entrar
en mayor detalle en un captulo futuro, tenemos que adelantar que no es lo mismo el
tratamiento de nmeros, que el tratamiento de cadenas de caracteres como es el caso del
ejemplo que hemos presentado. Por ejemplo, no es lo mismo "64", que 64. "64" hace
referencia a la cadena de caracteres formadas por el valor ASCII de "6" y "4", mientras que
64, sin comillas dobles, hace referencia al dgito 64, con el cual ya se pueden efectuar
operaciones matemticas como suma, resta multiplicacin, etc. De acuerdo, tal vez al
principio no resulte tan sencillo de comprender, pero cuando hagamos referencia a las
operaciones con cadenas, les aseguro que vamos a entender en su totalidad ambos
conceptos.
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:
Por ltimo, la instruccin echo de PHP tiene la funcin, como ustedes seguramente ya lo
habrn adivinado, de imprimir en pantalla lo que se le ordene imprimir. Claro est, la
utilidad y poder de esta instruccin se discutirn con detenimiento a lo largo de todo el
curso.
Por hoy, hasta pronto.
Variables Parte 2
Antes que nada, hay que explicar un poco las razones del por qu hay necesidad de hacer
una segunda parta para las variables. Las razones son las siguientes:
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)
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:
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 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.
$numero1 = 15;
$numero2 = 23;
Y el fragmento de cdigo:
<?php
$numero1 = 15;
$numero2 = 23;
echo $numero1 + $numero2;
?>
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.
<?php
$primer_nombre = "Juan";
$segundo_nombre = "Antonio";
echo $primer_nombre.$segundo_nombre
?>
Operadores en PHP
Operadores de Comparacin
Los operadores de comparacin se utlilizan, como su nombre lo indica, para hacer
comparaciones entre valores (la gran mayora de las ocasiones guardados en variables) que
necesitan desempear un papel en nuestro cdigo. En PHP dichos operadores son:
Operador
Nombre
Ejemplo
==
Igualdad
$a = = $b Cierto si $a es igual a $b
===
Identidad
$a= =
Resultado
Cierto si $a es igual a $b y si adems son del
=$b
!=
Desigualdad
$a != $b Cierto si $a no es igual a $b
<
Menor que
>
Mayor que
<=
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
OPERADOR
NOMBRE
EFECTO
$a++
++$a
Preincremento
$b--
--$b
Predecremento
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
$a or $b
$a xor $b O exclusiva Cierto si $a $b son ciertos, pero no si ambos son ciertos a la vez
!$a
$a&&$b
$a||$b
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!!!
Asociatividad
Operadores
izquierda
izquierda
or
izquierda
xor
izquierda
and
derecha
izquierda
izquierda
?:
izquierda
||
izquierda
&&
izquierda
izquierda
izquierda
&
no asociativo
no asociativo
<,<=,>,>=
izquierda
+, - , .
izquierda
*, /, %
derecha
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.
IF
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
<?php
$a = 1;
$b = 3;
if($a < $b)
echo "$a es menor que $b";
?>
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.
Como resulta claro, el operador \, hace que el carcter especial $ se imprima en pantalla.
Por otro lado, la mayora de las veces, necesitaremos agrupar ms de una sentencia, dentro
de la sentencia IF. Si ese fuese el caso, debemos de tener en cuenta que despus del primer
punto y coma, la sentencia IF se acaba, por ello, para encerrar a varias sentencias, dentro de
la sentencia IF, debemos utilizar las llaves { } para encerrar a todas las sentencias que
deseemos que estn dentro de nuestra estructura de control IF, de la siguiente forma:
<?php
$a = 1;
$b = 3;
if($a < $b){
echo "\$a es menor que\ $b<BR>";
echo "El valor de \$a es $a y el de \$b es $b";
}
?>
As pues, por favor recuerden de encerrar entre llaves las sentencias que han de ir dentro de
una sola sentencia IF.
Esto es todo en cuanto a IF, al menos por el momento. En la siguiente entrega veremos algo
sobre su complemento perfecto, es decir la sentencia ELSE.
Por el momento, Salud, Dinero y Amor! y hasta pronto.
<?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";
}
?>
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...
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.
<?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";
}
?>
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";
}
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.
Empezamos:
WHILE
"Mientras sea de da, tengo que trabajar"
while(expresin){
sentencias
}
<?php
$a = 1;
while($a < 11){
echo $a."<BR>";
$a++;
}
?>
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.
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)
<?php
$a = 1;
do{
echo $a."<BR>";
$a++;
}while($a<=10)
?>
Algo que debemos agregar de DO...WHILE en cuanto al ejemplo propuesto, es que aunque
$a hubiese valido 11, la impresin de la pantalla se hubiese llevado a cabo. Por qu?,
porque la evaluacin de la sentencia se llev a cabo hasta el final del bucle. Esto es una
observacin realmente vital, pues si la intencin de nuestro programa hubiese sido la nunca
imprimir el nmero 11 en pantalla, entonces nuestro programa hubiese fallado de la manera
ms catastrfica posible. Por favor tengan en cuenta lo anterior cuanto utilicen
DO...WHILE
"Carpe Diem!"
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>";
}
?>
Observaciones:
En primer lugar, debemos notar que la variable $i es inicializada en 0 y termina en 10, por
consiguiente, y en estos momentos podr parecer totalmente irrelevante pero puede llegar a
salvarles la vida, el nmero de filas es 11 y no 10.
Por otro lado, la variable $i es inicializada en la declaracin del bucle FOR y no antes.
Bien, los bucles en PHP representan, como ya vimos, la forma de llevar a cabo una serie de
sentencias, basados en la evaluacin, (cierta o falsa) de las expresiones contenidas. En una
entrega posterior vamos a aprender una manera muy sencilla de tomar decisiones, siempre
claro, dentro de las estructuras de control.
Por el momento, hasta pronto.
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"
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
SWITCH
"Como un ferrocarril cambiando de va"
La sentencia switch evala la expresin y dependiendo del valor de la expresin, as se
llevar a cabo un "caso" u otro. La sintanxis de SWITCH es la siguiente:
switch(expresin){
case 1:
sentencias a ejecutarse en caso de que expresin valga 1;
break;
case 2:
sentencias a ejecutarse en caso de que expresin valga 2;
break;
default:
sentencias a ejecutarse en caso de que expresin no cumpla con ninguno de los valores
anteriores;
}
Como podrn apreciar, la sentencia break se ha colocado al final de cada posible caso de
valor de expresin, dicindole a PHP que, si el valor de un caso especfico se cumple, el
siguiente caso no habr de ser evaluado, sino que el flujo de nuestro programa continuar
inmediatamente despus de la sentencia SWITCH. Adems, noten la presencia de la palabra
default, la cual est en nuestro SWITCH como un salvavidas, pues en caso de que
expresin no concuerde con ninguno de los posibles casos, la sentencia default se
ejecutar.
Ejemplo:
<?php
$nombre = "Eva";
switch($nombre){
case "Adan":
echo "El nombre es Adn";
break;
case "Abel":
echo "El nombre es Abel";
break;
case "Eva":
echo "El nombre es Eva";
break;
default:
echo "No hay nombre que concuerde";
}
echo "<BR>Esto est fuera de SWITCH";
?>
La salida en pantalla sera la siguiente:
Bien, despus de esto podemos dar por finalizadas las estructuras de control, en nuestra
prxima entrega vamos a hablar de los arreglos (arrays) y las ventajas que stos
representan.
Por el momento, como siempre, hasta pronto.
Arreglos Simples
Como ya vimos con anterioridad, las variables son contenedores de datos en los que
nosotros (o como veremos ms adelante, el USUARIO) guarda datos que, en un
determinado momento y con la ayuda de otros tantos datos, podr convertirse en
informacin. Sin embargo, las variables que hemos visto hasta hoy son del tipo $a =
un_valor. Habr ocasiones en las que guardar ms de un valor en una sola variable se har
necesario, pero en las variables vistas hasta este momento, no es posible, pues si asignamos
primero un valor a una variable y luego le asignamos otro, el nuevo valor sustituir al
primero.
Para resolver nuestro problema, PHP tiene los arreglos o arrays, que no son ms que
variables con la capacidad de guardar ms de un dato.
Para declarar un arreglo o array, todo lo que tenemos que hacer es lo siguiente:
<?php
$libros = array("Don Quijote de la Mancha", "La Saga/Fuga de J.B.", "El Jarama",
"Ulises");
echo $libros[3];
?>
Lo anterior, dicho en simples y sencillas palabras dice:
1. La variable $libros es un arreglo de 4 elementos los cuales son "Don Quijote de la
Mancha", "La Saga/Fuga de J.B.", "El Jarama", "Ulises"
2. Mande a la pantalla el elemento 4 del arreglo (OJO, no es un error de dedo eso del
elemento 4) .
Nuestro resultado en pantalla es:
Antes de que la curiosidad nos corroa (claro, si ustedes ya saben programar, por ejemplo en
C/C++ el suspenso se les muri hace mucho), hemos de aclarar que la variable $libros
contiene 4 elementos: "Don Quijote de la Mancha", "La Saga/Fuga de J.B.", "El
Jarama", "Ulises", sin embargo, la instruccin echo dice echo $libros[3]. La razn de
esto es que los arreglos comienzan su conteo de elementos a partir de cero (0). Hay que
hacer notar que lo anterior es de suma importancia, pues no podemos hacer referencia a un
elemento inexistente dentro de un arreglo, por lo tanto, si nuestra intencin es referirnos al
elemento 4 del arreglo, debemos comenzar nuestro conteo desde 0, con lo que la
instruccin sera como ya hemos visto echo $libros[3].
En caso de que se estn preguntando el resultado de la referencia $libros[4], en la mayora
de las ocasiones no es ms que una pgina en blanco, sin embargo, el resultado tambin
podra ser un tanto inesperado. Como quiera que sea, por favor recuerden siempre de
empezar su conteo desde 0, algo seguro es que PHP no lo olvidar jams.
Eso es en cuanto a lo ms bsico de los arreglos, en nuestro prximo encuentro, algo sobre
arreglos asociativos y los arreglos multidimensionales.
Por el momento, recuerden que como bien dice Sabina: "No hay nostalgia peor, que aorar
lo que nunca jams sucedi!", as que no dejen para NUNCA, lo que pueden hacer DE
INMEDIATO.
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:
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
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";
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:
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:
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:
<?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();
?>
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.
Bien, como podrn ver, el trabajo con funciones facilita la existencia del programador (y
vaya que s lo hace) de una forma enorme. En el caso de que necesitaremos cambiar el
porcentaje del impuesto (ojal que a un porcentaje menor), bastara con cambiar el valor
nica y exclusivamente en el cuerpo de la funcin, y no en cada operacin que efectuamos
a lo largo del programa.
De esta manera, el parmetro que la funcin ha recibido es el precio original del producto
(15.5) y el valor de retorno es el valor contenido en la variable $precio_final, el cual es el
resultado de una operacin matemtica llevada a cabo dentro de la funcin.
Hasta aqu con la primera parte de las funciones, en nuestra siguiente entrega aprenderemos
un poco ms sobre los parmetros de las funciones.
Por el momento, suerte, diversin con sus programas y hasta pronto.
<?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;
?>
<?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;
?>
Muy bien, en cuanto a funciones, lo anterior es lo ms importante. Estamos seguros que con
esto, sus programas se volvern verdaderamente intensos e interesantes. En nuestra
prxima entrega, aprenderemos sobre estilo y algunos consejos de cmo hacer nuestros
programas ms profesionales y documentados.
Por el momento, hasta pronto!
El Estilo.Indentacin
Hasta el momento, en cada uno de los "miniprogramas" que hemos desarrollado, hemos
seguido una cierta cantidad de normas que, si bien no son obligatorias para construir un
programa en PHP, resultan verdaderamente vitales (y en caso de que no trabajen solos, sino
con un grupo de programadores, es una de las costumbres ms importantes y agradecidas
por los dems) en programas complejos y con muchas lneas de cdigo. A continuacin,
veremos con detalle algunas de estas normas, adems de agregar otras tantas.
Indentacin
La indentacin en los programas (no slo en los desarrollados en PHP, sino en casi todos
los lenguajes de programacin) es un buen hbito para la mayor comprensin de los
bloques de cdigo que se van anidando, y que representan un nmero de instrucciones que
llevan a cabo un fin comn (en la gran mayora de las ocasiones).
As por ejemplo, comparemos estos dos segmentos de cdigo:
<?php
$producto = "Camisa";
function descubriendo($producto){
if ($producto == "Camiseta"){
echo "El producto es una Camiseta";
echo "Adis";
}
elseif ($producto == "Camisa"){
echo "El producto es una Camisa";
echo "Adis";
}
else echo "No hay producto";
}
echo "El producto guardado es: <BR>";
descubriendo($producto);
?>
<?php
$producto = "Camisa";
function descubriendo($producto){
if ($producto == "Camiseta"){
echo "El producto es una Camiseta";
echo "Adis";
}
elseif ($producto == "Camisa"){
echo "El producto es una Camisa";
echo "Adis";
}
else echo "No hay producto";
}
echo "El producto guardado es: <BR>";
descubriendo($producto);
?>
Si bien ambos programitas hacen exactamente lo mismo, con cul de los dos se quedaran?
La indentacin nos sirve para comprender el orden en el que el programa fluye, de tal
forma que nos resulte muy difcil perdernos, por ejemplo, en el orden en el que un
if...elseif...elseif...elseif...else, est anidado en nuestro programa.
La indentaci, adems, no afecta el tamao de nuestro archivo, ya que los espacios en
blanco no son tomados en cuenta por el "compilador" de PHP.
En nuestra prxima reunin, hablaremos sobre los comentarios y su enorme importancia.
De momento, la peor de las batallas, es precisamente la que nunca se lleva cabo (que
conste, esto tiene que ver exclusivamente con las batallas que libramos con nosotros
mismos y nuestros conocimientos, ninguna, absolutamente ninguna otra batalla), sigan
programando y hasta pronto!.
El Estilo. Comentario
Continuando con el estilo y la estandarizacin, debemos hablar sobre una de las armas de
entendimiento ms fabulosas que los lenguajes de programacin (incluyendo PHP, claro
est) tienen: LOS COMENTARIOS.
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.
<?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!";
?>
<?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
?>
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.
El Estilo. Estandarizacin
La estandarizacin de un programa, no es ms que tener las ideas claras de lo que queremos
que nuestro programa haga, y la forma en la que nuestro programa habr de ser construido.
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:
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
...
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.
<HTML>
<HEAD>
<TITLE>Proyecto Pgina Dinmica</TITLE>
</HEAD>
<BODY>
<!-- Formato del Ttulo de la pgina-->
<FORM METHOD = "POST" ACTION = "proyecto_1.php">
<FONT FACE = "Verdana" COLOR = "#1200FF">
<CENTER><B><H2>Sistema de Clculo de Impuesto de
Producto</H2></B></CENTER>
</FONT>
Por favor digite el precio del producto:
<INPUT TYPE = TEXT NAME = "precio_original" MAXLENGHT = 5 >
<P>
<INPUT TYPE = "Submit" VALUE = "Calcular Precio">
<?php
/
*************************************************************************
********************
* Programa que calcula el precio final de un producto, a partir de su precio original
ms un impuesto
* Autor:
* Fecha:
*************************************************************************
********************/
function calculo($precio_original){ //Funcin que calcula el precio final
return $precio_final = ($precio_original * 0.13) + $precio_original; //retorna precio
final
}
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!
formato en
caracteres
Decripcin
Valor devuelto
En minscula, retorna am o pm
am o pm
En Mayscula, retorna AM o PM
AM o PM
000 a 999
2004-0212T15:19:21+00:00
January aDecember
1 a 12
0 a 23
01 a 12
00 a 23
00 to 59
I (i
mayscula)
1 si est en formato de
ahorro, 0 si no lo est.
1 a 31
l ('L'
Minscula)
Sunday a Saturday
1 si es bisiesto, 0sino.
01 a 12
Jan a Dec
formato en
caracteres
Decripcin
Valor devuelto
Ingls)
n
Ejemplo: +0200
00 a 59
28 a 31
Ejemplos: 99 o 03
0 a 365
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.
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:
<HTML>
<HEAD>
<TITLE>Proyecto Pgina Dinmica</TITLE>
</HEAD>
<BODY>
<!-- Formato del Ttulo de la pgina-->
<FORM METHOD = "POST" ACTION = "proyecto_1.php">
<FONT FACE = "Verdana" COLOR = "#1200FF">
<CENTER><B><H2>Sistema de Clculo de Impuesto de
Producto</H2></B></CENTER>
</FONT>
<BR>
<BR>
<?php
//Imprimiento la fecha de hoy en la pantalla
$fecha = date("j-m-Y");
echo "<H2> $fecha </H2>";
?>
Por favor digite el precio del producto:
<INPUT TYPE = TEXT NAME = "precio_original" MAXLENGHT = 5 >
<P>
<INPUT TYPE = "Submit" VALUE = "Calcular Precio">
<?php
/
*************************************************************************
********************
* Programa que calcula el precio final de un producto, a partir de su precio original
ms un impuesto
* Autor:
* Fecha:
*************************************************************************
********************/
function calculo($precio_original){ //Funcin que calcula el precio final
return $precio_final = ($precio_original * 0.13) + $precio_original; //retorna precio
final
}
echo "<BR><H2><CENTER>El precio final es:
".calculo($precio_original)."</CENTER></H2>";
/*La salida ser centrada como Header 2, incluyendo el precio final (calculado en la
funcin calculo()*/
?>
La adicin a nuestro proyecto no es, digamos, sustancial, sin embargo, una fecha puesta en
el lugar indicado siempre es bien agradecida.
La adicin anterior, le da a nuestro programa la siguiente salida:
Como vemos, la fecha nos dice que estamos en el cinco de octubre del ao 2006, y luego la
salida del programa sigue siendo la misma.
En nuestra prxima entrega, agregaremos un poco ms de ayuda para nuestros queridsimos
usuarios.
De momento por favor, por favor recuerden: "No hacen falta bombas para destruir un sitio.
No hace falta nada. Abandnalo y se caer en pedazos" (Robert Silverberg). Por favor, no
abandonen nunca el deseo de aprender, o se caer en pedazos. Hasta pronto.
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.
PARA LA SALIDA
<BR>
<?php
//Imprimiento la fecha de hoy en la pantalla
$fecha = date("j-m-Y");
echo "<H2> $fecha </H2>";
?>
<!--INSERTANDO ADICIONES-->
Por favor inserte el tipo de producto:
<INPUT TYPE = TEXT NAME = "tipo_producto" MAXLENGHT = 20 0><BR>
Por favor inserte el nombre del producto:
<INPUT TYPE = TEXT NAME = "nombre_producto" MAXLENGHT = 35 5><BR>
* Fecha:
*************************************************************************
********************/
function calculo($precio_original){ //Funcin que calcula el precio final
return $precio_final = ($precio_original * 0.13) + $precio_original; //retorna precio
final
}
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.
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?
Las opciones de seleccin del usuario sern hechas con base a mens emergentes.
o Para los libros propuestos, el precio ser de 20.00 (ms el respectivo
impuesto)
o Para los discos propuestos, el precio ser de 15.50 (ms el respectivo
impuesto)
El precio ya no se escribir sino que ser calculado dependiendo del tipo del
producto.
<HTML>
<HEAD>
Por el momento recuerden, que el lugar a donde vamos, depende exclusivamente del lugar a
donde QUEREMOS ir. Hasta Pronto.
$precio_original = 0;
Lo hecho aqu recibe el nombre de inicializacin, lo cual no es ms que dar un valor inicial
a una variable con el objetivo de que sta no guarde en su interior cualquier valor de la
memoria, lo que se conoce como "valores basura". Esta es una buena costumbre que sera
bueno que tuvisemos desde un principio, pues no solamente nos servir con PHP, sino con
muchos, muchiiiiiiiisimos otros lenguajes.
if($tipo_prod =="disco"){
$precio_original = 15.5;
}
elseif($tipo_prod=="libro"){
$precio_original = 20;
}
Esta estructura, en conjuncin con la vieta de seleccin (el men emergente o pop up
men) es en realidad la GRAN ADICIN. La estructura toma el valor seleccionado en el
men emergente (disco o libro) y procesa el resultado. Como habrn visto, la
variable$tipo_prod es, en realidad, el nombre de la vieta SELECT y la comparacin de
igualdad ($tipor_prod =="disco")se hace con el valor de la vieta OPTION.
Por otro lado, antes de decir el por qu, la pregunta para el apreciable lector es la siguiente:
por qu en la estructura de control incluimos un elseif en lugar de un simple else?
La respuesta es la siguiente: si la estructura hubiese incluido un else en lugar del elseif que
contiene, cualquier otro valor distinto de "disco" hubiese valido 20, incluyendo un espacio
vaco, por lo que nuestro programa hubiese tenido un valor de 22.60 incluso antes de haber
seleccionado un tipo de producto, lo cual, obviamente, no es aceptable. De esto se deduce
que la sentencia else, si hemos de hacer una comparacin con otra estructura de control, es
similar a la sentencia default en un switch, es decir, si cualquier otra comparacin de la
sentencia switch no se cumple, la sentencia default ser escogida y se ejecutar.
En nuestra siguiente entrega, vamos a hacer una adicin ms a nuestro cdigo, que nos
obligar a hacer una adicin importante a nuestra sentencia if...elseif.
Por el momento, los dejamos con la siguiente reflexin de Giovanni Giacomo Casanova:
"El amor no es ms que una curiosidad". Amemos lo que hacemos, amemos lo que
aprendemos, seamos curiosos, no nos conformemos nunca. Hasta Pronto.
Hasta este punto el usuario tiene la facultad de escribir el nombre del producto que se est
vendiendo es ese momento. Sin embargo, pese a que esto es una facultad, tambin puede
ser un problema, en caso de que el usuario no sea el mejor mecangrafo (digitador para los
ms extremistas). Hay que decir en este punto que, como programadores, debemos asumir
siempre la premisa principal de la ley de Murphy: "Si algo puede salir mal, definitivamente
saldr mal". En otras palabras, debemos pensar siempre en lo peor, y "curarnos en salud".
As pues, vamos a hacer otro men emergente para que el usuario escoja el nombre del
producto que se est vendiendo.
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";
}
<cke:HEAD>
<FORM MET
Hay que decir que en nuestro cdigo hay que agregar al inicio la vieta <HTML> y,
despus de las vietas <HEAD></HEAD> la vieta <BODY>, al igual que, al final las
vietas de cierre </BODY></HTML>
Con esto nos evitamos errores de digitacin. Sin embargo, hay otros errores posibles.
Cules?. Nos enteraremos en nuestra prxima entrega. De momento. Hasta Pronto.
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;
}
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:
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.
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:
<cke:HEAD>
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.
Como vern, eso implica adiciones en muchas partes del cdigo, y correcciones necesarias
en algunas otras partes.
Nuestro cdigo ahora es el siguiente:
<cke:HEAD>
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.
Una nueva pgina HTML para pedir los datos del usuario (correo electrnico y
nombre), la pgina contendr lo siguiente:
<HTML>
< HEAD>
< TITLE>Pgina de ingreso al sistema de compras</TITLE>
< /HEAD>
< BODY>
< FONT FACE = "arial" COLOR = "#1200FF">
< CENTER><B><H3>Por favor digite su nombre y su email</H3></B></CENTER>
< FORM METHOD = GET ACTION = "proyecto_1.php">
< BR>
< BR>
< BR>
< CENTER>
e-mail: <INPUT TYPE = "TEXT" NAME = "correo" MAXLENGHT =
35 5>
NOMBRE: <INPUT TYPE = "TEXT" NAME = "nombre"
MAXLENGHT = 25 5>
< BR>
< BR>
< INPUT TYPE = "SUBMIT" VALUE = "Remitir Informacin">
< /FONT>
< /CENTER>
< /BODY>
< /HTML>
<cke:HEAD>
<cke:TITLE>Proyecto Pgina Dinmica</cke:TITLE></cke:HEAD>
<FORM METHOD="POST" ACTION="proyecto_1.php">
<CENTER>
<font color="#1200FF" face="Verdana"><B><H2>Sistema de Clculo de
Impuesto de Producto</H2></B></font>
</CENTER>
<BR>
<BR>
<?php
//Imprimiento la fecha de hoy en la pantalla
echo "<CENTER><H3>Bienvenido(a) ".$nombre."</H3></CENTER>";
$fecha = date("j-m-Y");
echo "<CENTER><H2> $fecha </H2></CENTER>";
?>
Posiblemente se estn preguntando sobre la utilidad de esta adicin, siendo que lo nico
que hace es transferir el nombre de una pgina a otra. Pues bien, la importancia radica en
realidad, en la posibilidad de almacenar esta informacin en una base de datos y guardar en
dicha base de datos un rcord de las transacciones hechas por dicho usuario, de tal manera
que se pueda dar una clasificacin de un cliente regular hasta un cliente excelente, de tal
manera que el cliente excelente pueda tomar algunas ventajas de su condicin y recibir
descuentos y promociones de cuando en cuando, claro est, gracias al dato de su correo
electrnico que ingres en la pgina login. Adems, hay que decir que a nivel de atencin al
cliente no hay nada ms reconfortante que recibir una bienvenida con nuestro nombre y
apellido.
En nuestra prxima entrega, aprenderemos a sacar las estadsticas elementales de las
personas que entran en nuestra pgina.
Por el momento, sigan experimentando y programando. Hasta pronto.
<cke:HEAD>
<cke:TITLE>Proyecto Pgina Dinmica</cke:TITLE></cke:HEAD>
<FORM METHOD="POST" ACTION="proyecto_1.php">
<CENTER>
<font color="#1200FF" face="Verdana"><B><H2>Sistema de Clculo de
Impuesto de Producto</H2></B></font>
</CENTER>
<BR>
<BR>
<?php
//Imprimiento la fecha de hoy en la pantalla
echo "<CENTER><H3>Bienvenido(a) ".$nombre."</H3></CENTER>";
$fecha = date("j-m-Y");
echo "<CENTER><H2> $fecha </H2></CENTER>";
?>
<CENTER><TABLE BORDER=1>
<TH>TIPO<TH>NOMBRE<TH>CANTIDAD<TH>PRECIO FINAL <TR> <TD>
<SELECT NAME="tipo_prod">
<?php echo "<OPTION VALUE = '$tipo_prod'></OPTION>";?>
<OPTION VALUE="disco">Disco</OPTION>
<OPTION VALUE="libro">Libro</OPTION>
</SELECT><TD>
<SELECT NAME="nombre_prod">
<?php echo "<OPTION VALUE = '$nombre_prod'></OPTION>";?>
<OPTION VALUE="El hombre del traje gris">El hombre del traje gris
- Joaqun Sabina</OPTION>
<OPTION VALUE="Mentiras piadosas">Mentiras piadosas - Joaqun
Sabina</OPTION>
<OPTION VALUE="Cien aos de soledad">Cien aos de soledad - Gabriel
Garca Mrquez</OPTION>
<OPTION VALUE="El jinete polaco">El jinete polaco - Antonio Muoz
Molina</OPTION>
</SELECT><TD>
<?php echo "<INPUT TYPE = TEXT data-cke-saved-NAME = 'cantidad' NAME =
'cantidad' VALUE = '$cantidad' MAXLENGTH = 5 SIZE = 5>"; ?> <TD>
<?php
/*************************************************************************
********************
* Programa que calcula el precio final de un producto, a partir de su precio original ms
un impuesto
* Autor:
* Fecha:
*************************************************************************
********************/
$precio_original = 0;
function calculo($precio_original, $cantidad){ //Funcin que calcula el precio final
return $precio_final = (($precio_original * 0.13) + $precio_original)*$cantidad;
//retorna precio final
}
switch($tipo_prod){
case "disco":
if($nombre_prod == "Cien aos de soledad" || $nombre_prod =="El jinete polaco"){
echo "<H1>El producto escogido es un libro, corrija</H1>";
}
else{
$precio_original = 15.5;
echo "<CENTER>".number_format(calculo($precio_original,
$cantidad),2,'.',',')."</CENTER>";
}
break;
case "libro":
if($nombre_prod == "El hombre del traje gris" || $nombre_prod == "Mentiras
piadosas"){
echo "<H1>El producto escogido es un disco, corrija</H1>";
}
else{
$precio_original = 20.00;
echo "<CENTER>".number_format(calculo($precio_original,
$cantidad),2,'.',',')."</CENTER>";
}
break;
}
/*La salida ser centada como Header 2, incluyendo el precio final (calculado en la
funcin calculo()*/
?></TABLE>
</CENTER>
<CENTER>
<INPUT data-cke-saved-name="Submit" name="Submit" TYPE='Submit'
VALUE='Calcular Precio'>
</CENTER>
<?php
echo "<INPUT TYPE = HIDDEN data-cke-saved-NAME = 'nombre_prod' NAME =
'nombre_prod' VALUE = '$tipo_prod'>";
echo "<INPUT TYPE = HIDDEN data-cke-saved-NAME = 'nombre_prod' NAME =
'nombre_prod' VALUE = '$nombre_prod'>";
echo "<INPUT TYPE = HIDDEN data-cke-saved-NAME = 'nombre_prod' NAME =
'nombre_prod' VALUE = '$cantidad'>";
?>
</FORM>
<?php
$esta_pagina = $_SERVER["PHP_SELF"];
$IP = $_SERVER["REMOTE_ADDR"];
?>
Otra explicacin que se hace necesaria, es la del uso de dos variables predifinidas:
$_SERVER["PHP_SELF"] y $_SEVER["REMOTE_ADDR"]
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?.
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");
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.
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.
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
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.
else{
echo "<H1><CENTER>Usuario o Palabra de Acceso
equivocado</CENTER></H1>";
}
La entrada a cualquier persona que no cometiese el error de dejar en blanco los campos de
nombre de usuario y palabra clave, estara garantizada.
Ahhh bueno!!!, todas las despedidas parecen tener un deje de tristeza,... sin embargo, es
justo decir que no hay nada que deseemos ms en este mundo, que este curso haya servido
para despertar en todos la curiosidad y el "hambre" de conocimiento suficiente para seguir
aprendiendo todo sobre PHP. Y ya que hablamos de "hambre" de conocimiento, recuerden
siempre: "No hay amor ms sincero que el amor a la comida". En otras palabras, amen sus
conocimientos, amen lo que aprenden, gracias por su atencin, gracias por su curiosidad y...
HASTA PRONTO.