Sei sulla pagina 1di 46

Desarrollo de Pginas Web con PHP y MySQL

Manual de Referencia rpida

Unidad I. Introduccin a PHP


Qu es PHP
PHP es lo que llamamos un lenguaje de programacin del lado del servidor, esto significa que el cdigo se interpreta en el servidor y no en el ordenador del usuario. El cdigo php interpretado, produce un resultado que es enviado al navegador del visitante en forma de HTML, imagen, documento .doc... de ninguna manera el navegador del visitante accede al cdigo fuente en php sino solo a su resultado en HTML.

Instructor: Joel Rosales Egua

Pgina 1 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

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 ( ;).

Instalacin del Servidor Apache y PHP


Para poder empezar a aprende a programar en PHP, debemos tener un servidor r web con PHP instalado, y lo ms cmodo para trabajar es que lo tengamos en nuestro propio ordenador. Las herramientas que necesitamos, son un servidor web ( en el curso se utiliza Apache pero el IIS de Window tambin puede servir s ), el propio PHP y posiblemente el motor de bases de datos MySQL. Todo esto se puede instalar por separado, o se puede hacer con paquetes que instalan y configuran PHP, Apache y MySQL. Aunque en este captulo ensear a instalar el XAMPP, existen otros como el WAMP o el easyPHP.

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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
Solaris). Incluye, entre otros, aplicaciones como el Apache, el MySQL, el intrprete PHP, el OpenSSL, el phpMyAdmin, el Mercury Mail Transport S ystem y el FileZilla FTP Server. El primer que hacemos es descargarnos el instalador. Os explicar la instalacin para WINDOWS, pero los paquetes de instalacin de otros SO los encontramos en la misma pgina. Nos damos cuenta de que la versin para WINDOWS supera los 30 MB, as que tened paciencia los que no dispongan de conexin rpida a Internet o bajaos el WAMP Server o el EasyPHP (al final del artculo).

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.

El asistente nos da la bienvenida.

Instructor: Joel Rosales Egua

Pgina 3 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

Especificamos el directorio de instalacin.Si la instalacin se produce sin problemas, presionamos sobre Acabar y el XAMPP ya estar listo.

Proceso de instalacin.

Instructor: Joel Rosales Egua

Pgina 4 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

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.

Instructor: Joel Rosales Egua

Pgina 5 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

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.

Bases de la Sintaxis de PHP


Insercin de Cdigo PHP en HTML
Para la programacin de cdigo PHP: 1. Se utilizar las etiquetas <? .... ?> Slo si se activa la funcin short_tags() o la bandera de configuracin short_open_tag. 2. Normalmente se utilizar las etiquetas <?php .... ?> 3. Se utilizarn las etiquetas <script languaje="php"> .... </script> slo si se activan los tags para ficheros 'asp' con la bandera deconfiguracin asp_tags.

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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
Los comentarios que soporta PHP sn los de C, C++ y los del shell de Unix, asi podemos usar // y /* */ para comentarios y comentarios multilinea respectivamente como haramos en C:
<? echo 'Esto se ve'; // esto no se ve echo 'esto tambien se ve '; /* esto tampoco se ve */ ?>

O tambien podemos usar # como en los comentarios del shell de Unix:


<? # esto no se ve echo 'pero esto si'; ?>

Tendremos cuidado con no poner un comentario multilnea en el interior del otro:


<? /* /* No hacer nunca esto * */ / ?>

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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
?>

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

las variables creadas por el propio PHP son:


y y y y y

argv argc PHP_SELF HTTP_COOKIE_VARS HTTP_GET_VARS


Pgina 8 de 46

Instructor: Joel Rosales Egua

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
y

HTTP_POST_VARS

mbito de una Varible


El mbito de una variable en PHP es exactamente igual que en C o en Perl tomando siempre en cuenta los ficheros incluidos al principio de cada programa.

Variables de los forms HTML


Cuando existe un form en HTML, inmediatamente despus de ser enviado, dentro del mbito PHP se crean automticamente una variable por cada uno de los objetos que contiene el form. Si se activa la directiva <?php_track_vars?> o con la variable track_vars todo o l enviado por los mtodos POST y GET estar en las variables $HTTP_POST_VARS y $HTTP_GET_VARS.

Variables de Cookies HTML


La funcin SetCookie() es una funcin PHP para asignar Cookies a un ordenador cliente. Esta funcin se debe llamar siempre antes de com enzar a crear la pgina puesto que debe formar parte de la cabecera de HTML.Cualquier Cookie que se enva a un cliente, se convierte dentro de PHP en una variable. Par aadir valores a una cookie se utilizan los corchetes, [], por ejemplo:
$count++; setCookie("count", $count;, time()+3600); SetCookie("Visita[$count]", "$valor",time()+3600);

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

Instructor: Joel Rosales Egua

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
Ejemplo:
<?php define("CONSTANTE", "hello world."); echo CONSTANTE; ?>

Tipos de Datos en PHP


En PHP no es necesario definir el tipo antes de utilizarla, las mismas se crean en el momento de emplearlas. Las variables se declaran cuando se le asigna un valor, por ejemplo:
$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.

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>

Instructor: Joel Rosales Egua

Pgina 10 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
Hemos utilizado un comando echo para mostrar los mensajes, otro el contenido de variables y finalmente otro para imprimir marcas HTML. Este proceso puede acortarse un poco pero para que sea ms claro inicialmente tomaremos el camino largo de hacer la impresin de un dato con cada comando echo. Tambin Podemos forzar un tipo determinado, con la funcin settype o ente parntesis delante de la variable uno de los siguientes tipos de datos:

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 ) ?>

Si lo utilizamos cmo lgico su valor es False si es 0 o True en cualquier otro caso.

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

String - Cadena de caracteres


Es una lista de caracteres ( letras, cifras, signos... ) en un orden determinado, por ejemplo "hola mundo". Los represent amos delimitados con comillas dobles o simples. No podemos utilizar el mismo tipo de comillas en el interior de una cadena que para delimitarla, en este caso le tendremos que poner un\ delante para diferenciarla del final de la cadena, y si se puede confu ndir, \\
<?php // As si $var1 = "pongo \ delante de las \" pero no de las ' "; $var1 = 'pongo \ delante de las \' pero no de las " '; $var1 = "pongo \\"; // As no $var1 = "pongo " donde quiero"; // Mal ! " $var1 = "pongo \"; // Mal ! \ Instructor: Joel Rosales Egua Pgina 11 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
?>

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:

Instructor: Joel Rosales Egua

Pgina 12 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

$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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
y y y y y y y y y y y

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 una adicin:


<? $a = 1 + 2; // $a toma valor 3 ?>

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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
?>

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

Instructor: Joel Rosales Egua

Pgina 15 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

Operadores de Control de Errores


Para evitar que se muestre en pgina un determinado error que se puede pr oducir eventualmente en una linea PHP dispone del operador de control de errores. Este operador que se representa con el signo arroba (@), permite evitar que se imprima en la pgina de resultado un error prodcido por la ejecucin del cdigo PHP en una lnea determinada:
<?php echo 'Hola mundo'; @ funcionquenoexiste (); // Esto debera producir un error ?>

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

Veamos un ejemplo para ver como funcionan estos operadores:


<? echo ((1 == 1)&&(2 != 2)); // Devuelve 0 ?> Instructor: Joel Rosales Egua Pgina 16 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
Existe otro operador lgico, en este caso unario, que es el operador No (!), este operador delante de un valor binario, devuelve el valor contrario (0 si es 1 y 1 si es 0):
<? echo !((1 == 1)&&(2 != 2)); // Devuelve 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.

Instructor: Joel Rosales Egua

Pgina 17 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

Unidad II. Estructuras de Control en PHP


Qu son las estructuras de control?
Porque los scripts PHP no son lineales, debemos poder controlar la ejecucion de una accin o de un determinado bloque de acciones, para hacer esto, PHP dispone de lo que se llama estructuras de control, que nos permiten ejecutar o no, una o mas veces un determinado bloque de acciones. Estas estructuras son:
y y y y y y

Estructura Estructura Estructura Estructura Estructura Estructura

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.

Instructor: Joel Rosales Egua

Pgina 18 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

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:

Siendo su programacin en PHP tal como sigue:


if (Condicin) { Instruccin 1; Instruccin 2; }

Estructura If, else y elseif.


Sirve para ejecutar una instruccin opcional en caso de que la condicin no se cumpla, la estructura base de este tipo de instrucciones es la siguiente:

Instructor: Joel Rosales Egua

Pgina 19 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

Siendo su programacin en PHP tal como sigue:


if (Condicin) { Instruccin 1; Instruccin 2; } else { Instruccin A; Instruccin B; }

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:

Instructor: Joel Rosales Egua

Pgina 20 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

