Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Pgina 1 de 46
El navegador pide un documento al servidor, en el caso que este documento sea un archivo PHP, el archivo es interpretado y se enva su resultado al navegador. Vamos a ver un ejemplo sencillo de cdigo escrito en php para que nos seams fcil de comprender:
<html> <head> <title>Prueba</title> </head> <body> <? $texto = "Hola mundo"; echo $texto; ?> </body> </html>
Este cdigo producir el siguiente resultado que es lo que se enviar al navegador del visitante:
<html> <head> <title>Prueba</title> </head> <body> Hola mundo </body> </html>
Vemos que el cdigo php esta delimitado por las etiquetas <? y ?>, aunque tambin puede usarse <?php en lugar de <?.Otra caracterstica del php es que las variables se identifican con el signo del dlar ( y que cada instruccin debe $) finalizarse con un punto y coma ( ;).
El XAMPP
El XAMPP es el nico paquete de los que hemos comentado en este captulo disponible para multiplataforma (Windows, Mac OS X, GNU/Linux y
Instructor: Joel Rosales Egua Pgina 2 de 46
Una vez bajado el ejecutable, lo abrimos y vemos que nos pregunta por el idioma en que queremos realizar la instalacin (hay 11, uno de ellos el espaol). Despus de esto, nos dan la bienvenida al asistente de instalacin i, al presionar sobre Siguiente, nos preguntan el directorio sobre el cual queremos realizar la instalacin.
Pgina 3 de 46
Especificamos el directorio de instalacin.Si la instalacin se produce sin problemas, presionamos sobre Acabar y el XAMPP ya estar listo.
Proceso de instalacin.
Pgina 4 de 46
La instalacin se ha finalizado.Si lo ejecutas, podrs visualizar el XAMPP Control Panel Application, donde podrs poner en funcionamiento el Apache, el MySQL, el FileZilla y el Mercury.
XAMPP Control Panel.Tan solo por tener activado el Apache, puedes acceder al http://localhost, donde podrs ver si se ha instalado correctamente el servidor local.
Pgina 5 de 46
Localhost por defecto de XAMPP.Aunque lo puedes eliminar, el localhost por defecto de XAMPP puede ser muy til: des de all puedes acceder atodas las herramientas, y adems puedes ver cul es el estado de este y sus agujeros de seguridad.
Separacin de instrucciones
Las instrucciones se separan con ';', en el caso de ser la ltima instruccin no es necesario el punto y coma.
Comentarios en PHP
Para que en futuras revisiones a tu cdigo por tu parte y sobretodo por pate de r otros programadores este cdigo sea inteligible para la mente humana, es un a buena costumbre comentar lo que se esta haciendo en PHP pero en palabras. De esta manera el cdigo ser mucho mas sencillo de comprender y a su vez de modificar, corregir, ampliar...
Instructor: Joel Rosales Egua Pgina 6 de 46
Como vemos, PHP interpreta como comentario desde el primer /* al primer */ sin tener en cuenta que hay otro */, esto nos producir un error asi que habr que tener cuidado.
Variables en PHP
Una variable es un nombre que contiene unos determinadosdatos, ya sean de texto o numricos, y en php tienen la peculiaridad de ir precedidas por el signo del dolar ($). En PHP no es necesario declarar las variables antes de usarlas y pueden contener texto y nmeros indiferentemente ( ya hablaremos de esto ms adelante ). Vamos a ver un ejemplo de uso de variables:
<? $miVariable = 'Hola '; $miVariable2 = 33; // Imprimimos Hola 33 echo $miVariable.$miVariable2; ?>
Como vemos, asignamos valor a una variable con el operador de igualdad (=), y concatenamos con el operador punto (.). Existe la posibilidad de trabajar con una variable de nombre variable, es decir, podemos acceder a una variable que tenga el nombre que nos viene indicado por el contenido de otra variable, usando ($$):
<? $nombreVariable = "miVariable" ; $$nombreVariable = "Hola"; // Imprimimos Hola echo $miVariable; Instructor: Joel Rosales Egua Pgina 7 de 46
Para que una variable sea accesible desde cualquier parte de nuestro script php, la definiremos cmo global de la siguiente manera:
<? global $miVariableGlobal = 'Hola'; ?>
Variables predefinidas
Hay un seguido de variables que ya vienen definidas en nuestros scripts en php por defecto, estas son las variables predefinidas. n PHP cada vez que se ejecuta E un script, estas variables se crean y nos pueden informar del entorno en el que se est ejecutando dicho script. Para obtener una lista de todas estas variables predefinidas se puede utilizar la funcion phinfo(). De todas estas variables, algunas se crean dependiendo del servidor que se est utilizando y otras son propias de PHP. Si se tra tara de un servidor Apache, la lista de variables es:
y y y y y y y y y y y y y y y y y y y y y y y y
GATEWAY_INTERFACE: SERVER_NAME SERVER_SOFTWARE SERVER_PROTOCOL REQUEST_METHOD QUERY_STRING DOCUMENT_ROOT HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ENCODING HTTP_ACCEPT_LANGUAJE HTTP_CONNECTION HTTP_HOST HTTP_REFERER HTTP_USER_AGENT REMOTE_ADDR REMOTE_PORT SCRIPT_FILENAME SERVER_ADMIN SERVER_PORT SERVER_SIGNATURE PATH_TANSLATED SCRIPT_NAME REQUEST_URL
HTTP_POST_VARS
Este ejemplo mantiene dos Cookies en el cliente. La primera mantiene el contador count y la segunda contiene una lista de los comentarios de cada una de las veces que se ha actualizado la cookie, Visita.
Constantes
Las constantes en PHP tienen que ser definidas por la funcin define() y adems no pueden ser redefinidas con otro valor. Adems, existen una serie de variables predefinidas denominadas:
y y y y y y y y y y
_FILE_: Fichero que se est procesando. _LINE_: Lnea del fichero que se est procesando _PHP_VERSION: Versin de PHP. PHP_OS: Sistema operativo del cliente. TRUE: Verdadero. FALSE: Falso. E_ERROR: Error sin recuperacin. E_WARNING: Error recuperable. E_PARSE: Error no recuperable (sintaxis). E_NOTICE: Puede Tratarse de un error o no. Normalmente permite continuar la ejecucin.
Pgina 9 de 46
Tambin podemos hacer notar que para disponer comentarios de lnea debemos utilizar dos caracteres // Para la impresin de variables utiizaremos inicialmente el comando echo. Un l programa completo que inicializa y muestra el contenido de cuatro variables de distinto tipo es:
<html> <head> <title>Problema</title> </head> <body> <?php $dia = 24; //Se declara una variable de tipo integer. $sueldo = 758.43; //Se declara una variable de tipo double. $nombre = "juan"; //Se declara una variable de tipo string. $exite = true; //Se declara una variable boolean. echo "Variable entera:"; echo $dia; echo "<br>"; echo "Variable double:"; echo $sueldo; echo "<br>"; echo "Variable string:"; echo $nombre; echo "<br>"; echo "Variable boolean:"; echo $exite; ?> </body> </html>
Pgina 10 de 46
Boolean
Lgico
Puede contener 2 valores True o False. Al usarlo cmo entero su valor puede ser 1 ( True ) o 0 ( False ). Un ejemplo tpico de lgico es el resultado de una comparacin:
<?php $var1= 1 != 2 ; // $var1 es true ?>
Integer
Entero
Puede contener enteros ( sin decimales ) positivos y negativos, se pueden escribir en notacin octal, decimal y hexadcimal:
<?php $var1 = 027; // Notacin octal ( 23 en decimal ) $var1 = 23; // Notacin decimal $var1 = 0x17; // Notacin hexadecimal ( 23 en decimal ) ?>
Float
Decimal
En versiones anteriores a la 4.2.0 de PHP se les llamaba double, contienen nmeros decimales positivos o negativos. Si lo usamos cmo entero, su valor se redondea a la baja ( truncamiento ).
Las cadenas con comillas dobles, a parte de \" y \' tienen otros caracteres especiales:
y y y y
\n - Salto de lnea (en el cdigo, no en la presentacin de la pg.) \r - Retorno de carro (Enter) \t - Tabulador \$ - Dlar
La existencia de un carcter especial \$ para el dlar, es porque en el interior de comillas dobles podemos usar variables. Si vamos a acceder a elementos de un vector, lo agruparemos con { y } detrs del $:
<?php // As si $var1 = "php"; $var2 = Array ( "php","html" ); // [0]=>php, [1]=>html $var3 = "aprendo $ var1"; // aprendo php $var3 = "aprendo {$var2[0]}"; // aprendo php // As no $var3 = "aprendo $var2[0]"; // aprendo Array ?>
Si mezclamos una cadena con nmeros ( enteros o decimales ) se utilizar cmo nmero hasta el primer carcter incorrecto ( ver primer ejemplo del captulo ). Si lo mezclamos con lgicos ser False cuando la cadena est vaca.Arribanull vacoNo tiene valor, se comporta como cadena vaca, cero o false.
Arrays
Los Arrays en PHP se pueden utlizar tanto como Arrays indexados o como A rrays asociativos. Los Arrays de una sola direccin, pueden ser tanto escalares como asociativos. En realidad no existen ninguna diferencia entre ellos. Las funciones que se utilizan para crear Arrays de este tipo son list() o array() . En el caso de que no se especifique el indice en un array, el elemento que se asigna se aade al final.
$a[]="hola"
La instruccin anterior aade el string hola al final del array 'a'. Los arrays pueden ser ordenados utilizando las siguientes funciones: asort(), arsort() ksort(), , rsort(), sort(), uasort(), usort() y uksort(). Otras funciones para el manejo de arrays son: count(), next(), prev() y each(). En PHP, los arrays multidimensionales combinan las propiedades de un array unidimensional explicados anteriormente. L os indices de un array multidimensional pueden ser tanto numricos como asociativos. (Nota: hay que tener cuidado con la sintaxis de los arrays multidimensionales asociativos incluidos dentro de una cadena). Ejemplo de array multidimensional asociativo:
Pgina 12 de 46
$a=array( "manzana" => array("color" => "rojo", "tacto" => "suave"), "naranja" => array("color" => "naranja", "tacto" => "rugoso"), "platano" => array("color" => "amarillo", "tacto" => "suave") );
Objetos
Para inicializar un objeto se utiliza el mtodo new , y para acceder a cada uno de sus mtodos se utiliza el operador -> .
Expresiones y operadores
En PHP una expresin es cualquier cosa que pueda contener un valor. Las expresiones ms simples son las variables y las constantes y otras ms complicadas sern las funciones, puesto que cada funcin devuelve un valor al ser invocada, es decir, contiene un valor, por lo tanto, es una expresin. Todas las expresiones en PHP son exactamente igual que en C. Los operadors abreviados, los incrementos, etc, son exactamente iguales. Incluso existen otros operadores adicionales como el operador "." que concatena valores de variables, o el operador "===" denominado operador de identidad que devolver verdadero si las expresiones a ambos lados del oper dor contienen el mismo valor y a la vez a son del mismo tipo. Por ltimo, el operador "@" sirve para el control de errores. Para poder ver como funciona el operador @, veamos un ejemplo:
<?php $res = @mysql_query("select nombre from clientes") or die ("Error en la seleccin, '$php_errormsg'"); ?>
Este ejemplo, utiliza el operador @ en la llamada a mysql_query y en el caso de dar un error, se salvar el mensaje devuelto en una variable denominada php_errormsg. Esta variable contendra el mensaje de err r de cada sentencia y si o ocurre otro error posterior, se machaca el valor con la nueva cadena. PHP mantiene tambin los operadores "'" que sirven para ejecutar un comando del sistema tal y como hace la funcin system() por ejemplo. Las diferencias con C son los operadores de referencia, & y *, puesto que las operaciones por referencias no existen en PHP, aunque si son posibles en PHP4, y que en PHP existen dos operadores and y dos operadores or que son: 'and', '&&' y 'or', '||' respectivamente, que se diferencian en la precedencia de cada uno.
Tipos de operadores
PHP dispone de una gran cantidad de operadores que podramos organizar en las siguientes categoras:
Instructor: Joel Rosales Egua Pgina 13 de 46
Operadores Operadores Operadores Operadores Operadores Operadores Operadores Operadores Operadores Operadores Operadores
de Aritmtica de Asignacin Bit a Bit de Comparacin de Control de Errores de ejecucin de Incremento de Lgica de Cadena de Matrices de Tipo
Operadores Aritmticos
Los operadores de aritmtica sn los operadores bsico para el trabajo con s nmeros, nos permiten sumar dos valores, restarlos, dividirlos... Se trata de operadores binarios en todos los casos ya que requieren dos operandos para funcionar correctamente. Los operadores aritmticos existentes son los siguientes :
y y y y y
Adicin (+) - Devuelve la suma de los dos operandos que recibe el operador. Substraccin (-) - Devuelve la diferencia entre el primer y el segundo operando. Multiplicacin (*) - Devuelve el producto de los operandos. Divisin (/) - Devuelve el cociente en valor flotante de los operandos. Mdulo (%) - Devuelve el resto de dividir el primer operando entre el segundo.Este operador es muy til para saber si un nmero es mltiple de otro
Ejemplo de Mdulo:
<? $a = 3 % 2; // $a toma valor 1 ?>
Al tratar de operar matemticamente con cadenas u otros tipos de datos, PHP intentar transformar a enteros y luego realizar las operaciones deseadas.
Operadores de Asignacin
Los operadores de asignacin, sn aquellos que nos permiten modificar el valor de una variable, el operador de asignacin bsico es el 'es igual a' (=), que da el valor que lo sigue a la variable que lo precede:
<? $miVariable = 'suValor'; Instructor: Joel Rosales Egua Pgina 14 de 46
Asimismo, combinando los operadores de aritmti a, bit a bit o de cadenas con el c operador de asignacion, conseguimos los 'operadores combinados', con los que podemos realizar una operacion de asignacion conjuntamente con otra operacion:
<? $a = 1; $a += 1; // Sumamos y asignamos $a = $a + 1; // Operacion equivalente ?>
En este ejemplo vemos que podemos poner el operador de suma seguido del de asignacion para incrementar el valor de la variable, asimismo podriamos usar el operador de concatenacion (.=), el de multiplicacion (*=)... consiguiendo ef ectos similares.
Operadores de Comparacin
Los operadores de comparacin son operadores en su mayora binarios que nos permiten comparar variables devolviendo un valor booleano a 1 (TRUE) si se cumple la condicin que expresan y a 0 (FALSE) en el caso contario. r Los operadores binarios de comparacin son:
y y y y y y y y
Igual (==) - Devuelve 1 si los operandos son iguales aunque sean de tipo distinto. Idntico (===) - Devuelve 1 si los operandos son iguales y del mismo tipo. Diferente (!= o <>) - Devuelve 1 si los operandos sn distintos. No idnticos (!==) - Devuelve 1 si son distintos o de tipo diferente. Menor que (<) - Devuelve 1 si el primer operando es mas pequeo que el segundo. Mayor que (>) - Devuelve 1 si el primer operando es mas grande que el segundo. Menor o igual que (<=) - Devuelve 1 si el primer operando es mas pequeo o igual que el segundo. Mayor o igual que (>=) - Devuelve 1 si el primer operando es mas grande o igual que el segundo.
Estos operadores se usan mayormente como condicin para las estructurasde control. El operador de comparacin ternario es el '?:', este operador, evala una condicin, que puede ser una operacin de comparacin binaria y si se cumple ejecuta el segundo operando, de lo contrario ejecuta el tercero:
<? echo ($variable == 1) ? 'Vale 1' : 'Vale mas de uno'; ?>
Este ejemplo imprime 'Vale 1' si se cumple la expresion '$variable == 1' de lo contrario imprime 'Vale mas de uno'.
Pgina 15 de 46
Los operadores de incremento (++) permiten aumentar en una unidad el valor de una variable numrica, los de decremento ( -) por lo contrario disminuyen la misma variable en una unidad.
Operadores de Incremento
Estos operadores son operadores unarios por lo que solo reciben un operando al que incrementan o decrementan segn el operador.Estos operadores pueden ponerse delante del operando, en ese caso la oper cin devolver el valor una vez a operado, o despus, caso en el que la operacin devolver el valor antes de operar:
<? $variable = 2; echo $variable++; // Imprime 2 y luego incrementa echo ++$variable; // incrementa y luego imprime 4 ?>
Este tipo de operador se utiliza mucho para el tercer parmetro de un bucle for.
Operadores de Lgica
Los operadores de Lgica nos permiten crear expresiones mas complejas para evaluar nuestras estructuras de control, permitiendonos enlazar varias operaciones de comparacin con los diferentes operadores booleanos. Estos operadores sn mayoritariamente binarios, por lo que reciben 2 operandos, dependiendo de estos operandos (de valor 0 o 1) devolvera 0 (FALSE) o 1 (TRUE), los operadores lgicos binarios sn:
y y y
Y (&& o and) - Devuelve 1 si ambos operandos sn 1 O (|| o or) - Devuelve 1 si algn operando es 1 O exclusivo (xor) - Devuelve 1 si solo 1 operando es 1
En esta expresion primero evaluaremos los parentesis, el primero vale 1 porque se cumple, el segundo 0 porque no se cumple, como usamos Y (&&) y no son 1 los dos vale 0, entonces lo negamos y vale 1
Operadores de Cadena
En esta categora encontramos el operador binario de concatenacion (.), que se encarga de unir dos cadenas dadas la una a continuacion de la otra:
<? $texto = 'hola ' . 'mundo'; echo $texto; ?>
A su vez, existe un operador que hemos incluido entre los operadores de asignacion, que es el operador de asignacin sobre concatenacin (.= este ), operador concatena a una variable un valor dado de la siguiente manera:
<? $texto = 'hola '; $texto .= 'mundo'; echo $texto; ?>
Este operador nos ser de gran utilidad para almacenar una gran cantidad de datos en una misma variable de manera limpia, veamos un ejemplo:
<? $html = "<html>\n"; $html .= "<head>\n"; $html .= "<title>Mi pgina</title> \n"; $html .= "</head> \n"; $html .= "<body>\n"; $html .= "Este es el contenido de mi \n"; $html .= "preciosa pgina \n"; $html .= "</body> \n"; $html .= "</html>\n"; echo $html; ?>
Como vemos, hemos almacenado una pgina HTML en la variable $html de forma limpia y bien presentada para finalmente imprimir el resultado.
Pgina 17 de 46
condicional simple If condicional mltiple Switch repetitiva While repetitiva Do...while repetitiva For repetitiva For...each
Se denominan estructuras condicionales a aquellas en las que se evala una condicin lgica y de acuerdo a ello, se procede a realizar ciertas actividades programadas. Las estructuras repetitivas tambin se denominan bucles, permiten repetir un nmero determinado de veces cierto cdigo pudiendo emplear para ello ciertas condiciones o pruebas lgicas. Cada tipo de estructuras tiene diversas variantes para ser utilizadas en distintos casos. Si uno tiene mucha prctica con otros lenguajes de programacin las estructuras a manejar son muy fciles de comprender, en caso que haya empezado a programar hace poco ser conveniente que elija y practique las formas ms simples.
Pgina 18 de 46
Estructura Condicional If
Cuando se pretende que el programa, una vez llegado a un cierto punto tome un , camino concreto en determinados casos y otro diferente si las condiciones de ejecucin difieren, se utiliza el conjunto de instrucciones:
Estructura If Simple
Es la forma ms sencilla de la sentencia. La estructura base de este tipo de instrucciones es la siguiente:
Pgina 19 de 46
Cuando la ejecucin llega al punto donde se encuentra la instruccin if, el programa verificar el cumplimiento o no de la condicin. Si la condicin es verdadera se ejecutarn las instrucciones 1 y 2, de lo contrario, se ejecutarn las instrucciones A y B.
Estructuras If Anidadas
En los casos en que las condiciones sean varias, se pueden utilizar los if de un modo denominado anidado o anillado, como se indica de la manera siguiente:
Pgina 20 de 46
De este modo se pueden introducir tantas condiciones como se quiera dentro de la condicin principal. Una variante de este sis tema es utilizando la sentencia elseif, que permite en una sola lnea introducir una condicin adicional:
if (Condicion 1) { Instruccin 1; Instruccin 2; } elseif (Condicion 2) { Instructor: Joel Rosales Egua Pgina 21 de 46
Para las condiciones tener en cuenta que disponemos de los siguientes operadores:
y y y y y y
== para ver si una variable es igual a otra. != distinto. >= mayor o igual. > mayor. <= menor o igual < menor
La mejor forma de entender esta estructuracondicional es por medio de ejemplos. El primero que nos plantearemos es generar un valor aleatorio (es decir lo elige la mquina al azar, como extraer una bolilla de un bolillero de lotera) comprendido entre 1 y 10. Luego mostraremos un mensaje si es me nor o igual a 5 o si es mayor a 5. El programa completo es:
<html> <head> <title>Problema</title> </head> <body> <?php $valor=rand(1,10); echo "El valor sorteado es $valor<br>"; if ($valor<=5) { echo "Es menor o igual a 5"; } else { echo "Es mayor a 5"; } ?> </body> </html>
Es importante recordar que siempre la condicin del if debe ir entre parntesis. Si la condicin del if se verifica verdadera (es decir el nmero sorteado es menor o igual a 5) ejecuta el primer bloque que se en cuentra entre llaves. En caso de verificarse falsa la condicin del if se ejecuta el bloque entre llaves que se encuentra despus del else. El valor aleatorio lo generamos llamando a la funcin random pasndole el valor mnimo y mximo:
$valor=rand(1,10);
Pgina 22 de 46
En el primer problema tenemos solo dos caminos posibles, el valor es menor o igual a cinco o es mayor.En un segundo ejemplo mostraremos como disp oner una estructura condicional if anidada. El problema es el siguiente: Generar un valor aleatorio entre 1 y 100. Luego mostrar si tiene 1,2 o 3 dgitos. Como podemos observar estamos en presencia de un problema que tiene tres caminos posibles. El valor puede tener 1 dgito, 2 dgitos o 3 dgitos. Si pensamos un poco podremos identificar que para que tenga un dgito debe generarse un valor entre 1 y 9, para que tenga dos dgitos deber estar comprendido entre 10 y 90, y finalmente para tener 3 dgitos debe ser el valor 100. r La pgina con el programa respectivo es:
<html> <head> <title>Problema</title> </head> <body> <?php $valor=rand(1,100); echo "El valor sorteado es $valor<br>"; if ($valor<=9) { echo "Tiene un dgito"; } else { if ($valor<100) { echo "Tiene 2 dgitos"; } else { echo "Tiene 3 dgitos"; } } ?> </body> </html>
Es importante notar como la segunda estructura if se encuentra contenida entre las llaves del else del primer if. Es decir que si el valor aleatorio es menor oigual a 9 se ejecuta el bloque del verdadero del primer if y no se ejecuta por lo tanto el if anidado en el else. Por el contrario si la condicin del primer if se verifica false se ejecuta el bloque del else del primer if, la misma contiene una estructuraif con sus bloques del verdadero y false. A modo ilustrativo el mismo ejemplo resuelto con la estructura if/elseif ser:
<html> <head> <title>Problema</title> Instructor: Joel Rosales Egua Pgina 23 de 46
Pgina 24 de 46
{ 0 ; en caso 1;
finales;
Veamos un Ejemplo:
<? switch ($i) { case 0: echo "Variable en valor bajo"; break; case 1: echo "Variable en valor alto"; break; default: echo "La variable no es binria"; } ?>
Este cdigo har un switch para la variable $i, en el caso que e sta sea 0, imprimir el mensaje 'Variable en valor bajo', si es 1 imprimir 'Variable en valor alto' y sino, nos dir que la variable no es un nmero decimal. Vemos que cada valor se relaciona con un caso, en el interior del cual realizamos las acciones requeridas y una instruccin llamada break, de lo contrario, se seguiran ejecutando las instrucciones de los dems casos. Finalmente encontramos un caso especial llamado default, este caso se activar si no se ha activado ninguno de los casos anteriores.
Pgina 25 de 46
Esta estructura est en casi todos los lenguaj s. El bloque se repite mientras la e condicin del while sea verdadera. La condicin del while se verifica antes de ingresar al bloque a repetir. Si la misma se verifica falsa la primera vez no se ejecutar el bloque. Veamos un ejemplo: Generar un valor ale atorio entre 1 y 100, luego imprimir en la pgina desde 1 hasta el valor generado (de uno en uno):
<html> <head> <title>Problema</title> </head> <body> <?php $valor=rand(1,100); $inicio=1; while($inicio<=$valor) { echo $inicio; echo "<br>"; $inicio++; } ?> Instructor: Joel Rosales Egua Pgina 26 de 46
La variable $inicio tiene el valor 1 antes de ingresar al while. Cada vez que se ejecuta una vez el bloque del while se incrementa $inicio en uno. Cuando $inicio supere la variable aleatoria $valor finalizar la estructura repetitiva y pasar a ejecutarse la instruccin inmediatamente siguiente a la llave de cerrado. Es importante notar que luego de la condicin del while NO disponemos PUNTO y COMA.
Estructura repetitiva Do
while
El bucle do while es en su esencia igual al bucle while con la dif erncia de que ejecuta las acciones antes de comprobar la condicion, consiguiendo que se ejecuten las acciones una vez si la condicion retorna 0 o FALSE, as, este bucle se ejecutar siempre una vez m que un bucle while si tienen la misma condicion. s Su estructura se puede apreciar de la siguiente manera:
Pgina 27 de 46
Aunque en el ltimo caso no se haya cumplido la condicion de ya que $var1 no seria mas pequeo que 10.
Pgina 28 de 46
Tomemos como ejemplo el hecho de mostrar en la pgina web los nmeros del 1 al 100:
html> <head> <title>Problema</title> </head> <body> <?php for($f=1;$f<=100;$f++) { echo $f; echo "<br>"; } ?> </body> </html>
El primer argumento del for es la inicializacin de una variable, en este caso se inicializa la variable $f con el valor 1. Este primer argumento del for se ejecuta solo una vez. Luego se ejecuta el segundo argumento que es la condicin. Si la misma se verifica como verdadera se ejecuta todo el bloque comprendido entre las llaves de apertura y cerrado. Luego de haberse ejecutado el bloque repetitivo se ejecuta el tercer argumento del for que es el incremento de la variable, en este caso $f++ incrementa el contenido d la variable $f en 1 (tambin podemos poner e en lugar de $f++ la asignacin $f=$f+1). Luego del incremento de la variable se ejecuta nuevamente la condicin del for (segundo argumento), de validarse nuevamente verdadero pasa a ejecutar el bloque repetitivo.Este ciclo se repite hasta que la condicin del for se verifica false.
each
El bucle foreach nos permite iterar para cada elemento de un vector, su sintaxis es sencilla, solo hay que indicar el identificador de la matriz, la expr sion as y e seguidamente la variable que identificar el valor del elemento:
<? $vector = array("uno", "dos", "tres"); foreach ($vector as $valor) { echo "Valor: $valor<br>"; } ?>
Esta expresin tambien nos permite trabajar con vectores con indice, eneste caso trabajaremos as:
<? $vector = array( "uno" => 1, "dos" => 2, "tres" => 3, "diecisiete" => 17 ); foreach($vector as $indice => $valor) { print "\$vector[$indice] => $valor. \n"; } ?>
Como vemos en este caso especificamos la variable que identifica el indice y la que identifica el valor separadas por =>
Pgina 30 de 46
Esta pgina est completamente co dificada en HTML, es decir un formulario contiene marcas HTML puras. La marca <form> y </form> nos permite definir un formulario en la pgina. La marca FORM tiene dos propiedades que debemos inicializar obligatoriamente: action y method. La propiedad actio indica el nombre del archivo que recibir los n datos ingresados por el operador en el formulario y que sern enviados al servidor cuando se presione el botn (submit). La propiedad method indica como se organizan esos datos para enviarlos al servidor, pud iendo ser mediante los
Instructor: Joel Rosales Egua Pgina 31 de 46
La propiedad type nos permite definir el tipo de control y con la propiedad name indicamos el nombre del control. Por ltimo todo formulario tiene un botn de tipo submit:
<input type="submit" value="confirmar">
Tambin utilizamos la marca input pero en la propiedad type indicamos que se trata de un botn de envio de datos. En la propiedad value indicamos el texto que queremos que aparezca en el botn. Ahora necesitamos una pgina con un pequeo programa en PHP que procese los datos ingresados en el formulario:
<html> <head> <title>Captura de datos del form</title> </head> <body> <?php echo "El nombre ingresado es:"; echo $_REQUEST['nombre']; ?> </body> </html>
Para acceder al dato en PHP se cuenta con un vector llamado $_REQUEST indicando como subndice el nombre del cuadro de texto que definimos en el formulario (dicho nombre es sensible a maysculas y minsculas) En nuestro problema slo mostramos por pantalla el valor ingresado en la pgina anterior:
echo $_REQUEST['nombre'];
Pgina 32 de 46
<html> <head> <title>Problema</title> </head> <body> <form action="pagina2.php" method="post"> Ingrese primer valor: <input type="text" name="valor1"> <br> Ingrese segundo valor: <input type="text" name="valor2"> <br> <input type="radio" name="radio1" value="suma">sumar <br> <input type="radio" name="radio1" value="resta">restar <br> <input type="submit" name="operar"> </form> </body> </html>
Es importante notar que se trata nuevamente de un archivo HTML puro, que no tiene cdigo PHP. La entrada de los dos nmeros se efectua en dos controles:
<input type="text" name="valor1"> <input type="text" name="valor2">
Es importante notar que cada text tiene un name DIFERENTE. Para seleccionar el tipo de operacin a efectuar disponemos dos controles de tipo radio:
<input type="radio" name="radio1" value="suma">sumar<br> <input type="radio" name="r adio1" value="resta">restar
Es importante notar que los dos controles tienen el MISMO nombre. Esto es necesario para que el navegador sepa que los dos controles estn relacionados (recordar que cuando uno selecciona un radio se debe deseleccionar el otro) Desde la otra pgina accederemos al value del control seleccionado. Por ltimo disponemos un control de tipo submit para el envio de los datos del formulario. El cdigo de la pgina que procesa el formulario, llamada:"pagina2.php" (la que indicamos en la marca FORM del formulario) es:
<html> <head> <title>Problema</title> </head> <body> <?php if ($_REQUEST['radio1']=="suma") { Instructor: Joel Rosales Egua Pgina 33 de 46
El vector asociativo $_REQUEST tiene tres componentes: $_REQUEST['radio1'] $_REQUEST['valor1'] $_REQUEST['valor2'] En la componente $_REQUEST['radio1'] almacena la cadena "suma" o "resta" segn cual se seleccion en el formulario. Con dos if verificamos cual operacin est seleccionada y procedemos a efectuarla:
if ($_REQUEST['radio1']=="suma") { $suma=$_REQUEST['valor1'] + $_REQUEST['valor2']; echo "La suma es:".$suma; . .
Es importante notar que cada checkbox tiene un nombre distinto. Ahora veamos el cdigo de la pgina que procesa el formulario:
<html> <head> <title>Problema</title> </head> <body> <?php if (isset($_REQUEST['check1'])) { $suma=$_REQUEST['valor1'] + $_REQUEST['valor2']; echo "La suma es:".$suma."<br>"; } if (isset($_REQUEST['check2'])) { $resta=$_REQUEST['valor1'] - $_REQUEST['valor2'] ; echo "La resta es:".$resta; } ?> </body> </html>
Si el checkbox no est seleccionado en el formulario no se crea una entrada en el vector asociativo $_REQUEST, para saber si existe una determinada componente en un vector se emplea la funcin isset, s retorna true significa que existe y por lo i tanto el checkbox est seleccionado. Disponemos dos if a la misma altura ya que los dos controles de tipo checkbox podran estar seleccionados.
Pgina 35 de 46
<html> <head> <title>Problema</title> </head> <body> <form action="pagina2.php" method="post"> Ingrese primer valor: <input type="text" name="valor1"> <br> Ingrese segundo valor: <input type="text" name="valor2"> <br> <select name="operacion"> <option value="suma">sumar</option> <option value="resta">restar</option> </select> <br> <input type="submit" name="operar"> </form> </body> </html>
Cada opcin tiene un valor. El seleccionado es el que se enviara la pgina que procesa el formulario. El texto que aparece dentro del control es el que disponemos entre las marcas option. Ahora la pgina que captura los datos ingresados en el formulario es:
<html> <head> <title>Problema</title> </head> <body> <?php if ($_REQUEST['operacion']==suma) { $suma=$_REQUEST['valor1'] + $_REQUEST['valor2']; echo "La suma es:".$suma; } else { if ($_REQUEST['operacion']==resta) { $resta=$_REQUEST['valor1'] - $_REQUEST['valor2']; echo "La resta es:".$resta; } } ?> </body> Instructor: Joel Rosales Egua Pgina 36 de 46
El vector asociativo $_REQUEST almacena en la componente del control select el valor de la opcin seleccionada. Con una serie de if verificamos el valor seleccionado:
if ($_REQUEST['operacion']==suma) ...
Slo se puede seleccionar un elemento de un control select (ms adelante veremos como seleccionar varios elementos en forma simultnea)
La pgina PHP que procesa los dos datos ingresados en el formulario es:
<html> <head> <title>Problema</title> </head> <body> <?php echo "El nombre ingresado:".$_REQUEST['nombre']; echo "<br>"; echo "El curriculum:".$_REQUEST['curriculum']; ?> </body> Instructor: Joel Rosales Egua Pgina 37 de 46
Pgina 38 de 46
Cdigo abierto. MySQL es una aplicacin de Cdigo abierto y por lo tanto es gratuita, nos permite redistribuir una aplicacin que la contenga y nos permite incluso modificar su cdigo para mejorala o adaptarla a nuestras necesidades. Adems, existe la seguridad de contar con una importante cuota de mercado y de saber que es una solucin estable, mantenida por un buen equipo de desarrolladores y e incluso con soporte de pago. Facilidad. MySQL es un sistema fcil de instalar y configurar en servidores Windows, Linux... y enseguida nos permit ejecutar sencillas e consultas de SQL como la siguiente:
SELECT * FROM tabla_1
Funcionalidad. Quizs, en este apartado, MySQL flaquea un poco frente a sus rivales, pero sin embargo dispone de muc has fnciones vitales para el desarrollo profesional cmo puede ser el volcado online, la duplicacin...
Pgina 39 de 46
Portabilidad. MySQL puede correr en la inmensa mayora de sistemas operativos, por lo que junto a otro lenguaje de programacin de lado de servidor de alta portabilidad como Java, PHP, Perl... nos permite el desarrollo de aplicaciones web fciles de migrar y el acceso y cpia de los datos desde cualquier Sistema Operativo. Velocidad.Por experincias de pruebas con diferentes sistemas de bases de datos y avalados por estudios recientes, podemos afirmar que MySQL es un sistema con una velocidad superior a sus rivales, incluido Oracle, a la hora de realizar instrucciones SQL.
La direccin de la base de datos normalmente ser 'localhost', ya que la ejecutaremos desde el mismo s ervidor en la que esta alojada. El nombre de usuario depender de la instalacin o del servidor si utilizas un servidor gratuito o de pago. Si la instalacin es nueva, la contrasea ser en blanco
Una vez conectados y con una base de datos seleccionada ya podemos empezar con las instrucciones de SQL de consulta, edicion, insercin...
Desconexin MySQL
Finalmente, nunca hay que olvidar la desconexin, indispensable para que no queden puertos abiertos en el servidor y en el servidor de bases de datos:
<?php Instructor: Joel Rosales Egua Pgina 40 de 46
Todos estos cdigos que sern explicados en los prximos captulos del curso, deben estar entre el mysql_connect y el mysql_close.
La funcin, devolver 1 o 0 segn si se ha ejecutado correctamente o no, y en el caso que la consulta requiera resultados, devolver un array MySQL con los datos, que podremos tratar en PHP d la siguiente manera: e
<?php while($row = mysql_fetch_array($qry)) { echo '<br>'.$row[0]; } ?>
Esto nos permitira conseguir los valores de tablas, funciones... de MySQl en nuestras pginas PHP.
INT - Entero, valor numrico positivo o negati o y sin decimales v VARCHAR - Cadena de caracteres, una palabra corta TEXT - Texto, un texto cualquiera
Los dos primeros campos sn de longitud variable, por lo que deberemos especificar un tamao mximo de la siguiente manera:
INT (6) VARCHAR(12)
Ademas, podemos indicar si el campo puede estar vaco o si queremos que tenga un valor predeterminado:
`nombre` varchar(30) NOT NULL default 'eloi'
Pgina 41 de 46
<?php $sql = "CREATE TABLE `agenda` ( `nombre` varchar(30) NOT NULL default 'default', `telefono` int(9) NOT NULL default '000000000', `descripcion` TEXT NOT NULL default '' ) TYPE=MyISAM;"; mysql_query($db, $sql); ?>
Donde anteriormente hemos conectado a la base de datos y seleccionado una base de datos.
Donde tabla ser el nombre de la tabla donde insertaremos los valores 'valor 1'... en los campos campo1... Podremos obviar la parte (campo 1...) si conocem el orden de los campos en la os base de datos, en este caso se escrivir cada valor sucesivamente en el primer, segundo... campo de la tabla. Veamos un ejemplo de insercin a MySQL en PHP:
<?php $sql = "INSERT INTO agenda (nombre, telefono) VALUES ('eloi',555405180)"; mysql_query($sql,$db); ?>
Recordar que $db contiene un identificador de la conexin que hemos explicado anteriormente
Pgina 42 de 46
Consultas MySQL
Para realizar una consulta a una base de datos MySQL desde PHP, deberemos usar dos lenguajes de programacion distintos, el lenguaje PHP, para ejecutar la pgina en el servidor y el lenguaje de SQL para entendernos con la base de datos. Una vez conectados a la base de datos, crearemos la variable $sql, para almacenar la sentencia que ser enviada al s rvidor MySQL usando la funcin e mysql_query(). La sintaxis para realizar una consulta en MySQl es la siguiente:
SELECT campos FROM tabla WHERE condicion
Donde campos son los campos que nos devolver separados por comas o * para devolverlos todos, tabla la tabla en la que trabajaremos y condicion es una condicin que deberan cumplir las entradas devueltas. Esta condicin sera de la forma:nombre = "Jose" Donde tenemos que nombre es un campo que deber ser igual (=) a "Jose", adems del igual (=), tenemos el distinto (!=), el mayor (>), el menor (<), el mayor o igual (>=), el menor o igual (<=) y el parece (like). La consulta sera como sigue:
<? $sql = "select * from agenda where nombre = 'Jose'"; ?>
Adems, podemos aadir las palaras 'order by' y un campo pa ordenar por ese ra campo y 'asc' o 'desc' para que sea ascendente o descendente. Tambien la palabra 'limit' seguida del resultado a empezar, una coma (,) y en nmero de resultados a mostrar para paginarlos. Una vez hecha la instruccin formatearemos y escr ibiremos los resultados:
<? $sql = "select * from agenda where nombre like 'J%' order by nombre limit 0,20"; $resultados = mysql_query($sql,$db); while($row = mysql_fetch_array($resultados)) { echo '<br>'.$row["nombre"].' -'.$row["telefono"]; } ?>
De esta manera sacaremos las 20 primeras entradas con el nombre empezando por J y ordenadas por nombre de manera ascendente. Este tipo de consultas es la ms utilizada ya que incorpora condiciones para mostrar los resultados.
Como vemos, volvemos a utilizar la clausula WHERE para escoger las entradas que hay que editar, podemos actualizar varios campos de la siguiente manera:
UPDATE tabla SET campo = 'valor', campo2 = 'valor2' WHERE condicin
El mtodo no tiene mas secretos que esto, veamos un ejemplo real para ver cmo funciona exactamente desde PHP:
<?php $sql = "UPDATE agenda SET telefono = 555405181 WHERE nombre = 'eloi'"; mysql_query($sql,$db); ?>
Recordar que $db contiene un identificador de la conexin que hemos explicado anteriormente
Recordar que $db contiene un identificador de la conexin que hemos explicado anteriormente
Y es que gracias a los JOIN podemos leer datos de diferentes bases de datos en una nica consulta. Lo que nos permitir disear fcilmente tablas relacionadas entre ellas, veamos un ejemplo:
Pgina 44 de 46
Figura 1: En este ejemplo podemos ver una relacin entre las tablas de empleados y de despachos, y la representacin de un join entre ambas MySQL soporta muchas sintaxis diferentes para la instruccin JOIN en comandos de SELECT, DELETE y UPDATE.
Escribiremos la instruccin de JOIN en el apartado de referncia de tablas ( el WHERE ) de nuestra consulta SQL, escojeremos la sintaxis de JOIN de las mencionadas anteriormente segn el tipo de JOIN que queramos realizar.
A continuacin se explican, con sus ejemplos en MySQL, los principales tipos de JOIN.
INNER JOIN Este tipo de JOIN une los resultados coincidentes en ambas tablas, no devolver un registro de una tabla si no coincide con otro de la otra.
SELECT * FROM empleados,despachos WHERE empleados.despacho_id = despachos. id
Pgina 45 de 46
LEFT (RIGHT) JOINLEFT JOIN retorna los registros de la primera tabla aunque no coincidan con ninguno de la otra. RIGHT JOIN realiza lo mismo pero en base a la segunda tabla.
SELECT * FROM empleados LEFT JOIN despachos ON empleados.despacho_id = despachos. id
NATURAL JOINEste JOIN retorna los registros de ambas tablas que coincidan en todos los campos con el mismo nombre ( en el ejemplo empleados.nombre y despachos.nombre ).
Pgina 46 de 46