Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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:
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:
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
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
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!!!
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
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:
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
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";
}
?>
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){
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!
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++;
}
?>
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.
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:
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.
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.
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.
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":
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.
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:
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:
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:
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:
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>";
}
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){
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:
}
echo por_defecto("Gabriel Garca Mrquez");
?>
Como ya habn imaginado, lo anterior produce la siguiente salida:
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.
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:
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.
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
000 a 999
2004-0212T15:19:21+00:00
formato en
caracteres
Decripcin
Valor devuelto
1 a 12
0 a 23
01 a 12
00 a 23
00 to 59
I (i
mayscula)
l ('L'
Minscula)
1 si es bisiesto, 0 sino.
01 a 12
00 a 59
28 a 31
0 (para el Domingo) a 6
(para el Sbado)
Mon a Sun
1 a 31
1 a 12
formato en
caracteres
Decripcin
Valor devuelto
4.1.0)
Y
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.
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:
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:
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 salida ser centada como Header 2, incluyendo el precio final (calculado en la
funcin calculo()*/
?>
La salida de estas adiciones es:
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.
$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">
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";
}
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.
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:
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:
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:
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
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.
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: