Documente Academic
Documente Profesional
Documente Cultură
EMPEZAR
BASICO
Tipos Variables Expresiones
Condicionales Salida Arreglos
DE PHP
Constantes Operadores
Bucles Cadenas Funciones
Crear BD
Introduccin
Todos echamos de menos un poco de dinamismo en las pginas web; grficos y texto no son suficientes para ciertas aplicaciones en Internet. La interactividad del usuario se ha logrado con formularios, CGI etc.. Con la aparicin de PHP la tarea se hizo mas fcil pues es independiente de la base de datos y del servidor web, es decir es multiplataforma. El objetivo final es conseguir la interaccin de las pginas HTML con aplicaciones que corran en el servidor como procesos integrados al mismo, igualmente que las aplicaciones sean totalmente independientes del navegador.
08/08/2013
JAGA
Introduccin
PHP es un lenguaje soportado por HTML, la sintaxis es heredada de C, Java y Perl; esta orientado para los constructores de pginas web, permitiendoles crear pginas dinmicamente generadas.
La forma de trabajo utilizada en el presente curso es totalmente prctica, es decir ir haciendo pginas en la misma medida que se va exponiendo cada punto. Por lo tanto debe tener un servidor web instalado para realizar los ejercicios (AppServer por ejemplo). Adems, si bien no es absolutamente necesario, sera conveniente que tuviera conocimientos de HTML. El presente curso le permitir desarrollar web interactivas sencillas, de usted depender ahondar en el tema. Se sugiere bajar ell Manual del Usuario de PHP de la direccin www.php.net para ello.
08/08/2013 JAGA 3
Conceptos bsicos
PHP es la abreviacin de Personal Home Page, nombre que le dio su creador Rasmus Lerdorf a finales de 1994. PHP es un lenguaje de programacin clsico o convencional, es decir posee variables, sentencias condicionales, repetitivas, funciones etc., no es un lenguaje de etiquetas o marcas como HTML,XML o WML.
Como caracterstica muy particular PHP se ejecuta en el servidor por lo cual nos permite el acceso a los recursos que posee el servidor. PHP es ejecutado en el servidor y el resultado enviado al navegador, siendo as el resultado una pagina HTML. PHP soporta accesos a las bases de datos en: Adabas D, dBase, Empress, FiclePro, Informix, InterBase, Solid, Sybase, Velocis, Unix dbm, mSQL, MySQL, Oracle y PosgreSQL.
08/08/2013 JAGA 4
APRENDER HACIENDO
Otra ventaja de PHP sobre los otros lenguajes que se ejecutan en el servidor es que nos permite intercalar sentencias PHP en las pginas HTML, es por lo tanto necesario que usted conosca como trabaja ste. Fieles a nuetro criterio de aprender haciendo vamos a realizar la primera pgina con PHP..
<!--CURSO DE PHP POR JAGA--> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php echo "Hola Mundo, esto es un script PHP";?> </body> </html>
08/08/2013 JAGA 5
APRENDER HACIENDO
El cdigo ejecutado tiene una parte de PHP y es la que imprime Hola mundo, esto es un script de PHP. No importa si por el momento no entiende el programa, este solo era un ejemplo para que observara como se intercalan el cdigo HTML y el cdigo PHP. Note que al ejecutar el cdigo el cliente recibir solo los resultados de la ejecucin por lo que imposibilita al cliente el acceso al cdigo.
08/08/2013
JAGA
Base de la Sintaxis
Para insertar PHP en HTML se coloca el cdigo PHP entre
tags.
<? ... ?> Las instrucciones van separadas por ; en caso de ser la ltima instruccin no es necesario el punto y coma. Los comentarios se encierran igual que en C: /* el comentario aqu */
Tipos de datos
El intrprete PHP asigna el tipo de una variable segn el uso que se est haciendo de ella. Para asignar un tipo fijo a una variable se utiliza la funcin settype(). Los tipos son: Enteros Flotantes String Arrays Objetos Juggling
08/08/2013
JAGA
Tipos de datos
Los tipo entero y flotante, no requieren de mucha explicacin, as que detallaremos slo los tipos String, Arrays, Objetos y Juggling. String Las cadenas pueden estar delimitadas por " o '. Si la cadena est delimitada por comillas dobles, cualquier variable incluida dentro de ella ser sustituida por su valor. Para especificar el carcter " se escapar con el carcter backslash. Otra forma de delimitar una cadena es utilizando la sintaxis de documentos "<<< Ejemplo:
08/08/2013 JAGA 9
Tipos de datos
En el ejemplo anterior modifique el cdigo para que se vea como sigue::
<?php
echo "Hola Mundo, esto es un script PHP <br>"; $variable = 'Ejemplo de cadena con coma simple o apstrofe';
echo $variable;
?> En este ejemplo se introdujo una variable por lo tanto vamos a hablar un poco de ello.
08/08/2013
JAGA
10
Tipos de datos
El contenido de una variable se puede leer y cambiar durante la ejecucin de una pgina PHP. No es necesario definirla y va precedida por el smbolo $, una variable puede contener primero un nmero y luego un carcter o viceversa. Introduzca el siguiente fragmento de cdigo al final, antes del tag ?> y pruebe. $variable=1; echo $variable;
08/08/2013
JAGA
11
Tipos de datos
Arrays Los Arrays en PHP se pueden utlizar tanto como Arrays indexados o como Arrays asociativos. 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. Los arrays pueden ser ordenados utilizando las siguientes funciones: asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort() y uksort() .
08/08/2013
JAGA
12
Tipos de datos
Otras funciones para el manejo de arrays son: count(), next(), prev() y each() . Objetos Para inicializar un objeto se utiliza el mtodo new , y para acceder a cada uno de sus mtodos se utiliza el operador ->.
08/08/2013
JAGA
13
Variables
Hemos dicho que el tipo de una variable en PHP, se define segn el contenido y el contexto en el que se utilice. Para asegurarse de que una variable es del tipo adecuado se utiliza la funcin settype() . Para obtener el tipo de una variable se utiliza la funcin gettype() . Variables predefinidas En PHP cada vez que se ejecuta un script, existen variables que se crean y que nos pueden informar del entorno en el que se est ejecutando dicho script.
08/08/2013
JAGA
14
Variables
Para obtener una lista de todas estas variables predefinidas se puede utilizar la funcion phpinfo(). De todas estas variables, algunas se crean dependiendo del servidor que se est utilizando y otras son propias de PHP
Si se tratara de un servidor Apache, la lista de variables es: * GATEWAY_INTERFACE * SERVER_SOFTWARE * REQUEST_METHOD * SERVER_NAME * SERVER_PROTOCOL * QUERY_STRING
08/08/2013
JAGA
15
Variables
* DOCUMENT_ROOT * HTTP_ACCEPT_CHARSET * HTTP_ACCEPT_LANGUAJE * HTTP_HOST * HTTP_ACCEPT * HTTP_ENCODING * HTTP_CONNECTION * HTTP_REFERER
HTTP_USER_AGENT
* REMOTE_PORT * SERVER_ADMIN
* REMOTE_ADDR
* SCRIPT_FILENAME * SERVER_PORT
* SERVER_SIGNATURE
* SCRIPT_NAME
* PATH_TANSLATED
* REQUEST_URL
08/08/2013
JAGA
16
Variables
las variables creadas por el propio PHP son: * ARGV * PHP_SELF * HTTP_GET_VARS * ARGC * HTTP_COOKIE_VARS * HTTP_POST_VARS
08/08/2013
JAGA
17
Variables
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. De hecho ls variables pueden ser locales solo existen dentro de las funciones y globales que se usan fuera de las funciones y se acceden a ellas con la instruccin global nombre_variable. Variables variables PHP permite un mecanismo para mantener variables con un nombre no fijo. Por ejemplo: $a = "hola"; $$a = mundo";
08/08/2013
JAGA
18
Variables
El ejemplo anterior, define dos variables, una denominada $a que contiene el valor "hola" y otra que se llama $hola que contiene el valor "mundo" Agregue a la pgina el cdigo anterior y la siguiente lnea: echo $a ${$a};
Estas lneas producirn la salida hola mundo. Lo mismo suceder si la lnea que se introduce es echo $a $hola;
08/08/2013
JAGA
19
Constantes
Las constantes en PHP se definen con la funcin define() y adems no pueden ser redefinidas con otro valor. Adems, existen una serie de variables predefinidas denominadas: _FILE_: Fichero que se est procesando. _LINE_: Lnea del fichero que se est procesando
08/08/2013
JAGA
20
Constantes
FALSE: Falso. E_ERROR: Error sin recuperacin. E_ERROR: Error sin recuperacin. E_WARNING: Error recuperable.
08/08/2013
JAGA
21
Constantes
A continuacin copie el siguiente cdigo en la pgina y vuelva a probar:
Expresiones
En PHP una expresin es cualquier cosa que pueda contener un valor. Las expresiones ms simples son las variables y las constantes, otras ms complicadas son las funciones ya que estas contienen un valor al ser invocadas.
08/08/2013
JAGA
22
Operadores
Los operadores abreviados, los incrementos, etc, son exactamente iguales a los utilizados en C. 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 operador contienen el mismo valor y a la vez son del mismo tipo. Por ltimo, el operador "@" sirve para el control de errores. Tenemos entonces: suma +, resta - , producto * , divisin / , mdulo %, suma 1 ++, resta 1 --.
08/08/2013
JAGA
23
Operadores
Los operadores de comparacin no son la excepcin y siguen la regla de C.
Igual ==, diferente !=, menor que <, menor o igual <=, mayor o igual >=.
Lleg el momento de poner en prctica lo aprendido, valindose del comando echo y de la declaracin de variables agregue el cdigo necesario para aplicar estos operadores a los valores 7 y 5 . Tome por ejemplo como variables a,b, c y asgnele a dos de ellas el mismo valor.
08/08/2013
JAGA
24
Operadores
Los operadores lgicos tampoco difieren de los usados en C o Java.
Y lgico:
O lgico:
&& o and ;
|| u or;
No lgico: !.. La aplicacin o ejemplo de estos operadores lo dejamos para cuando se realicen ejemplos con los diferentes estructuras de control en PHP.
08/08/2013
JAGA
25
Estructuras de Control
A continuacin un resumen de las opciones que ofrece PHP para las estructuras de control. Estructura Alternativa
if: endif;
while: endwhile; endfor;
switch: endswitch;
JAGA 26
Estructuras de Control
Estructura Alternativa
break
Require()
(Necesita estar dentro de tags PHP) include() -
08/08/2013
JAGA
27
Condicionales
if (condicion) { sentencias a ejecutar
{ sentencias a ejecutar
cuando la condicin sea falsa; } Incorpora el codigo que sigue a la pgina y ve el resultado.
08/08/2013 JAGA 28
Condicionales
$var1=3; $var2=6;
if ($var1<$var2)
{ echo $var1; echo " es menor que ";
echo $var2;
} else
Condicionales
Otra sentencia de desicin o condicional es la sentencia switch ... Case. Inserte el cdigo siguiente y compruebe el funcionamiento de la sentencia. $posicion=1; switch($posicion){ case 1: //primera opcion echo el valor de la variable es: ;
echo $posicion;
break;
08/08/2013 JAGA 30
Condicionales
case 2: //segunda opcion echo el valor de la variable es: ;
echo $posicion;
break; default: // si no es opcion vlida echo el valor de la variable es: ; echo distinto de 1 y 2; }
08/08/2013
JAGA
31
Bucles
Empezaremos con un ejemplo de la sentencia while. $i=1; while (i<3) { echo i tiene el valor de ,$i,<br>;
$i++;
}
08/08/2013
JAGA
32
Bucles
FOR Para variar sigue la sintaxis de c
08/08/2013
JAGA
33
Salida
La instruccin echo ha sido usada hasta ahora para permitir una salida, sin embargo es muy limitada ya que no permite una salida formateada, para ello se usa la instrunccin printf cuyo valor no solo radica en formatear los valores de salida sino que permite introducir texto entre ellos. inserta el siguiente cdigo
printf(el 2 con formato entero<br>%d</br> flotante <br>%f</br> y con dos decimales:<br> %.2f</br>,2,2,2);
Dentro de la cadena de formato se incluyen una serie de caracteres especiales que indican como se debe formatear la variable includa en la instruccin.
08/08/2013
JAGA
34
Salida
Entre otros tenemos %s para cadena de caracteres, %d para enteros o sin decimales; %f nmero con decimales; %c para un carcter ASCII.
08/08/2013
JAGA
35
Arreglos en PHP
Las tablas (o array en ingls), son muy importantes en PHP, ya que generalmente, las funciones que devuelven varios valores, como las funciones ligadas a las bases de datos, lo hacen en forma de tabla. En PHP disponemos de dos tipos de tablas. El primero sera el clsico, utilizando ndices y el segundo son las tablas asociativas, en las cules a cada elemento se le asigna un valor (key) para acceder a l. El cdigo que se presenta a continuacin aclara el primero de los tipos. Inserte el cdigo y compruebe la potencialidad del comando printf y del uso de arreglos.
08/08/2013
JAGA
36
Arreglos en PHP
<?php $ciudad[] = "Pars"; $ciudad[] = "Roma"; $ciudad[] = "Sevilla"; $ciudad[] = "Londres"; print ("yo vivo en " . $ciudad[2] . "<BR>\n"); ?> <?php $ciudad= array("Pars", "Roma", "Sevilla", "Londres"); //contar el nmero de elementos $numelentos = count($ciudad); for ($i=0; $i < $numelentos; $i++) { print ("La ciudad $i es $ciudad[$i] <BR>\n"); } ?>
08/08/2013 JAGA 37
Manejo de Cadenas
echo 'funcin que entrega cantidad de caracteres en una cadena<font color="#0000FF"> <em>strlen</em></font> <br> ';
$str1='hola mundo';
echo "la cadena a probar es ",$str1,"<br>"; echo strlen($str1),"<br>"; echo 'funcin que divide una cadena en varias usando un caracter separador<font color="#0000FF"> <em>split </em> </font> <br> '; $separar=split(" ",$str1);
08/08/2013
JAGA
38
Manejo de Cadenas
printf ("el resultado al separar es: <br>"); for($i=0;$separar[$i];$i++)
echo $separar[$i],"<br>";
echo 'si lo que se quiere es una subcadena de una cadena se usa <font color="#0000FF"> <em>substr</em></font><br> ';
echo substr($str1,0,4),"<br>";
Hay otras pero por el momento estas le darn la idea de lo mucho que se puede hacer con ellas. Tambien es posible el manejo de funciones creadas por el usuario, tal como lo muestra el cdigo a continuacin.
08/08/2013
JAGA
39
Funciones de Usuario
. function promedio($x,$y) { $prom=($x+$y)/2; return $prom; } printf ("El promedio de 10 y 13 es %d <br>", promedio(10,13)); printf ("El promedio de 10 y 13 es %.2f ", promedio(10,13));
08/08/2013
JAGA
40
Funciones de Usuario
. Para declarar una funcin debemos utilizar la instruccin functin seguido del nombre que le vamos a dar, y despus entre parntesis la lista de argumentos separados por comas, aunque tambin habr funciones que no recojan ningn argumento. Existe una manera de terminar la ejecucin de la funcin aunque an haya cdigo por ejecutar, mediante el uso de la instruccin return terminamos la ejecucin del cdigo de una funcin y devolvemos un valor. Podemos tener varios return en nuestra funcin.
08/08/2013
JAGA
41
Pginas Interactivas
Lo . que hace a PHP interesante en las pginas WEB es que permite la interactividad. Para introducirnos en su uso debemos cerrar el proyecto que estamos ejecutando y comenzar uno nuevo.
Cuando se disea la pgina que contiene el formulario en el cual el usuario introduce la informacin a procesar se debe indicar la pgina php que procesar el formulario, indicando tambin el mtodo por el que se pasar la informacin.
Llamaremos captura.html a la pgina del formulario y procesa.php a la que procesar la informacin.
08/08/2013
JAGA
42
Pginas Interactivas
El . cdigo para la pgina de captura es: <!-- Manual Bsico de PHP de JAGA --> <html> <head> <title>Ejemplo de PHP</title> </head>
<body> <h1>Procesando formularios</h1> Introduzca un valor:<FORM ACTION="procesa.php" method="get"> <input type="text" name=valor"><br> <input type="submit" VALUE="Enviar"> </FORM></body> </html>
08/08/2013 JAGA 43
Pginas Interactivas
El . cdigo para la pgina procesa es: <!-- Manual Bsico de PHP de JAGA --> <html> <head> <title>Ejemplo de PHP</title> </head>
08/08/2013
JAGA
44
Pginas Interactivas
Usted se estar diciendo pero esto no es mucho y efectivamente tendr razn pues falta mucho, pero no olvide que esto es simplemente un curso bsico. Anteriormente hablamos de la existencia de dos mtodos: GET y POST para el envo de datos en un formulario; su diferencia radica en la forma de hacerlo, mientras que GET lo hace usando la URL el mtodo POST lo enva por la entrada standard STDIO. Que son dos o mas datos a ser enviados, pues se agregan las lneas de HTML necesarias para identificar el dato que se pide y una lnea PHP por cada dato con la siguiente estructura: <INPUT TYPE=text NAME=nombre de variable>
08/08/2013
JAGA
45
Pginas Interactivas
Otra particularidad de PHP es que nos permite enviar emails de una manera sencilla por medio de la instruccin mail() cuya sintaxis es como se muestra a continuacin: mail(destinatario,tema, mensaje,informacin de cabecera); El primer parmetro es la direccin email a la cual se enviar el mensaje, el segundo contiene el subject o motivo, el tercero el contenido del email y el ltimo que es optativo permite colocar informacin como Reply_To:,From:, tal como un servidor de correo. En la guia que se suministra con el curso encontrar el cdigo para poner en prtica esta opcin..
08/08/2013
JAGA
46
ACCESO A DATOS
Probaremos a continuacin el acceso a una base de datos datos con PHP, para ello usaremos mysql que viene ya con nuestro servidor web instalado, si se trata de AppServer el trae una aplicacin que nos permitir crear y modificar la base de datos.
Usamos mysql por cuanto es de distribucin gratuita y funciona sin tener que usar un servidor web distinto a su PC.. Si hemos instalado AppServ debemos hacer doble clic sobre el navegador y como direccin usaremos localhost, aparecer la pantalla que se muestra a continuacin.
08/08/2013
JAGA
47
Acceso a Datos
08/08/2013
JAGA
48
Para trabajar con MySQL hacemos clic en la opcin phpMyAdmin Database Manager Version 2.2.3 la cual nos permitir administrar la base de datos. Lo primero que haremos es crear la base de datos con la cual trabajaremos, para nuestro ejemplo ser una base de datos de nuestros contactos o amigos y la llamaremos contactos, al escribir el nombre en el espacio correspondiente y pulsar el botn crear aparece la pantalla siguiente:
08/08/2013
JAGA
49
08/08/2013
JAGA
50
08/08/2013
JAGA
51
08/08/2013
JAGA
52
08/08/2013
JAGA
53
08/08/2013
JAGA
54
08/08/2013
JAGA
55
</head>
<body> <?php
08/08/2013
JAGA
56
exit();
}
08/08/2013
JAGA
57
$link=coneccion();
echo "Coneccin exitosa <br>"; mysql_close($link); // cerrada la conexin
?>
/body> </html> Como resultado usted ver el mensaje coneccion exitosa.
08/08/2013
JAGA
58
Insercin de un registro
Con la instruccin mysql_connect se crea el vnculo entre la pagina php y la base de datos. Cuando no se necesita mas el vnculo con la base de datos debe ser liberado, para ello se usa la instruccin mysql_close. Ahora bien, solo nos conectamos, es necesario introducir datos dentro de la base de datos para ello se crearan dos pginas nuevas con los nombres captura1.html y procesa1.php, en la primera se usar un formulario y en el FORM ACTION se debe indicar que se va a procesar una pagina php en la segunda estar el cdigo php que procesar la informacin capturada por la anterior; adems incluirmos en ambas la pgina de coneccin como una librera. El cdigo a introducir ser el mostrado en las siguientes diapositivas.
08/08/2013
JAGA
59
Insercin de un registro
En estos ejemplos se presenta solo el cdigo php asi: para Captura1.html
08/08/2013
JAGA
60
Insercin de un registro
<tr><td>Cumpleao[ao-mes-dia]:</td> <td><input type="text" name="fecha" size="10" maxlength="10"></td> </tr>
<tr><td>e-mail:</td>
<td><input type="text" name="email" size="20" maxlength="30"></td>
</tr>
</table> <input type="submit" name="accion" value="Grabar">
</FORM>
08/08/2013
JAGA
61
Insercin de un registro
Ahora el cdigo de procesa1.php es: <?php include("conectar.php"); $link=coneccion(); mysql_query("insert into amigos(apellidos,nombres,cumpleano,email,status) values ('$apellido','$nombre','$fecha','$email','1')",$link); mysql_close($link);
// header("location: captura1.php");
?>
08/08/2013 JAGA 62
include("conectar.php");
?> <table border="1" cellspacing="1" cellpadding="1">
<tr><td><b>Apellidos</b></td>
<td><b>Nombres</b></td> <td><b>cumpleao</b></td> <td><b>email</b></td></tr>
08/08/2013
JAGA
63
08/08/2013
JAGA
64
?>
En el cdigo vemos como usar una librera (conectar) utilizando la instruccin include() la variable $link asume la funcin que se va usar de esa librera (coneccion), la insercin se hizo con la funcin mysql_query() a la cual se le pasa como parmetro la instruccin SQL insert into; de igual forma en la consulta se usa una instruccin Select de SQL y la funcin mysql_fetch_array() de php.
08/08/2013
JAGA
65
Eliminar un registro
Para realizar este ejercicio usaremos dos pginas captura2.html y borra.php . En captura haremos una consulta de los registros en la base de datos para seleccionar aquel que deseamos borrar, eso no quiere decir que no se pueda hacer si sabemos de antemano cual borrar, para ello nos valdremos de una variable que almacene el valor del campo a ser eliminado y de una instruccin SQL. Como habr podido observar SQL es la clave del asunto, por eso es recomendable conocer sus comandos, si bien es cierto estos varan de una versin a otra se recomienda usar SQL ANSI. A continuacin el cdigo para lograr esto:
08/08/2013
JAGA
66
Eliminar un registro
<h1>Ejemplo de Borrado con php y MySQL</h1> <?php include("conectar.php"); ?> <table border="1" cellspacing="1" cellpadding="1">
<tr><td><b>Apellido:</b></td>
<td><b>Nombre:</b></td> <td><b>Cumpleao[ao-mes-dia]:</b></td> <td><b>e-mail:</b></td> <td><b>Borrar</b></td> </tr>
08/08/2013 JAGA 67
Eliminar un registro
<?php $link=coneccion(); $result=mysql_query("select * from amigos",$link); while ($row=mysql_fetch_array($result)) {
printf('<tr><td>%s</td><td>%s</td><td>%s</td>
<td>%s$nbsp</td><td><a href="borra.php?apellidos='.$row[apellidos].'">Borra</a></td></tr>',
$row["apellidos"],$row["nombres"], $row["cumpleano"],$row["email"]);
}
08/08/2013 JAGA 68
Eliminar un registro
mysql_free_result($result); mysql_close($link); ?> </table> En la instruccin printf se introdujo:
<a href="borra.php?apellidos='.$row[apellidos].'">
que establece quin procesar los datos: borra.php, y cual es el campo a ser borrado $row[apellidos] note que esta entre apstrofes esto es porque la instruccin en general esta entre comillas. Ahora el cdigo de borra:
08/08/2013
JAGA
69
Eliminar un registro
<?php include("conectar.php"); $link=coneccion(); mysql_query("delete from amigos where apellidos='$apellidos'",$link); mysql_close($link); ?> No hay mayor complejidad la instruccin mysql_query y la orden de borrado delete para borrar de SQL acompaada de WHERE que le permite buscar un dato especfico.
08/08/2013
JAGA
70
Eliminar un registro
Eso es todo para este curso, no se olvide revisar los conocimientos adquiridos en este curso introductorio, realizando unas nuevas pginas, as mismo revise la guia dada y complemente con el manual de PHP. Algunos sitios de inters estan en el listado www.lafacu.com
www.cybercursos.net
www.lawebdelprogramador.com www.elrincondelvago.com www.auladigital.com www.webestilo.com
08/08/2013 JAGA 71