Siendo su programacin en PHP tal como sigue:


if (Condicion 1) { Instruccin 1; Instruccin 2; } else { if (Condicion 2) { Instruccin A; Instruccin B; } else { Instruccin X; Instruccin Z; } }

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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
Instruccin A; Instruccin B; } else { Instruccin X; Instruccin Z; }

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);

Instructor: Joel Rosales Egua

Pgina 22 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
Imprimimos el valor generado a los efectos de controlar el resultado:
echo "El valor sorteado es $valor<br>";

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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
</head> <body> <?php $valor=100;//rand(1,100); echo "El valor sorteado es $valor<br>"; if ($valor<=9) { echo "Tiene un dgito"; } elseif ($valor<100) { echo "Tiene 2 dgitos"; } else { echo "Tiene 3 dgitos"; } ?> </body> </html>

Estructura condicional mltiple Switch


En muchas ocasiones, programando en PHP, nos encontramos que queremos hacer una u otra accin dependiendo del valor de una variable, en este caso, podramos usar una sucesin de condicionales if, pero el cdigo resultante ser confuso y difcil de modificar en el futuro. En PHP y en general todos los lenguajes de programacin de un nivel mas o menos alto, dispone de un ciclo que nos ir como anillo al dedo en este caso, el ciclo switch que nos realizar un bloque de acciones para cada valor de una variable dada. Este tipo de condiciones se puede representar:

Instructor: Joel Rosales Egua

Pgina 24 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
Siendo su forma de programacin la siguiente:
<? switch ($variable) case 0: sentencias en caso break; case 1: sentencias break; ... default: sentencias } ?>

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

Estructura repetitiva While


Esta instruccion nos permite efectuar un bloque de acciones mientras se cumpla una determinada condicion, cuando deje de cumplirse, se continuar ejecutando el resto del cdigo PHP, la condicion se cumple mientras no deresultado 0 y esta formada por operaciones PHP, sobretodo por operaciones lgicas y de comparacion. Su estructura bsica es como sigue:

Instructor: Joel Rosales Egua

Pgina 25 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

Siendo su sintaxis la siguiente:


while (condicin) { [Instrucciones]; }

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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
</body> </html>

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.

Evitar bucles infinitos


Hay que tener cuidado con este tipo de bucle, en el interior d bloque de acciones el siempre se debe modificar algun parametro de la condicion para que esta acabe cumpliendose, de lo contrario crearemos un bucle infinito.

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:

La sintaxis de este tipo de bucles es:


{ [Instrucciones]; } while (condicin);

Instructor: Joel Rosales Egua

Pgina 27 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
Veamos como ejemplo el siguiente cdigo:
<? $var1 = 0; do { echo "\$var1 = $var1<br>"; $var1 ++; } while ($var1 <= 10); ?>

Si ejecutamos este ejemplo, veremos como imprime:


$var1 $var1 $var1 $var1 $var1 $var1 $var1 $var1 $var1 $var1 $var1 = = = = = = = = = = = 0 1 2 3 4 5 6 7 8 9 10

Aunque en el ltimo caso no se haya cumplido la condicion de ya que $var1 no seria mas pequeo que 10.

Estructura repetitiva For


El bucle for nos permite ejecutar un determinado bloque de acciones un nmero determinado de veces, a esta estructura le pasaremos tres parmetros que separaremos por punto y coma (;) y que sern: accion inicial - Inicializa la variable de control del bucle condicion - Se evalua en cada iteracion, cuando devuelve 0 o FALSE se continua ejecutando el cdigo de despus del for accion - Se ejecuta en cada bucle y debe modificar la variable de la condicion Su estructura bsica es como sigue:

Instructor: Joel Rosales Egua

Pgina 28 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

Su sintaxis bsica es:


for([Inicializacin de la variable];[Condicin];[Incremento o decremento de la variable]) { [Instrucciones]; }

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>

Quien no ha visto la estructura for en otro lenguaje pasamos a explicarla:


for($f=1;$f<=100;$f++) { Instructor: Joel Rosales Egua Pgina 29 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
echo $f; echo "<br>"; }

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.

Estructura repetitiva For

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

Instructor: Joel Rosales Egua

Pgina 30 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

Unidad III. Trabajo con Formularios HTML en PHP


