Vous êtes sur la page 1sur 18

Desarrollo de aplicaciones Web utilizando el lenguaje de programacin PHP

PHP es un lenguaje creado por varias personas. Inicialmente fue desarrollado en 1994 por Rasmus Lerdorf
como un CGI escrito en C para poder interpretacin algunos comandos que no soportaban los lenguajes
existentes. Originalmente al PHP se le denomino Personal Home Page Tools (Hoy en da Hypertext Pre-processor)
y adquiri algo de xito cuando otras personas pidieron a Rasmus les permitiera usar sus programas en sus
propias pginas. Esto motivo a su diseador incluir una serie de comandos para procesar formularios al que le dio
el nombre de FI (Form Interpreter), en conjunto, estas dos herramientas se denominaron PHP/FI.

Comandos fundamentales del lenguaje


PHP permite la definicin de variables. Durante la ejecucin del script el valor de la variable puede variar
tanto de tipo como de valor. En PHP (al igual que en JavaScript) no es forzoso declarar las variables debido a que
todo identificador que tiene antepuesto el smbolo $ se le considera como variable. PHP es un lenguaje sensible al
contexto ya que diferencia entre maysculas y minsculas.

Los tipos de datos ms comunes de php son:

Enteros Nmeros enteros positivos y negativos


Dobles Nmeros decimales o de coma flotante
Cadenas Cadenas de texto
Booleano Valores True o False
Arreglo Tipo especial de coleccin de valores
Objeto Tipo especial de dato complejo

Los valores numericos se pueden especificar usando una de las siguientes sintaxis:

$a = 1234; # nmero decimal


$a = -123; # un nmero negativo
$a = 0123; # nmero octal (equivalente al 83 decimal)
$a = 0x12; # nmero hexadecimal (equivalente al 18 decimal)
$a = 1.234; # nmero doble
$a = 1.2e3; # otra forma de numero doble o de coma flotante

PHP realiza la conversin de tipos en funcin de los operandos y el operador. La expresin 10 + 20 = 30


es posible ya que PHP realiza la conversin de la primer variable a numrica para poder sumar 10 + 20 = 30.
Existen dos funciones que permiten saber el tipo de variables que se estn usando y as poderlas convertir:

gettype().- recibe el tipo de variable y.


settype($variable,'tipo variable').- transforma el tipo de $variable a tipo variable.

Variables caractersticas de PHP


argv Array de argumentos pasados en la ejecucin del script.
$_SERVER['argc'] Nmero de parmetros pasados al script en su ejecucin.
$_SERVER['PHP_SELF'] Nombre del script que se est ejecutando
$_COOKIE Array asociativo de pares (clave,valor) pasados a travs de cookies
$_GET Array asociativo de pares (clave,valor) pasados a travs de GET
$_POST Array asociativo de pares (clave,valor) pasados a travs de POST
$_FILES Array asociativo que contiene informacin de los ficheros recibidos mediante POST
$_ENV Array asociativo de pares (clave,valor) del entorno
$_SERVER Array asociativo de pares (clave,valor) del servidor
$_SESSION Array asociativo de pares (clave,valor) de sesion

L.I. Vctor Hernndez Rodrguez


Pgina 1
Como muchos lenguajes de programacin, php tambin permite constantes que son valores que se van a
mantener a lo largo de la ejecucin del script y que posiblemente se quieran usar a lo largo del mismo en varias
ocasiones. Para ello se usa la sintaxis: define("nombre de la constante", valor);

Php tambin cuenta con los siguientes operadores:

Operadores de asignacin
= Asigna a la parte derecha el valor izquierdo
+= Realiza la suma de la derecha con la izquierda y la asigna a la derecha
-= Realiza la resta de la derecha con la izquierda y la asigna a la derecha
*= Realiza la multiplicacin de la derecha con la izquierda y la asigna a la derecha
/= Realiza la divisin de la derecha con la izquierda y la asigna a la derecha
%= Se obtiene el resto y se asigna
.= Concatena el valor de la izquierda con la derecha y lo asigna a la derecha

Operadores lgicos
! Operador NO o negacin. Si era true pasa a false y viceversa
and Operador Y, si ambos son verdaderos vale verdadero
or Operador O, vale verdadero si alguno de los dos es verdadero
xor Verdadero si alguno de los dos es true pero nunca ambos
&& True si ambos lo son
|| True si alguno lo es

Operadores condicionales
== Comprueba si dos nmeros son iguales
!= Comprueba si dos nmeros son distintos
> Mayor que, devuelve true en caso afirmativo
< Menor que, devuelve true en caso afirmativo
>= Mayor o igual
<= Menor o igual

En el uso de cadenas si est encerrada entre comillas dobles ("), las variables que estn dentro de la
cadena sern expandidas (mostradas), el carcter de barra invertida o slash ("\") se puede usar para especificar
caracteres especiales:

Secuencia Significado
\n Nueva lnea
\r Retorno de carro
\t Tabulacin horizontal
\\ Barra invertida
\$ Signo del dlar
\" Comillas dobles

Otra forma de delimitar una cadena de caracteres es usando comilla simple (). Pero los nicos caracteres
especiales que sern comprendidos son \\ y \, y las variables no se expandirn. Otra forma de delimitar cadenas es
usar documentos incrustados (<<<). Se debe proporcionar un identificador despus de <<<, y seguidamente el
texto que contendr el documento incrustado y se cierra al escribir el mismo identificador.

$str = <<<EOD Ejemplo de cadena.


Expandiendo mltiples lneas usando sintaxis
de documento incrustado.
EOD;

L.I. Vctor Hernndez Rodrguez


Pgina 2
Las cadenas se pueden concatenar usando el operador punto (.). Se puede acceder a los caracteres
dentro de una cadena tratndola como un array de caracteres indexado numricamente, usando una sintaxis
similar a la de C.

Ejemplo de cadenas
<?php
$str = "Hola"; /* Asignado de cadena. */
$str = $str . " como estan"; /* Aadiendo a la cadena. */
$str .= " todos ustedes.\n"; /* Otra forma de aadir */

# Esta cadena terminar siendo <p>Hola Jose</p>


$nom = Jose;
$str = "<p>Hola $nom</p>";

# Esta ser <p>Hola $nom</p>


$nom = Jose;
$str = <p>Hola $nom</p>;

// Obtener el primer carcter de una cadena.


$str = Esto es una prueba.;
$pri = $str[0];

// Obtener el ltimo carcter de una cadena.


$str = Esto es an una prueba.;
$ult = $str[strlen($str)-1];
?>

Cuando una cadena se evala como un valor numrico doble, si contiene cualquiera de los caracteres .,
e, o E. En caso contrario, se evaluar como un entero. El valor viene dado por la porcin inicial de la cadena. Si
la cadena comienza con datos de valor numrico, este ser el valor usado. En caso contrario, el valor ser 0 (cero).
Los datos numricos vlidos son un signo opcional, seguido por uno o ms dgitos (que opcionalmente contengan
un punto decimal), seguidos por un exponente opcional. El exponente es una e o una E seguidos por uno o ms
dgitos. Cuando la primera expresin es una cadena, el tipo de la variable depender de la segunda expresin.
Veamos algunos ejemplos:

$num = 1 + "1.5"; // 2.5


$num = 1 + "-1.3e3"; // -1299
$num = 1 + "si-1.3e3"; // 1
$num = 1 + "10 pc"; // 11
$num = "1.5 pc" + 1; // (1.5)
$num = "1 pc" + 1; // 2

Para probar los ejemplos de esta seccin, se debe insertar la lnea:

echo "\$num==$num; el tipo es" . gettype($num) . "<br>\n";

Los arreglos actualmente actan tanto como tablas hash (arrays asociativos) como arrays indexados
(vectores). PHP soporta tanto arrays escalares como asociativos. Se puede crear un arreglo usando las funciones
list() o array(), es posible asignar el valor de cada elemento del array de manera explcita.

$a[0] = "abc";
$a[1] = "def";

Se puede crear un arreglo simplemente aadiendole valores. Cuando se asigna un valor a un arreglo
usando corchetes vacos, el valor se aadir al final del arreglo.

$a[] = "hola"; // $a[2] == "hola"


$a[] = "mundo"; // $a[3] == "mundo"

L.I. Vctor Hernndez Rodrguez


Pgina 3
Los arreglos se pueden ordenar usando las funciones asort(), arsort(), ksort(), rsort(), sort(), uasort(),
usort(), y uksort() dependiendo del tipo de ordenacin que se desee. Se puede contar el nmero de elementos de
un array usando la funcin count(). Es posible recorrer un arreglo usando las funciones next(), prev() y each().

Los arreglos multidimensionales son bastante simples, para cada dimensin del arreglo se puede aadir
otro valor [clave] al final: $a[1][0] = $f; # bidimensional; $a["x"][4]["z"][0] = $f; # tetradimensional; no es posible
referirse a arreglos multidimensionales directamente dentro de cadenas, de ser necesario el operador de
concatenacin de cadenas (.) se puede usar para solucionar el problema o encerrando la referencia al arreglo
entre llaves (echo "a[1][0] = {$a[1][0]}";). Se pueden llenar arreglos multidimensionales de varias formas:

Tradicional:

$a["color"] = "rojo"; $a["sabor"] = "dulce"; $a["forma"] = "redondeada";


$a["nombre"] = "manzana"; $a[3] = 4;

Usando la funcin array():

$a = array("color" => "rojo", "sabor" => "dulce", "forma" => "redondeada",


"nombre" => "manzana", 3 => 4);

La funcin array() se puede anidar para arrays multidimensionales:

$a = array( "manzana" => array("color" => "rojo", "sabor" => "dulce", "forma" => "redondeada"),
"naranja" => array("color" => "naranja", "sabor" => "cido", "forma" => "redondeada"),
"pltano" => array("color" => "amarillo", "sabor" => "dulce", "forma" => "aplatanada"));
echo $a["manzana"]["sabor"]; # devolver "dulce"

Para inicializar un objeto, se usa la sentencia new para instanciar el objeto a una variable, los objetos en
PHP se declaran y definen como en Java.

class saludo{ function hola($nom) { echo "Hola como estas $nom"; } }


$Mensaje = new saludo; $Mensaje->hola(Jose);

PHP no requiere la declaracin explcita del tipo en la declaracin de variables; el tipo de una variable se
determina por el contexto en el que se usa esa variable (type juggling). Esto quiere decir que si se asigna un valor
de cadena a la variable esta se convierte en una cadena. Si despus se asigna un valor entero a la variable, se
convierte en una variable entera.

Un ejemplo de conversin de tipo automtica en PHP es el operador suma +. Si cualquiera de los


operandos es un doble, entonces todos los operandos se evalan como dobles, y el resultado ser un doble. En
caso contrario, los operandos se interpretarn como enteros, y el resultado ser tambin un entero. esto no cambia
los tipos de los operandos; el nico cambio est en cmo se evalan los operandos.

$num = "0"; // $num contiene 0


$num++; // $num contiene "1"
$num += 1; // $num contiene 2
$num = $num + 1.3; // $num contiene 3.3
$num = 2 + "3 desktop"; // $num contiene 5

El forzado de tipos en PHP funciona como en Java: el nombre del tipo deseado se escribe entre
parntesis antes de la variable a la que se pretende forzar.

$num = 10; // $num es un entero


$var = (double) $num; // $var es un doble

Los forzados de tipo permitidos son:

(int), (integer).- fuerza a entero.

L.I. Vctor Hernndez Rodrguez


Pgina 4
(real), (double), (float).- fuerza a doble.
(string).- fuerza a cadena.
(array).- fuerza a array.
(object).- fuerza a objeto.

Cuando se fuerza el cambio de un escalar o una variable de cadena a un array, la variable se convertir en
el primer elemento del array: $var = ciao; $arr = (array) $var; echo $arr[0]; // produce la salida ciao . Cuando se
fuerza el tipo de una variable escalar o de una cadena a un objeto, la variable se convertir en un atributo del
objeto; el nombre del atributo ser scalar por ejemplo:

$var = Hola; $obj = (object) $var; echo $obj->scalar; // produce la salida Hola

Estructuras de control:

La construccin if, incluida en PHP, permite la ejecucin condicional de fragmentos de cdigo, su


funcionamiento es similar a la de C y Java, la sintaxis es: if (expr) sentencia. El siguiente ejemplo mostrara a es
mayor que b si $a fuera mayor que $b:

if ($a > $b)


echo "a es mayor que b";

Se pueden agrupar varias sentencias en un grupo de sentencias formando un conjunto de las mismas
mediante el uso de { }. Ademas Soporta la clausula else y el anidamiento de sentas if mediante la clausula elseif:

if ($a > $b) {


print "a es mayor que b";
} elseif ($a == $b) {
print "a es igual que b";
} else {
print "a es mayor que b";
}

Sintaxis Alternativa de Estructuras de Control.- PHP ofrece una sintaxis altenativa para alguna de sus
estructuras de control (if, while, for y switch). La forma bsica de la sintaxis alternativa cambia { por : y } por endif;,
endwhile;, endfor;, or endswitch;, respectivamente.

if ($a == 5):
echo "a es igual a 5";
echo "por lo que 5 esta en a";
elseif ($a == 6):
echo "a es igual a 6";
echo "entonces a contiene un 6";
else:
echo "a no contiene 5 ni 6";
endif;

Los ciclos while, do..while y for se comportan como lo hacen las mismas estructuras en Java o C, su
sintaxis es la misma y siguen las mismas reglas de funcionamiento.

$i = 1; $i = 0; for ($i = 1; $i <= 10; $i++) {


while ($i <= 10) { do { echo $i;
echo $i++; echo $i; }
} } while ($i>0);

PHP incluye una construccin foreach, lo que da un modo fcil de iterar sobre arreglos. Hay dos sintaxis;
la segunda es una extensin menor, pero til de la primera:

foreach(arreglo as $value) sentencia o foreach(arreglo as $key => $value) sentencia

L.I. Vctor Hernndez Rodrguez


Pgina 5
La primera forma recorre el arreglo dado y en cada iteracin el valor del elemento actual del arreglo se
asigna a $value y el puntero interno del arreglo avanza una unidad para asi recorrer el arreglo. La segunda manera
hace lo mismo, salvo que la clave del elemento actual ser asignada a la variable $key en cada iteracin.

$a = array(1, 2, 3, 17); $a = array(1, 2, 3, 17); $i = 0;


foreach($a as $v) { foreach($a as $v) {
echo "Valor actual de \$a: $v.\n"; echo "\$a[$i] => $k.\n";
} }

Break provoca una salida de las estructuras de control iterante (bucles) actuales (for, do..while, while, o
switch). Accepta un parmetro opcional, el cual determina de cuantas estructuras de control debe salir.

$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "en 5 <br> \n";
break 1; /* sale del switch. */
case 10:
echo "en 10; sale <br> \n";
break 2; /* sale del switch y del while. */
default:
break; /* sale del switch */
}
}

La sentencia switch es similar a una serie de sentencias if en la misma expresin. En ocasiones se quiere
comparar la misma variable (o expresin) con muchos valores diferentes, y ejecutar una parte de cdigo distinta
dependiendo de a qu valor es igual. Para ello sirve la sentencia switch. Hagamos un comparativo:

if ($i == 0) { switch ($i) {


echo "i es igual a 0"; case 0: echo "i es igual a 0";
} break;
if ($i == 1) { case 1: echo "i es igual a 1";
echo "i es igual a 1"; break;
} case 2: echo "i es igual a 2";
if ($i == 2) { break;
echo "i es igual a 2"; default: break;
} }

La sentencia switch se ejecuta cuando se encuentra una sentencia case con un valor que coincide con el
valor de la expresin switch, las sentencias continan ejecutandose hasta el final del bloque switch, o la primera
vez que vea una sentencia break. Si no se escribe una sentencia break al final de una lista de sentencias case, se
seguiran ejecutando las sentencias del siguiente case. La sintaxis alternativa para las estructuras de control est
tambin soportada con switch, y se cierra con endswitch;.

La sentencia require() se sustituye a s misma con el archivo especificado, de igual manera que la directiva
#include de C. La sentencia include() incluye y evala el archivo especificado. Tanto para require() como para
include() se puede especificar el fichero que se va a incluir usando una URL en vez de un fichero local. Cuando un
archivo se incluye con include() o se requiere con require(), el intrprete sale del modo PHP y entra en modo HTML
al principio del archivo referenciado, y vuelve de nuevo al modo PHP al final. Cualquier cdigo dentro del archivo
referenciado que deba ser ejecutado como cdigo PHP debe ser encerrado dentro de etiquetas vlidas de
comienzo y fin de PHP.

require ("http://10.0.0.30/~ipweb/archivo.php?var1=1&var2=2");

require ("archivo.php?var1=1&var2=2");

L.I. Vctor Hernndez Rodrguez


Pgina 6
La sentencia include() difiere de require() en que la sentencia include() se re-evala cada vez que se
encuentra (y slo cuando est siendo ejecutada), mientras que la sentencia require() se reemplaza por el archivo
referenciado cuando se encuentra por primera vez, se vaya a evaluar el contenido del archivo o no. Debido a que
include() es una construccin especial del lenguaje, se debe encerrar dentro de un bloque de sentencias si est
dentro de un bloque condicional.

/* Uso erroneo */ /* Uso correcto */


if ($condicion) if ($condicion) {
include($archivo); include($archivo);
else } else {
include($otro); include($otro);
}