Enviar datos con un Formulario
El proceso para el manejo de FORMULARIOS requiere generalmente dos pginas, una que implementa el formulario y otra que procesa los datos cargados en el formulario. La estructura mnima de un formulario es la siguiente: para la entrada de un nombre de persona, un objeto text y un botn para el envo del dato al servidor:
<html> <head> <title>Formulario de entrada del dato</title> </head> <body> <form method="post" action="pagina2.php"> Ingrese su nombre: <input type="text" name="nombre"> <br> <input type="submit" value="confirmar"> </form> </body> </html>

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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
mtodos post o get (normalmente los datos de un formulario se envian mediante el mtodo post). Para crear un cuadro de texto para el ingreso del nombre debemos definir un objeto de tipo "text" y darle un nombre:
<input type="text" n ame="nombre">

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'];

Permitir elegir una opcin en un formulario


Para permitir a los usuarios elegir una de entre varias opciones en un formulario se dipone del control de tipo Radio, para analizar este control dispondremos un ejemplo: Implementar un formulario que solicite la car de dos enteros, uno en cada text. ga Disponer dos controles de tipo radio que nos permitan seleccionar si queremos sumar o restar los dos valores ingresados:

Instructor: Joel Rosales Egua

Pgina 32 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

<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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
$suma=$_REQUEST['valor1'] + $_REQUEST['valor2']; echo "La suma es:".$suma; } else { if ($_REQUEST['radio1']=="resta") { $resta=$_REQUEST['valor1'] - $_REQUEST['valor2']; echo "La resta es:".$resta; } } ?> </body> </html>

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

Permitir elegir una o mltiples opciones en un formulario


Para permitir a los usuarios elegir niguna, una o varias opciones en un formulario se dipone del control de tipo checkbox, para analizar este control dispondremos de otro ejemplo similar al anterior: Implementar un formulario que solicite la carga de dos enteros, uno en cada text. Disponer dos controles de tipo checkbox que nos permitan seleccionar si queremos sumar y/o restar los valores ingresados. El formulario html tiene el siguiente cdigo:
<head> <title>Problema</title> </head> <body> <form action="pagina2.php" method="post"> Ingrese primer valor: <input type="text" name="valor1"> <br> Ingrese segundo va lor: <input type="text" name="valor2"> <br> <input type="checkbox" name="check1">sumar <br> Instructor: Joel Rosales Egua Pgina 34 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
<input type="checkbox" name="check2">restar <br> <input type="submit" name="operar"> </form> </body> </html>

Lo nuevo en este problema son los dos controles de tipocheckbox:


<input type="checkbox" name="check1">sumar <br> <input type="checkbox" name="check2">restar <br>

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.

Mostrar listas de opciones en un formulario


Si en vez de mostrar botones de opcin o casillas de verificacin queremos mostrar un cuadro de lista con las opciones a elegir, podremos disponer del control SELECT, veamos un ejemplo de su uso: Implementar un formulario que solicite la carga de dos enteros, uno en cada "text". Disponer un control de tipo select que nos permita seleccionar si queremos sumar o restar los dos valores ingresados:

Instructor: Joel Rosales Egua

Pgina 35 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

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

Lo nuevo que aparece en este formulario es el control de tipo select.


<select name="operacion"> <option value="suma">sumar</option> <option value="resta">restar</option> </select>

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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
</html>

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)

Permitir el ingreso de texto con varias lneas


Cuando deseamos incluir una pgina donde se permita ingresar un tex de to tamao considerable (como los comentarios), se puede emplear el control Textarea. Este control se diferencia del "text" en que permite el ingreso de muchas lneas. Lo probaremos implementando un problema que permita ingresar el curriculum de una persona:
<html> <head> <title>Problema</title> </head> <body> <form action="pagina2.php" method="post"> Ingrese nombre:<input type="text" name="nombre"><br> Ingrese su curriculum:<br> <textarea name="curriculum"></textarea> <br> <input type="submit" value="C onfirmar"> </form> </body> </html>

La sintaxis de este control es bastante diferente a la del control text:


<textarea name="curriculum"></textarea>

Si queremos que aparezca inicializado con texto debemos disponerlo en:


<textarea name="curriculum">Hola Mund o</textarea>

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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
</html>

Instructor: Joel Rosales Egua

Pgina 38 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

Unidad IV. Acceso a Bases de Datos MySQL


Introduccin a MySQL
MySQL es un sistema gestor de bases de datos relacionales en SQL, esto significa que permite la gestion de los datos de una BBDD relacional usando un lenguaje de consulta estructurado. Y, por tanto, que a partir de una oracion, MySQL llevar a cabo una determinada accion sobre nuestra base de datos. MySQL es un excelente gestor de bases de datos que la sitan despus de Oracle cmo la mejor solucin a nivel tcnico por las caractersticas que detallaremosa continuacin:
y

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

...que nos devolver todos los datos de la tabla tabla_1.


y

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

Instructor: Joel Rosales Egua

Pgina 39 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
y

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.

Conexin a MySQL con PHP


Antes de empezar a trabajar con una base de datos de MyS QL, debes conectarte al servidor de bases de datos, para hacerlo debes conocer la direccion, el nombre de usuario y la contrasea de dicha base de datos.
y y y

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

Conexin a la Base de Datos


Conociendo estos tres datos rea lizaremos la conexin
<? $direccion = 'localhost'; $usuario = 'usuario'; $password = 'password'; $db=mysql_connect($direccion,$usuario,$password); ?>

Seleccion de la Base de Datos


Una vez hemos realizado la conexin, tenemos que seleccionar sobre que base de datos queremos trabajar.
<? mysql_select_db("nombre_de_la_db",$db); ?>

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

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
mysql_close($db); ?>

Todos estos cdigos que sern explicados en los prximos captulos del curso, deben estar entre el mysql_connect y el mysql_close.

Ejecutar comandos de MySQL en PHP


Habiendo conectado a la base de datos, podemos ejecutar comandos de MySQL utilizando la funcin mysql_query, pasandole la cadena de conexin $db y el comando que queremos ejecutar de la sigui nte manera: e
<?php $qry = mysql_query($db,'COMANDO MySQL'); ?>

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.

Creacin de Tablas con MySQL


Para crear una tabla primero debemos conocer un poco los tipos de datos de MySQL, y aunque MySQL tiene una enorme cantidad de tipos, nos quedaremos con los tres principales, con los cuales podremos trabajar casi todos los tipos de tablas:
y y y

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'

Instructor: Joel Rosales Egua

Pgina 41 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
Conociendo esto ya podemos realizar una creacin de tabla, lo que haremos con CREATE TABLE de la siguiente manera:
CREATE TABLE `agenda` ( `nombre` varchar(30) NOT NULL default 'default', `telefono` int(9) NOT NULL default '000000000', `descripcion` TEXT NOT NULL default '' ) TYPE=MyISAM;

Veamos un ejemplo entero ejecutaramos en PHP:

de comando CREATE TABLE y de cmo lo

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

Insercin de datos en MySQL


La insercin de datos en MySQL se realiza cmo cualquier consulta MySQL, en el caso concreto del PHP, se utiliza la funcin mysql_query con una q uery parecida a la siguiente:
INSERT INTO tabla (campo1, campo2...) VALUES ('valor 1','valor 2'...)

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

Instructor: Joel Rosales Egua

Pgina 42 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

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.

Editar datos con MySQL


La edicin de datos en mysql, combina opciones que hemos visto al Insertar datos a MySQL y en la Consulta MySQL, tendremos que hacer una consulta cmo la siguiente:
Instructor: Joel Rosales Egua Pgina 43 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida
UPDATE tabla SET campo = 'valor' WHERE condicion

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

Borrar datos con MySQL


Borrar unas determinadas filas de una tabla de MySQL es incluso ms sencillo que editarlas, pues solo es necesario indicar que entradas queremos borrar con una clausula WHERE y en que tabla lo haremos, y esto junto con la palabra DELETE FROM nos darn el resultado que esperamos:
DELETE FROM tabla WHERE

Un ejemplo del cdigo desde PHP:


<?php $sql = "DELETE FROM agenda WHERE nombre = 'eloi'"; mysql_query($sql,$db); ?>

Recordar que $db contiene un identificador de la conexin que hemos explicado anteriormente

Combinar Tablas en MySQL: JOIN


Un join es una combinacin de dos o ms tablas de una base de datos relacional, es una instruccin de lo ms imprescindible si queremos realizar una aplicacin que realice un uso correcto e intensivo de un gestor de Bases dedatos cmo MySQL.

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:

Instructor: Joel Rosales Egua

Pgina 44 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

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

Instructor: Joel Rosales Egua

Pgina 45 de 46

Desarrollo de Pginas Web con PHP y MySQL


Manual de Referencia rpida

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

RIGHT JOIN realiza lo mismo pero en base a la segunda tabla.


SELECT * FROM empl eados NATURAL JOIN despachos

Instructor: Joel Rosales Egua

Pgina 46 de 46

Potrebbero piacerti anche