La instruccin echo permite la salida de mensajes hacia pantalla o al browser, se debe escribir el mensaje
entre comillas, acepta el uso del punto para concatenar cadenas, es posible desplegar valores nicamente
invocando a la variable en el lugar donde ser visualizada.

Anatoma de una aplicacin Web


PHP (HyperText Preprocessor) es un lenguaje de programacin web del tipo scripting que permite la
generacin dinmica de contenidos en un servidor web. Para interpretar un archivo, PHP smplemente interpreta el
texto del archivo hasta que encuentra uno de los carcteres especiales que delimitan el inicio de cdigo PHP. El
intrprete ejecuta todo el cdigo que contenga hasta que encuentra una etiqueta de fin de cdigo, que le dice al
intrprete que siga ignorando el cdigo siguiente.

Este mecanismo permite embeber cdigo PHP dentro de HTML, todo lo que est fuera de las etiquetas
PHP se deja tal como est, mientras que el resto se interpreta como cdigo. Todo cdigo o programa en PHP debe
estar delimitado en alguna de las siguientes formas:

<?php echo Primera forma; ?>

<? echo Segunda Forma; ?>

<script language="php"> echo Tercera Forma; </script>

<% echo Forma Tipo ASP %>

PHP es un lenguaje open source interpretado de alto nivel embebido en pginas HTML y ejecutado en el
servidor. Pero com funciona una aplicacin php en un servidor?. El navegador del cliente solicita el documento
PHP. Llega la solicitud del servidor y el servidor localiza el documento, lanza el intrprete de PHP y ejecuta todo su
cdigo. Una vez ejecutado el cdigo se genera el resultado en HTML y lo devuelve al servidor para que lo
transfiera al cliente. El servidor transfiere el resultado en HTML y es mostrado en el navegador del cliente.

A diferencia de Java o JavaScript que se ejecutan en el navegador, PHP se ejecuta en el servidor, con lo
que se permite acceder mas rpidamente a los recursos que tenga el servidor. Al ser PHP un lenguaje que se
ejecuta en el servidor no es necesario que el navegador lo soporte, es independiente del navegador, nicamente el
servidor que aloja las paginas debe soportar php. Veamos un ejemplo de un programa en php.

<html> <head> <title>Mi Primera Pagina Php</title> </head>


<body>
<?php
echo "Hola Mundo PHP" ;
?>
</body>
</html>

Una forma mas corta puede ser: <?php echo "Hola Mundo"; ?>

L.I. Vctor Hernndez Rodrguez


Pgina 7
Una funcin en PHP puede contener cualquier instruccin vlida del lenguaje e incluso otras funiones y
definiciones de clases. PHP no soporta la sobrecarga de funciones, y tampoco es posible redefinir u ocultar
funciones previamente declaradas. PHP define las funciones con la siguiente sintaxis:

function Ejemplo ($Arg1, $Arg2, ..., $Argn) {


echo "Uso de funciones.\n";
return $Val;
}

La informacin puede suministrarse a las funciones mediante la lista de parmetros, una lista de variables
y/o constantes separadas por comas. PHP soporta pasar parmetros por valor, por referencia, y por defecto. Las
funcines, de forma ya implcita, reciben el paso de parmetros por valor (si cambian el valor del argumento dentro
de la funcin, no se ve modificado fuera de ella). Si lo que se quiere es permitir a una funcin modificar sus
parmetros, estos se deben pasar por referencia. Si quiere que un parmetro de una funcin siempre se pase por
referencia, se debe anteponer un ampersand (&) al nombre del parmetro en la definicin de la funcin:

function Agregar(&$cadena) {
$cadena .= Mundo;
}
$cad = Hola ;
Agregar($cad);
echo $cad; // Da como resultado Hola Mundo

Si se busca pasar una variable por referencia a una funcin que no declara por defecto la recepcin del
parmetro por referencia, se debe anteponer el ampersand al parmetro en la llamada a la funcin:

function Agregar($cadena) {
$cadena .= Mundo;
}
$cad = Hola ;
Agregar($cad);
echo Llamada sin referencia -->$cad <br>; // Imprime Hola
Agregar(&$cad);
echo Llamada con referencia -->$cad; // Imprime Hola Mundo

Una funcin puede definir valores por defecto para los parmetros escalares estilo C++:

function makecoffee ($type = "cappucino") {


return "Hacer una taza de $type. ";
}
echo makecoffee ();
echo makecoffee ("espresso");

La salida del fragmento anterior es: Hacer una taza de cappucino. Hacer una taza de espresso.. El valor
por defecto tiene que ser una expresin constante, y no una variable o miembro de una clase. Cabe destacar que
cuando se usan parmetros por defecto, estos tienen que estar a la derecha de cualquier parmetro sin valor por
defecto. PHP soporta las listas de longitud variable de parmetros en las funciones definidas por el usuario, y las
listas de parmetros pueden ser escritas en la llamada a la funcin y se comportarn de la manera esperada. Los
valores se retornan usando la instruccin opcional return. Puede devolverse cualquier tipo de valor, incluyendo
listas y objetos.

function cuadrado($num) {
return $num * $num;
}
echo El cuadrado de 4 es .cuadrado(4); // Imprime 16.

PHP soporta el concepto de funciones variable. Significa que si una variable tiene parntesis aadidos al
final, PHP buscar una funcin con el mismo nombre que la variable e intentar ejecutarla.

L.I. Vctor Hernndez Rodrguez


Pgina 8
<?php
function F1() {
echo "Dentro de F1()<br>\n";
}
function F2( $arg = prueba ) {
echo "Dentro de F2(); el parmetro fue $arg.<br>\n";
}
$func = F1;
$func();
$func = F2;
$func( test );
?>

Una clase es una coleccin de variables y de funciones que acceden a esas variables. Una clase se define
con la sintaxis:

<?php
class Compra {
var $pieza; // piezas en el carro de compras
// Aadir $num artculos de tipo $arttipo al carro
function agrega_pieza ($arttipo, $num) {
$this->pieza[$arttipo] += $num;
}
// Sacar $num artculos del tipo $artipo del carro
function quita_pieza ($arttipo, $num) {
if ($this->pieza[$arttipo] > $num) {
$this->pieza[$arttipo] -= $num;
return true;
} else {
return false;
}
}
}
?>

Se define una clase llamada Compra que tiene un arreglo asociativo de artculos en el carro y dos
funciones para sumar o restar piezas al carro Las clases son tipos, es decir, son plantillas para variables. Para
crear una variable de este tipo se debe usar el operador new. Por ejemplo: $Compra = new Compra;. Este ejemplo
crea un objeto $Compra de clase Compra.

Para agregar datos se usa $Compra->agrega_pieza("10", 1);, la funcin de ese objeto se llama para aadir
una pieza del artculo nmero 10 al carro. Las Clases pueden ser extensiones de otras clases. Las clases
extendidas o derivadas tienen todas las variables y funciones de la clase base y lo que se les aada al extender la
definicin. La herencia mltiple no est soportada.

class Cliente extends Compra {


var $cliente;
function asigna_cliente ($nombre) {
$this->cliente = $nombre;
}
}

Se define una clase Cliente que tiene todas las variables y funciones de Compra. Aade la variable
$cliente y la funcin asigna_cliente(). Una variable de este tipo se crea de la forma habitual y, una vez hecho, se
puede acceder a $cliente y a las funciones normales de Compra:

$carro = new Cliente; $carro->asigna_cliente ("Jose");


echo $carro->cliente; $carro->agrega_pieza ("10", 1);

L.I. Vctor Hernndez Rodrguez


Pgina 9
Desarrollo de formularios
Cuando se enva un formulario a PHP, las variables del formulario se encuentran tambin disponibles en la
seccin de codigo PHP. Solo basta con anteponerle al nombre de la variable el smbolo de moneda ($) veamos
algunos ejemplos:

<html><head><title>Ejemplo de formularios con PHP</title></head>


<body>
<?php
if(isset($_POST['nombre']))
echo Hola .$POST[nombre];
else{
?>
<form action="saludo.php" method="post">
<p>Como te llamas<br>
<input type="text" name="nombre" size=32><p>
<input type="submit" value="Aceptar">
</form>
<?php
}
?>
</body>
</html>

El anterior archivo deber denominarse nombre.php

<form method="post" action="despliega.php">


Nombre: <input type="text" name="nombre"><br>
Apellidos: <input type="text" name="apellidos"><br>
<input type="submit">
</form>

La pgina que procesara los datos (despliega.php) seria:

<html><head><title>despliega.php</title></head>
<body>
<?
echo "Variable \$nombre: $nombre <br>\n";
echo "Variable \$apellidos: $apellidos <br>\n"
?>
</body>
</html>

PHP tambin maneja arreglos (unidimensionales) como variables de formularios. Se pueden agrupar
variables relacionadas, o usar esta caracterstica para recuperar valores de un campo select input mltiple:

<form action="presenta.php" method="post">


Nombre: <input type="text" name="personal[nombre]"><br>
Email: <input type="text" name="personal[email]"><br>
Auto: <br>
<select multiple name="auto[]">
<option value="Volswagen">Volswagen
<option value="Nissan">Nissan
<option value="Ford">Ford
</select>
<input type="submit">
</form>

L.I. Vctor Hernndez Rodrguez


Pgina 10
El programa (presenta.php) PHP quedara de la forma:

<?PHP
$perso = $_REQUEST[personal];
$aut = $_REQUEST[auto];
foreach($perso as $per)
echo $per<BR>;
foreach($aut as $au)
echo $au<BR>;
?>

Un ejemplo ms de usar formularios es (Formulario.php):

<html><head><title>Ejemplo de formularios con PHP</title></head>


<body>
<?php
if(!empty($_GET[nombre])){ // determina si trae un valor $nombre
echo <font color=green>;
echo Estos son los datos que enviaste usando el anterior formulario<p>;
echo </font>Nombre : ,$_GET[nombre].<p>;
echo Telefono : .$_GET[telefono].<p>;
echo E-mail : .$_GET[email].<p>;
echo Sexo : .$_GET[sexo];
}
else{
?>
<font color=blue>En este formulario se captura los datos que se enviaran,
usando el <br>metodo GET, a esta misma pagina, para mostrarlos
usando PHP</font><p>
<form action=formulario.php method=get>
<P><font color=red>Captura los datos para tu agenda</font><p>
Nombre :<input type="text" name="nombre" size=32><p>
Telefono :<input type="text" name="telefono" size=13><p>
E-mail :<input type="text" name="email" size=32><p>
Sexo :
<select name="sexo" size="1">
<option value="Masculino">Masculino</option>
<option value="Femenino">Femenino</option>
</select><p>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</forma>
<?php
}
?>
</body>
</html>

Desarrollo de aplicaciones utilizando los mtodos Get y Post


Si la directiva track_vars que tiene PHP est activada, las variables enviadas con los mtodos POST o
GET se podrn accesar mediante los arrays asociativos globales $HTTP_POST_VARS, $HTTP_GET_VARS,
$_GET y $_POST. Para activar esta capacidad se puede hacer mediante la opcin de configuracin track_vars o
mediante la directiva <?php_track_vars?>. PHP soporta el manejo de cookies de HTTP. Las cookies son un medio
para almacenar datos en el navegador y as rastrear o identificar a usuarios que vuelven (tambien se pueden usar
sesiones). Se pueden crear cookies usando la funcin SetCookie().

L.I. Vctor Hernndez Rodrguez


Pgina 11
Las cookies son parte de la cabecera HTTP, por ello antes de enviarlas se debe llamar a la funcin
SetCookie. Cualquier cookie que se reciba del cliente se podr manipular como una variable de PHP de la misma
forma que los datos recibidos mediante los mtodos GET y POST o usando el arreglo $_COOKIE (para sesiones
$_SESSION). Se pueden manejar cookie como arreglos, solo se debe aadir [ ] al nombre de la cookie. Por
ejemplo: SetCookie ("MiCookie[]", "Prueba", time()+3600); No olvide que una cookie reemplazar a otra que tenga
el mismo nombre en el navegador a menos que el camino (path) o el dominio fuesen diferentes. Por ejemplo:

$Cotador++;
SetCookie ("Contador", $Contador, time()+3600);
SetCookie ("Compra[$Contador]", $pieza, time()+3600);

PHP hace accesibles las variables de entorno automticamente tratndolas como variables normales.
Puesto que la informacin que mediante Get, Post y Cookie llega a PHP crea automticamente variables de PHP,
algunas veces es mejor leer variables del entorno explcitamente para asegurarse de que se est trabajando con
los datos correctos. La funcin getenv() se puede usar para ello. Tambin se puede asignar un valor a una variable
de entorno con la funcin putenv().

PHP no altera los nombres de las variables cuando se pasan a un script. Pero no se debe olvidar que no
acepta el punto como parte de un nombre de variable. Por esta razn PHP reemplazar automticamente cualquier
punto en los nombres de variables de entrada por guiones bajos (subrayados).

Ejemplo de aplicacion con uso de Post.

<html><head><title>Restringe por edad</title></head>


<body>
<form action="determina.php" method="post">
Edad: <input type="text" name="edad" size="2">
<input type="submit" value="Permite">
</form>
</body>
</html>

El documento PHP es:

<html><head><title>Restringe por edad</title></head>


<body>
<?
$edad = $_POST["edad"];
if ($edad < 18) {
echo "No puedes entrar";
}else{
echo "Bienvenido";
}
?>
</body>
</html>

Otro ejemplo seria:

<html><head><title>Gustos</title></head>
<body>
<form action=gustos.php method=post>
<p>Nombre: <input type=text name=nombre size=30><br>
Sexo: Hombre<input type=radio value=hombre checked name=sexo>
Mujer <input type=radio name=sexo value=mujer><br>
Deporte favorito:
<select size=1 name=deporte>
<option value=Futbol>Futbol</option>

L.I. Vctor Hernndez Rodrguez


Pgina 12
<option value=Beisbol>Beisbol</option>
<option value=Basquetbol>Basquetbol</option>
</select><br>
Te gusta la comida Mexicana? <input type=checkbox name=comida
value=ON><p>
<input type=submit value=Enviar name=enviar>
</form>
</body>
<html>

Su correspondiente PHP quedara de la forma:

<?php
if(isset($_POST['enviar'])){
echo Hola .$_POST['nombre'].<br>;
echo Tu sexo es: .$_POST['sexo'].<br>;
echo Te gusta el: .$_POST['deporte'].<br>;
if(!empty($_POST['comida']))
echo Te gusta la comida mexicana <br>;
else
echo No te gusta la comida mexicana <br>;
}
?>

Acceso a base de datos utilizando PHP


Una forma sencilla de manejar archivos (aunque muchos no los consideran bases de datos), es mediante
el uso de fopen, fread y fwrite:

int fopen (string filename, string mode [, int use_include_path]).- Abre un archivo donde si filename inicia
con http://, se abre una conexion HTTP 1.0 hacia el servidor y regresa un apuntador al archivo al comienzo del
texto del archivo. Siempre se debe incluir una barra final. Si filename empieza con ftp:// se abre una conexin ftp
hacia el servidor y se regresa un aputandor al archivo requerido. Si filename no inicia de ninguna de esas 2 formas,
el archivo se abre de los archivos que se encuentran en el servidor. Las formas (mode) de apertura de archivos
puede ser cualquiera de las siguientes:

"r" - Abre el archivo solo para lectura.


"r+" - Abre el archivo para lectura y escritura.
"w" - Abre el archivo solo para escritura, si el archivo no existe, trata de crearlo.
"w+" - Abre el archivo para lectura y escritura, si el archivo no existe, trata de crearlo.
"a".- Abre el archivo solo para escribir (aadir), si el archivo no existe, trata de crearlo.
"a+".- Abre el archivo para escribir (aadir) y para lectura. Si el archivo no existe, trata de crearlo.

int fwrite (int fp, string string [, int length]).- Escribe el contenido de string al archivo apuntado por fp, length
permite indicar cuantos n-1 byte sern escritos si string tiene mas que eso, de otro modo escribir todo lo
contenido en string.

string fread (int fp, int length).- Lee hasta length bytes del apuntador del archivo referenciado por fp. La
lectura acaba cuando length bytes se han leido o se alcansa EOF (final de archivo), lo que pase primero.

<?
$archivo = "contador.txt"; $abre = fopen($archivo, "r");
$total = fread($abre, filesize($archivo));
fclose($abre); $abre = fopen($archivo, "w");
$total = $total + 1; $grabar = fwrite($abre, $total);
fclose($abre);
echo "Total de visitas: <b>".$total.";
?>

L.I. Vctor Hernndez Rodrguez


Pgina 13
Una de las caractersticas ms potente de PHP es que soporta varias bases de datos. Escribir una
aplicacin web para una base de datos es relativamente simple. PHP soporta una extensin DBX de abstraccin
de base de datos que permite usar de forma transparente cualquier base de datos soportada por la extensin
adems de soportar los siguientes sistemas de bases de datos:

Adabas D Ingres Oracle (OCI7 and OCI8)


dBase InterBase Ovrimos
Empress FrontBase PostgreSQL
FilePro (read-only) mSQL Solid
Hyperwave Direct MS-SQL Sybase
IBM DB2 MySQL Velocis
Informix ODBC Unix dbm

Una de las principales ventajas que presenta el trabajar con pginas dinmicas es el poder almacenar los
contenidos en bases de datos. De esta forma, los datos se pueden organizar, actualizar y buscar de una manera
mucho ms simple y es posible editar el contenido del sitio con sencillez. Esta interaccin se realiza, por un lado, a
partir de las funciones que PHP tiene para cada tipo de base de datos y, por otro con soporte de un idioma
universal: SQL (Structured Query Language) el cual es comn en todas las bases de datos.

El lenguaje de consulta estructurado (SQL).- es un lenguaje de base de datos normalizado, est


compuesto por comandos, clusulas, operadores y funciones. Estos elementos se combinan en las instrucciones
para crear, actualizar y manipular las bases de datos. Existen dos tipos de comandos SQL:

Los DLL que permiten crear y definir bases de datos, campos e ndices. Los DML que permiten generar
consultas para ordenar, filtrar y extraer datos de la base de datos.

Comandos DLL:
Comando Descripcin
CREATE Utilizado para crear nuevas tablas, campos e ndices
DROP Empleado para eliminar tablas e ndices
ALTER Utilizado para modificar las tablas agregando campos o cambiando la definicin de los
campos.
Comandos DML:
Comando Descripcin
Utilizado para consultar registros de la base de datos que satisfagan un criterio
SELECT
determinado
INSERT Utilizado para cargar lotes de datos en la base de datos en una nica operacin.
UPDATE Utilizado para modificar los valores de los campos y registros especificados
DELETE Utilizado para eliminar registros de una tabla de una base de datos
Estos comandos pueden contar con clausulas. Las clusulas son condiciones de modificacin utilizadas
para seleccionar o manipular datos:

Comando Descripcin
FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros
Utilizada para especificar las condiciones que deben reunir los registros que
WHERE
se van a seleccionar
GROUP BY Utilizada para separar los registros seleccionados en grupos especficos
HAVING Utilizada para expresar la condicin que debe satisfacer cada grupo
ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un orden especfico

SQL soporta los siguientes operadores:

L.I. Vctor Hernndez Rodrguez


Pgina 14
Operadores Lgicos:

Operador Uso
AND Evala dos condiciones y devuelve un valor de verdad slo si ambas son ciertas.
OR Evala dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta.
NOT Negacin lgica. Devuelve el valor contrario de la expresin.

Operadores de Comparacin:

Operador Uso Operador Uso


< Meno que <= Menor Igual que
> Mayor que >= Mayor Igual que
<> Distinto de BETWEEN Entre el rango.

Funciones.- Las funciones se usan dentro de una clusula SELECT en grupos de registros para devolver
un nico valor que se aplica a un grupo de registros.

Comando Descripcin
Utilizada para calcular el promedio de los valores de un campo
AVG
determinado
COUNT Utilizada para devolver el nmero de registros de la seleccin
Utilizada para devolver la suma de todos los valores de un campo
SUM
determinado
MAX Utilizada para devolver el valor ms alto de un campo especificado
MIN Utilizada para devolver el valor ms bajo de un campo especificado

En una sentencia SQL de seleccin con todas las posibles clusulas, el orden de ejecucin de las mismas
es el siguiente: 1) FROM, 2) WHERE, 3) GROUP BY, 4) HAVING, 5) SELECT y 6) ORDER BY.

La sentencia SELECT se utiliza para recuperar datos almacenados en un conjunto de columnas. Las
columnas pueden pertenecer a una o varias tablas y se puede indicar el criterio que deben seguir las filas de
informacin que se extraigan. Muchas de las clusulas que permite esta sentencia son simples, aunque se pueden
conseguir capacidades muy complejas.

La sintaxis de la sentencia es:

SELECT [ALL | DISTINCT] <seleccin> FROM <tablas> WHERE <condiciones de seleccin>


[ORDER BY <columna> [ASC | DESC, <columna> [ASC | DESC]...];

La seleccin contiene normalmente una lista de columnas separadas por coma (,), o un asterisco (*) para
seleccionarlas todas. El siguiente ejemplo devolver el contenido completo de la tabla Empleado:

SELECT * FROM empleado;

Si la tabla contiene un atributo cdigo_departamento y solamente se quieren conocer los empleados del
departamento con cdigo A1, la consulta sera:

SELECT * FROM empleado WHERE codigo_departamento = A1;

Para ordenar la lista resultante por nombre, por ejemplo, se usara la directiva ORDER BY:

SELECT * FROM empleado WHERE codigo_departamento = A1 ORDER BY nombre

La sentencia INSERT se utiliza cuando se quiere insertar informacin en las columnas. Aqu tambin se
pueden presentar diferentes capacidades, dependiendo del nivel de complejidad soportado. La sintaxis de la
sentencia es: INSERT INTO <tabla> [(<columna1>, <columna2,...)] VALUES (<valor>, <valor>,...);
L.I. Vctor Hernndez Rodrguez
Pgina 15
Por ejemplo, si se quieren insertar lo datos, id, nombre, sueldo, departamento y fecha de ingreso en la
tabla del Empleado se podra ingresar con la siguiente informacin:

INSERT INTO Empleado VALUES (1, Martinez, 300, A3, 10/08/2008 );

Para actualizar datos ya existentes en las columnas, se utiliza la sentencia UPDATE, cuya gramtica es:
UPDATE <tabla> SET <columna> = <valor>[, <columna> = <valor>,] WHERE <condicin bsqueda>;

Esta sentencia permite cambiar uno o ms campos existentes en una fila. Por ejemplo, para cambiar el
nombre de un empleado en la tabla de Empleado, se hara:

UPDATE Empleado SET nombre = Flores WHERE nombre=Marcos;

La sentencia DELETE es la que se emplea cuando se quieren eliminar filas de las columnas, y su
gramtica tambin es muy simple: DELETE FROM <tabla> WHERE <condicin bsqueda>; Si no se especifica la
clusula WHERE, se eliminar el contenido de la tabla completamente, sin eliminar la tabla, por ejemplo:

DELETE FROM Empleado;

Vaciar completamente la tabla, lo que hace es borrar todas las columnas de la tabla. Especificando la
clusula WHERE, se puede introducir un criterio de seleccin para el borrado, por ejemplo:

DELETE FROM Empleado WHERE nombre=Martinez;

Acceso a bases de datos PostgreSQL desde PHP.- El sistema de acceso a bases de datos PostgreSQL
desde PHP es similar al usado para el acceso a bases de datos MySQL. Solo cambian los nombres de las
funciones utilizadas, pero siguen la misma estructura. Para establecer la conexin con una base de datos
PostgreSQL desde PHP, se utiliza la funcin: pg_connect("host=NombreHost dbname=BaseDatos user=Usuario
password=Contrasea");

Los parmetros, pasados como una cadena nica, indican todo lo necesario para accesar una base de
datos desde el servidor.. En caso de lograr generar una conexin la funcin devuelve un identificador del enlace
con el sistema de bases de datos. A diferencia de MySQL, no es preciso indicar con otra funcin la base de datos a
la que se desea acceder, ya que se ha facilitado como parmetro a la funcin de conexin. Finalmente, para cerrar
la conexin utilizamos: pg_close($conexion);. A la que se le debe pasar como parmetro el enlace con la conexin
inicialmente establecida, por ejemplo:

<?php
#Conectamos con PostgreSQL
$conexion = pg_connect("host=10.0.0.30 dbname=BaseDatos user=Usuario
password=Contrasea") or die ("Fallo en el establecimiento de la conexin");

#Cerramos la conexin con la base de datos


pg_close($conexion);
?>

Para realizar una consulta sobre una base de datos PostgreSQL, se utiliza en PHP la funcin:
pg_query($conexion, $sql); que toma como parmetros, el enlace con la base de datos y una cadena con la
consulta SQL a ejecutar (SELECT, INSERT, DELETE, etc.). Devuelve un identificador del resultado en caso de
xito o FALSE en caso de error en la consulta. Para poder mostrar la informacin resultante de una consulta se
debe hacer uso de funciones complementarias. Una de las posibles es: pg_fetch_array($id_resultado, $fila); que
devuelve la fila ($fila) en forma de arreglo con el resultado de la sentencia extrada identificada por el parmetro
$id_resultado. Por ejemplo:

L.I. Vctor Hernndez Rodrguez


Pgina 16
<?php
#Conectamos con PostgreSQL
$host=10.0.0.30;
$dbname=ipweb;
$user=ipweb;
$pswd=;
$conexion = pg_connect("host=$host dbname=$dbname user=$user password=$pswd") or die
("Fallo en el establecimiento de la conexin");

#Efectuamos la consulta SQL


$result = pg_query ($conexion, "select * from Empleado") or die("Error en la consulta SQL");

#Mostramos los resultados obtenidos


$i=0;
while( $row = mysql_fetch_array ( $result,$i)) {
echo $row[ "id"];
echo $row[ "nombre"];
echo $row[ "sueldo"];
echo $row[ "cdigo_departamento"];
echo $row[ "fecha_ingreso"];
$i++;
}
?>

Un ejemplo de aplicacin con insertado de datos seria:

<html><head><title>Llenado de agenda</title></head>
<body>
<h1>Llenado de agenda</H1>
<?
if(isset($_POST[nombre]){
$nombre=$_POST[nombre];
$telefono=$_POST[telefono];
$email=$_POST[email];
$sexo=$_POST[sexo];
echo "Nombre : $nombre<br>";
echo "Telefono : $telefono<br>";
echo "E-mail : $email<br>";
echo "Sexo : $sexo<br>";
$servidor="192.168.30.30";
$usuario="ipweb";
$clave=" ";
$base="ipweb";
$conexion=pg_pconnect("host=$servidor user=$usuario password=$clave
port=5432 dbname=$base") OR die("No es posible conectar con $base en
$servidor");
$query="insert into registro values ('$nombre','$telefono','$email','$sexo')";
$res=pg_exec($conexion,$query);
?>
<h2>----->Datos enviados<------</h2>
<br><a href= http://192.168.30.30/~ipweb/agenda.php>Insertar otro
dato</a>
<?php
}
else{
?>
<form action=http://192.168.30.30/~ipweb/agenda.php method=post>
Agenda Personal de Jose<p>

L.I. Vctor Hernndez Rodrguez


Pgina 17
Nombre : <input type="text" name="nombre" size=32><br>
Tel&eacute;fono : <input type="text" name="telefono"
size=13><br>
E-mail : <input type="text" name="email" size=32><br>
Sexo :
<select name="sexo" size="1">
<option value="Masculino">Masculino</option>
<option value="Femenino">Femenino</option>
</select><p>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>
<?
}
?>
</body>
</html>

Ya se ha dicho que las variables de sesin se diferencian de las variables clsicas en que stas residen en
el servidor, son especificas de un solo usuario definido por un identificador y pueden ser utilizadas en la globalidad
de las pginas. Para iniciar una sesin se puede hacer de dos formas distintas:

1.- Declarando la apertura de sesin con la funcin session_start(). La cual crea una nueva sesin para un
nuevo visitante o bien recupera la que est siendo llevada a cabo.
2.- Declarando una variable de sesin con la funcin session_register('variable'). Que adems de crear o
recuperar la sesin para la pgina en la que se incluye, tambin sirve para introducir una nueva variable de tipo
sesin.

Las sesiones deben ser iniciadas al principio del script. Antes de abrir cualquier etiqueta o de imprimir
cualquier cosa. En caso contrario se recibira un error. Ejemplo de sesiones:

<?
session_register('contador');
?>
<html><head><title>contador.php</title></head>
<body>
<?
If (isset($contador)==0){$contador=0; }
++$contador;
echo "<a href=contador.php">Se ha abierto esta pgina $contador veces</a>";
?>
</body>
</html>

Otras funciones tiles para la gestin de sesiones son: Session_id().- devuelve el identificador de la sesin,
Session_destroy().- termina una sesin eliminando variables e identificador y Session_unregister('variable').-
abandona una variable sesin.

L.I. Vctor Hernndez Rodrguez


Pgina 18

Vous aimerez peut-être aussi