PHP Y MYSQL

www.phpymysql.com

NICANOR YERBA

Página 1

PHP Y MYSQL

NICANOR YERBA

Libro de Php 5
Por: Nicanor yerba

Ninguna sección de este material puede ser reproducida en forma
electrónica, impreso o cualquier otro tipo de soporte existente incluyendo
fotocopiado o grabación sin la expresa autorización del autor.
La publicación que aparece en este volumen representa el punto de vista del
autor al momento de su publicación. El autor se reserva el derecho a
modificar o actualizar la información.

www.phpymysql.com

Página 2

PHP Y MYSQL

www.phpymysql.com

NICANOR YERBA

Página 3

…….………57 do.13 Separación de instrucciones……………………………………………..……...…...………………………39 Operadores de Lógica…………………………………………….…..29 Operadores……………………………………………………………….………33 Operadores de Comparación……………………………….……72 Las clases……………………………………………………..14 Variables……………………………………………………………….…………….…..….com Página 4 ...…..6 Mi primer Script PHP…………………………………………………..…………….…..…….…………………….….…………102 www...……76 Sessiones…………………………………………….…………………47 Estructuras de Control…………………………………..…………96 Enviar un formulario por mail con PHP………….….……….….…………99 Escritura en archivos con PHP………………….…………66 Require()……………………………………….……79 Ejemplos php5………………………………………….…………61 Break……………………………………………….………83 Upload de archivos con PHP…………………………….……44 Operadores de Matrices…………………………………………………45 Comparación de matrices……………………………...……………...………..……92 Mandar mails desde PHP …………………………...……………34 Operadores de Control de Errores………………….…..……42 Operadores de Cadena…………………………………………….17 Variables externas a PHP…………………………………………..…………64 Continue………………………………………….…..……70 Tiempo y fecha………………………………………….24 Operadores de Aritmética……………………...…….….……………………38 Operadores de ejecución………………………………………..….PHP Y MYSQL NICANOR YERBA Tabla de contenidos Introducción a php 5……………………………………………………..…………………………26 Operadores de aritmética con formularios………………………………29 Operadores de Asignación………………………………………...………39 Operadores de Incremento/Decremento……….…………65 Switch…………………………………………….16 Variables predefinidas en PHP………………………………………….…………………………50 Elseif………………………………...phpymysql.………51 While……………………………………….....14 Comentario en PHP……………………………………..……...………………………48 Else…………………………………….………………48 If…………………………………………...………68 include()…………………………………………………....5 Instalar AppServ……………………………………………………….….…………59 For……………………………………………....….while………………………………….

www. aspectos que se echaron en falta en la versión 4. Un paso necesario para conseguir que PHP sea un lenguaje apto para todo tipo de aplicaciones y entornos. incluso los más exigentes. Nos referimos principalmente a la programación orientada a objetos (POO) que. sólo implementaba una parte muy pequeña de las características de este tipo de programación. El principal objetivo de PHP5 ha sido mejorar los mecanismos de POO para solucionar las carencias de las anteriores versiones. se había conseguido una plataforma potente y estable para la programación de páginas del lado del servidor.com Página 5 . todavía existían puntos negros en el desarrollo PHP que se han tratado de solucionar con la versión 5.phpymysql. haciendo posible que PHP sea el lenguaje más utilizado en la web para la realización de páginas avanzadas. casi desde el día de su lanzamiento.PHP Y MYSQL NICANOR YERBA TRABAJANDO CON PHP Introducción a php 5 Con las primeras 2 versiones de PHP. Estas versiones han servido de mucha ayuda para la comunidad de desarrolladores. a pesar de que estaba soportada a partir de PHP3. Sin embargo. PHP 3 y PHP 4.

Como instalar AppServ Eso es lo mejor. es obvio pero vale la pena recordar que como esta formado por 4 paquetes (apache. Debemos dar. afortunadamente este paquete es gratuito. de los siguientes paquetes: • • • • Apache Web Server (versión 2.2. recuerda que la versión puede ser más nueva cuando tú intentes . varias veces hasta que queda instalado.PHP Y MYSQL NICANOR YERBA Instalar AppServ: php + mysql + apache sobre Windows ¿Que es AppServ? Es un software que permite la instalación en nuestro entorno Windows. en mi caso instale la 5. mysql. Pero bueno este tutorial no tiene sentido si es tan fácil.0. lo podemos bajar de su Web oficial.com Página 6 .).24) Manejador de base de datos phpMyAdmin (versión 2.phpymysql. siguiente. php. pero tranquilo se usara igual que como comento ahora.php?newlang=spanish Es muy liviano y de ahí mismo podemos bajar la última versión. Aparece la imagen que vemos debajo.6) Base de datos MySQL (versión 5. phpmyadmin). que en español esta situada acá: http://www. siguiente (next).1. vamos a ver paso a paso esas pantallas donde solo basta con dar "siguiente". que podemos instalar por separado o esperar la próxima versión de AppServ. Donde bajamos AppServ.3) Lenguaje PHP (versión 5 o 4. cada uno sigue lanzando nuevas versiones. Gratis? Si.appservnetwork. siempre. www.7. Por lo general no debemos apresurarnos ya que nuestro PC lo usamos de entorno de desarrollo y testeo de las aplicaciones. 1) Damos doble click en el icono del instalador que nos bajamos.0. por tanto para hacer como que trabajo.2) Esto es lo que incluye el actual paquete AppServ 2.9. basta con un doble click en el instalador que nos bajamos de la Web y luego damos siguiente.com/index.5. es muy fácil de hacer. o sea que no tendremos pretextos para sumarnos a esto del PHP y MySQL.

debemos elegir en cual de nuestros discos duros y en que carpeta vamos a instalar el AppServ. como muestra la imagen.PHP Y MYSQL NICANOR YERBA 2) Aparece el acuerdo de licencia. a mi no me gusta pensar mucho por tanto dejo siempre el directorio recomendado por defecto. ahí debemos dar conformidad (I Agree) 3) En este punto.com Página 7 . o sea: c:\AppServ. y le damos siguiente (Next) www.phpymysql.

php. como ves aparecen marcados los cuatro elementos disponibles (apache. le damos siguiente (Next) www.com Página 8 . es mejor instalar todos para tener completo tu equipo de testeo y desarrollo Web. phpmyadmin) si bien puedes desmarcar alguno.phpymysql.PHP Y MYSQL NICANOR YERBA 4) En este punto debemos elegir los componentes que vamos a instalar (recuerda que todos los pasos basta con dar siguiente siguiente). mysql.

respectivamente. para el usuario principal de la base de datos.PHP Y MYSQL NICANOR YERBA 5) En este punto debes indicar el nombre del servidor y el email del administrador del sistema.com Página 9 .com. Recuerda que puedes dar siguiente y dejar lo que sugiere sin problemas. en este punto debemos prestar atención. Lo demás lo dejamos como esta en la imagen. lo escribimos 2 veces !! Y por favor lo recuerdan (no lo anoten bajo el teclado como mi tía Clotilde). el puerto 80.phpymysql. www. en mi caso dejo localhost y email elquique@localhost. ya que debemos indicar el Password. 6) Configuración MySQL.

www. todos los que quieras) y tu Contraseña que acabas de escribir. podemos elegir si al finalizar ya comenzara a funcionar el Server Apache y el servidor de base de datos MySQL.PHP Y MYSQL NICANOR YERBA Por tanto el usuario será root.phpymysql. como indica la imagen.com Página 10 . listo hemos terminado. por eso es importante recordar .) Le damos siguiente (Next) 7) Para culminar la instalación. lo dejamos marcado y le damos finalizar (Finish). que es por defecto (tu luego puedes crear mas. eso lo usaras para abrir la base desde tus programas PHP.

PHP Y MYSQL

NICANOR YERBA

En este punto si vas a tu navegador (ojala y sea FireFox jaja), puedes poner,
http://localhost y debe mostrarse tal como muestra la imagen. Salvo las versiones que el
tuyo puede ser mas nuevo.

www.phpymysql.com

Página 11

PHP Y MYSQL

NICANOR YERBA

En la configuración Standard usando c:\AppServ la ubicación que equivale a
http://localhost es c:\AppServ\www por tanto si creas una carpeta prueba dentro de
www, quedan así: c:\AppServ\www\prueba, y dentro un archivo llamados test.php con
el siguiente contenido:
<?php
echo phpinfo();
?>

Este archivo se ejecutara en tu navegador llamando lo así:
http://localhost/prueba/test.php

www.phpymysql.com

Página 12

PHP Y MYSQL

NICANOR YERBA

Mi primer Script PHP
<html>
<body>
<?php
$myvar = "Hola Este es mi primer script en PHP";
//Esto es un comentario
/* Esto es un comentario */
echo $myvar;
?>
</body>
</html>

Una vez escrito salvamos en un fichero con la extensión php, y lo colocamos en nuestro
servidor, http://localhost/prueba/nombre.php . Ahora si ponemos esta URL en nuestro
navegador veremos una línea con el texto "Hola. Este es mi primer script en PHP" .
Lo primero que apreciamos en el script son sus delimitadores. En la primera línea del
script vemos <?php que nos indica que comienza un script en PHP, y en la última
colocamos ?> para indicar el final del script. Hay que destacar que todas las líneas que
se encuentre entre estos delimitadores deben acabar en punto y coma , excepto las
sentencias de control (if, swicht, while, etc.).
Como en toda programación, es importante poner muchos comentarios, para lo cual si
queremos comentar una sola línea tenemos que poner al principio de la línea // , si lo
que queremos es comentar varias utilizaremos los delimitadores /* - */ .
Para que el servidor envié texto utilizaremos la instrucción echo , aunque también
podemos utilizar printf de uso similar al del C o Perl .
Finalmente, vemos que la palabra myvar comienza con el signo dólar ( $ ) . Este
símbolo le indica a PHP que es una variable. Nosotros le hemos asignado un texto a
esta variable, pero también pueden contener números o tablas (arrays). Es importante
recordar que todas las variables comienza con el signo dólar . También habréis
observado que el texto que le asignamos a la variable termina con n , esto no se
imprime sirve para indicarle al navegador una nueva línea.

www.phpymysql.com

Página 13

corregir. De esta manera el código será mucho mas sencillo de comprender y a su vez de modificar. /* esto tampoco se ve */ ?> O tambien podemos usar # como en los comentarios del shell de Unix: <? # esto no se ve echo "pero esto si". La etiqueta de fin de bloque (?>) implica el fin de la declaración. ?> <?php echo " Ejemplo de mensaje 2" ?> Comentario en PHP Para que en futuras revisiones a tu código por tu parte y sobretodo por parte de otros programadores este código sea inteligible para la mente humana.com Página 14 . es un buen costumbre comentar lo que se esta haciendo en PHP pero en palabras. Los comentarios que soporta PHP són los de C.phpymysql. por lo tanto lo siguiente es equivalente: <?php echo " Ejemplo de mensaje 1 <br />".. C++ y los del shell de Unix. // esto no se ve echo "Esto tambien se ve".PHP Y MYSQL NICANOR YERBA Separación de instrucciones La separación de instrucciones se hace de la misma manera que en C o Perl terminando cada declaración con un punto y coma. ampliar. ?> Tendremos cuidado con no poner un comentario multilínea en el interior del otro: www.. asi podemos usar // y /* */ para comentarios y comentarios multilinea respectivamente como haríamos en C: <? echo "Esto se ve <br />".

Como resultado tendremos lo siguiente: www.phpymysql.com Página 15 .PHP Y MYSQL NICANOR YERBA <? /* /* No hacer nunca esto */ */ ?> Como veis. esto nos producirá un error asi que habrá que tener cuidado. PHP interpreta como comentario desde el primer /* al primer */ sin tener en cuenta que hay otro */.

es decir que una misma variable puede contener un número y luego puede contener carácteres."<br>". $b y $c y con la instrucción echo hemos impreso el valor que contenían. Como resultado tendremos lo siguiente: www.phpymysql. <html> <body> <?php $a = $b = $c = echo ?> 1."<br>".$c. "Hola Mundo".PHP Y MYSQL NICANOR YERBA Variables Una variable es un contenedor de información. Tampoco tienen tipos.. números decimales. $a. </body> </html> En este ejemplo hemos definido tres variables. En PHP todas las variables comienzan con el símbolo del dólar $ y no es necesario definir una variable antes de usarla.$b.34. $a. 3. insertando un salto de línea entre ellas. en el que podemos meter números enteros.com Página 16 .. carácteres. el contenido de las variables se puede leer y se puede cambiar durante la ejecución de una página PHP.

2. consultar la sección Variables predefinidas reservadas. Teniendo register_globals off afecta el conjunto de variables predefinidas disponibles en el sistema.0. Note: Variables variables Las superglobales no pueden usarse como variables variables.0 y » 4. Si ciertas variables no son definidas en variables_order. PHP superglobales $GLOBALS www. Warning A partir de PHP 4. A partir de PHP 5.php?id=3 en vez de $id ó $_ENV['HOME'] en vez de $HOME.1. Por esta razón. el entorno y entradas del usuario.0 El uso de las variables reservadas predefinidas en PHP. asi como los anuncios de lanzamiento de PHP » 4. A partir de PHP 4.0. se pueden desactivar con la directiva register_long_arrays. son conocidas a menudo como "autoglobales" ó "superglobales". como matrices superglobales es recomendable. sin embargo para una lista de sus contenidos y más información sobre variables predefinidas en PHP. las matrices PHP predefinidas asociadas a estas.1.example. Este es un cambio importante en PHP. De todas formas.0. Podréis ver como las variables predefinidas antiguas ($HTTP_*_VARS) todavía existen. y otros factores. muchas de esas variables no pueden estar completamente documentadas ya que dependen de sobre qué servidor se esté ejecutando.2. el capítulo sobre seguridad Usando "Register Globals" . conteniendo variables del servidor web. el valor por defecto de la directiva PHP register_globals es off (desactivada). PHP ofrece un conjunto adicional de matrices predefinidas. para obtener DOCUMENT_ROOT se usará$_SERVER['DOCUMENT_ROOT'] en vez de $DOCUMENT_ROOT ó $_GET['id'] de la URLhttp://www.com/test.com Página 17 . la versión y configuración de dicho servidor. Para obtener una lista de estas variables podéis consultar la sección Variables predefinidas reservadas.PHP Y MYSQL NICANOR YERBA Variables predefinidas en PHP PHP proporciona una gran cantidad de variables predefinidas a cualquier script que se ejecute. Las superglobales se mencionan más abajo. Algunas de estas variables no estarán disponibles cuando se ejecute PHP desde la línea de comandos. Para más información sobre este cambio. Estas nuevas matrices son un poco especiales porque son automáticamente globales.0. las matrices de tipo "long" de variables predefinidas. estarán vacias. Por ejemplo. podéis consultar el apartado de configuración sobreregister_globals.phpymysql.

$_FILES Variables proporcionadas al script por medio de la subida de ficheros via HTTP . Análoga a la antigua matriz $HTTP_SERVER_VARS (la cual está todavía disponible. $_POST Variables proporcionadas al script por medio de HTTP POST. Análoga a la antigua matriz$HTTP_ENV_VARS (la cual está todavía disponible. Note: Cuando se utiliza la linea de comandos. argv y argc no son incluidas aquí. $_SERVER Variables definidas por el servidor web ó directamente relacionadas con el entorno en don el script se esta ejecutando.phpymysql. Vea también import_request_variables(). $_GET Variables proporcionadas al script por medio de HTTP GET. Vea también la sección Funciones para el manejo de sessiones para más información. www. $GLOBALS existe dese PHP 3. La presencia y el orden en que aparecen las variables en esta matriz es definido por la directiva de configuración variables_order.0.1. Análoga a la antigua matriz$HTTP_POST_VARS (la cual está todavía disponible. aunque no se use).PHP Y MYSQL NICANOR YERBA Contiene una referencia a cada variable disponible en el espectro de las variables del script. $_COOKIE Variables proporcionadas al script por medio de HTTP cookies. aunque no se use). aunque no se use). Análoga a la antigua matriz$HTTP_GET_VARS (la cual está todavía disponible. Análoga a la antigua matriz $HTTP_SESSION_VARS (la cual está todavía disponible. Esta matriz no tiene un análogo en versiones anteriores a PHP 4.com Página 18 . Análoga a la antigua matriz$HTTP_COOKIE_VARS (la cual está todavía disponible. aunque no se use). Vea también Subiendo ficheros por método POST para más información. estas variables se podrán encontrar en la matriz $_SESSION Variables registradas en la sesión del script. aunque no se use). $_REQUEST Variables proporcionadas al script por medio de cuaquier mecanismo de entrada del usuario y por lo tanto no se puede confiar en ellas. Análoga a la antigua matriz $HTTP_POST_FILES (la cual está todavía disponible. Las llaves de esta matriz son los nombres de las variables globales. aunque no se use). $_ENV Variables proporcionadas al script por medio del entorno. aunque no se use).

PHP Y MYSQL NICANOR YERBA Variables externas a PHP Formularios HTML (GET y POST) Cuando se envía un formulario a un script PHP. ?> </body> </html> Como resultado tendremos lo siguiente: www. Por ejemplo. las variables de dicho formulario pasan a estar automáticamente disponibles en el script gracias a PHP.phpymysql.php" method="get"> Name: <input type="text" name="nombre"><br> Email: <input type="text" name="email"><br> <input type="submit" name="submit" value="Submit me!"> </form> <?php print $_GET['nombre'].com Página 19 . consideremos el siguiente formulario: Ejemplo #1 Variables de formulario simples <html> <body> <form name="form1" action="1. print $_GET['email'].

// Available since PHP 3. print $HTTP_POST_VARS['username'].0. // Available if the PHP directive register_globals = on. these long predefined // variables can be disabled with the register_long_arrays directive. As of // PHP 4.2. 'p_'). print $_REQUEST['username']. print $p_username.0. As of PHP 5. import_request_variables('p'.PHP Y MYSQL NICANOR YERBA Dependiendo de tu configuración y preferencias personales. ?> www. print $username.1.com Página 20 . existen muchas maneras de acceder a los datos de tus formularios HTML.0 print $_POST['username']. // Using/relying on this method is not preferred. Algunos ejemplos: Ejemplo #2 Accediendo datos de un formulario simple HTML POST <?php // Available since PHP 4.0 the default value of register_globals = off.phpymysql.

hackingballz. vamos a mandar un formulario asi mismo y a presentar los datos cuando se reciban: Ejemplo #3 Variables de formulario más complejas <?php if ($HTTP_POST_VARS['action'] == 'submitted') { print '<pre>'.com/test.example.com/herramientas/man ual-oficial-dephp/'. Por ejemplo http://www. antes de PHP 4.phpymysql.0. La comunidad PHP anima a no confiar en esta directiva ya que es preferible asumir que tiene el valor off (desactivada) y programar teniendo en cuenta esto. el valor por defecto de register_globals era on (activado). Se puede. "Escaping" es necesario en inserciones a bases de datos.1. GET también se usa con QUERY_STRING (la información despues del símbolo '?' en una URL).2.'">Please try again</a>'. Note: La directiva de configuración magic_quotes_gpc afecta a valores Get.0. } else { ?> <form action="<?php echo $HTTP_SERVER_VARS['PHP_SELF']. Y. print_r($HTTP_POST_VARS).com Página 21 . Como hemos dicho. que en este caso serán del tipo GET.PHP Y MYSQL NICANOR YERBA Usando un formulario GET es similar excepto en el uso de variables predefinidas. por ejemplo. en PHP 3 estba siempre activado. Si esta activada (on) el valor (It's "PHP!") sera convertido automaticamente a (It

s ###BOT_TEXT###quot;PHP!###BOT_TEXT###quot;). ?>" meth od="POST"> Name: <input type="text" name="personal[name]"><br> Email: <input type="text" name="personal[email]"><br> Beer: <br> <select multiple name="beer[]"> <option value="warthog">Warthog</option> www. PHP tambien entiende matrices en el contexto de variables de formularios. print '<a HREF="http://www. $HTTP_SERVER_VARS['PHP_SELF'] .php?id=3 contiene datos GET que son accesibles con$_GET['id']. Note: Matrices superglobales. como $_POST y$_GET. print '</pre>'. están disponibles desde PHP 4. Por ejemplo. Post y Cookie. agrupar juntas variables relacionadas ó usar esta característica para obtener valores de una entrada "select2 múltiple.

time()+3600). sub_x y sub_y. "Testing 2". el formulario que la acompaña se transmitirá al servidor con dos variables adicionales. time()+3600). Las cookies son un mecanismo para almacenar datos en el navegador y así rastrear o identificar a usuarios que vuelven. En PHP 4. ?> www.phpymysql. no existe esta restricción. Por ejemplo: <?php setcookie("MyCookie[foo]". $HTTP_COOKIE_VARS y también en $_REQUEST. Si se quieren asignar múltiples valores a una sola cookie. "Testing 1". Las cookies son parte de la cabecera HTTP. Cookies HTTP PHP soporta cookies de HTTP de forma transparente tal y como están definidas en en las » Netscape's Spec.gif" name="sub"> Cuando el usuario hace click en cualquier parte de la imagen.com Página 22 .PHP Y MYSQL NICANOR YERBA <option value="guinness">Guinness</option> <option value="stuttgarter">Stuttgarter Schwabenbräu</op tion> </select><br> <input type="hidden" name="action" value="submitted"> <input type="submit" name="submit" value="submit me!"> </form> <?php } ?> en PHP 3. pero PHP convierte el guión en subrayado automáticamente. es posible usar una imagen en vez del botón estandar de "mandar": <input type="image" src="image. setcookie("MyCookie[bar]". Los más experimentados puede notar que los nombres de variable enviados por el navegador contienen un guión en vez de un subrayado (guión bajo). Se pueden crear cookies usando la función SetCookie(). basta con añadir [] al nombre de la cookie para definirla como una matriz. Estas contienen las coordenadas del click del usuario dentro de la imagen. el uso de matrices de variables de formularios está limitado a matrices unidimensionales. Es la misma restricción que para la función header(). tal como $_COOKIE. así que se debe llamar a la función SetCookie antes de que se envíe cualquier salida al navegador. Los datos de una cookie estan disponibles en la matriz con datos de cookies apropiada. IMAGE SUBMIT variable names Cuando mandamos un formulario.

y seguido por la prueba (es decir. para una aplicación de carro de la compra se podría querer mantener un contador e ir pasándolo. y is_string(). Si se quiere definir una sola cookie con valores multiples. is_int(). setcookie("count". no se pretendía que fuese este el resultado. no siempre resulta obvio de qué tipo es una variable dada en un momento concreto.PHP Y MYSQL NICANOR YERBA Esto creara dos cookies separadas aunque MyCookie será una matriz simple en el script. $item. seguido por el operador de concatenación. is_float(). PHP incluye varias funciones que descubren de qué tipo es una variable: gettype(). time()+3600). Nótese que una cookie reemplazará a una cookie anterior que tuviese el mismo nombre en el navegador a menos que el camino (path) o el dominio fuesen diferentes. Ejemplo #4 Ejemplo SetCookie <?php $count++. Obviamente. is_array(). Así. setcookie("Cart[$count]". PHP no altera los nombres de las variables cuando se pasan a un script. P. www.ext. es importante hacer notar que PHP reemplazará automáticamente cualquier punto en los nombres de variables de entrada por guiones bajos (subrayados).is_object(). una cadena sin entrecomillar que no coincide con ninguna palabra clave o reservada conocida) 'ext'.com Página 23 . Por esta razón: <?php $varname. considerar primero el uso de la función serialize() óexplode() en el valor. time()+3600). $count.phpymysql.ej. Por esta razón. Determinando los tipos de variables Dado que PHP determina los tipos de las variables y los convierte (generalmente) según lo necesita. hay que notar que el punto no es un carácter válido en el nombre de una variable PHP. ?> Puntos en los nombres de variables de entrada Típicamente. De todas formas. ?> /* nombre de variable invalido */ Lo que el intérprete ve es el nombre de una variable $varname.

Éste debe ser usado para seleccionar entre dos expresiones.com Página 24 . ya que el operador de multiplicación ("*") tiene una mayor precedencia que el operador de adición ("+"). El segundo grupo se conoce como operadores binarios. con aquellos de mayor precedencia listados al comienzo de la tabla. la respuesta es 16 y no 18. en lugar de seleccionar dos sentencias o rutas de ejecución. Los paréntesis pueden ser usados para marcar la precedencia. el cual opera sobre un único valor. en cuyo caso su asociatividad decide el orden para evaluarlos. se utiliza una asociación de izquierda a derecha. Precedencia de Operadores La precedencia de un operador indica qué tan "cerca" se agrupan dos expresiones. Por ejemplo: (1 + 5) * 3 evalúa a 18.phpymysql. Si la precedencia de los operadores es la misma. Existen tres tipos de operadores. Los operadores en la misma línea tienen la misma precedencia. www.PHP Y MYSQL NICANOR YERBA Operadores Un operador es algo a lo que usted entrega uno o más valores (o expresiones. Así que puede pensar sobre las funciones o construcciones que devuelven un valor (como print) como operadores. Rodear las expresiones ternarias con paréntesis es una muy buena idea. y una lista se encuentra disponible más adelante en la sección Precedencia de Operadores. En primer lugar se encuentra el operador unario. este grupo contiene la mayoría de operadores que soporta PHP. en jerga de programación) y produce otro valor (de modo que la construcción misma se convierte en una expresión). Por ejemplo. en base a una tercera. por ejemplo (el operador de negación) o ++ (el operador de incremento). en la expresión 1 + 5 * 3. y en aquellas que no devuelven nada (como echo) como cualquier otra cosa. si resulta necesario. la asociatividad de derecha quiere decir lo contrario. El tercer grupo consiste del operador ternario: ?:. La siguiente tabla lista la precedencia de los operadores. La asociatividad de izquierda quiere decir que la expresión es evaluada desde la izquierda a la derecha.

PHP aun permite expresiones similares a la siguiente: if (!$a = foo()). // $a = ($b += 3) -> $a = 5. $b = 5 ?> Use paréntesis para incrementar la legibilidad del código. // (true ? 0 : true) ? 1 : 2 = 2 $a = 1. // (3 * 3) % 5 = 4 $a = true ? 0 : true ? 1 : 2. $a = $b += 3. varios usos Ejemplo #1 Asociatividad <?php $a = 3 * 3 % 5. Nota: Aunque = tiene una menor precedencia que la mayoría de los demás operadores.phpymysql.PHP Y MYSQL Asociatividad no-asociativo new izquierda NICANOR YERBA Precedencia de Operadores Operadores Información Adicional new [ no-asociativos ++ -- array() incremento/decremento no-asociativos ~ . $b = 2.= %= &= |= ^= <<= >>= asignación izquierda and lógicos izquierda xor lógicos izquierda or lógicos izquierda .com Página 25 . www. en cuyo caso el valor de retorno de foo() va a dar a $a. y cadena izquierda << >> manejo de bits no-asociativos < <= > >= comparación no-asociativos == != === !== comparación izquierda & manejo de bits. y referencias izquierda ^ manejo de bits izquierda | manejo de bits izquierda && lógicos izquierda || lógicos izquierda ?: ternario derecha = += -= *= /= .(int) (float) (string) (array) (object) @ tipos no-asociativos instanceof tipos derecha ! lógicos izquierda */% aritmética izquierda +-. aritmética.

Resto de $a dividido por $b. en cuyo caso se devuelve un valor entero. $b = 30. Cociente de $a y $b. $c = 20. Producto de $a y $b.$b $a * $b $a / $b $a % $b Nombre Adición Substracción Multiplicación División Módulo Resultado Suma de $a y $b.PHP Y MYSQL NICANOR YERBA Operadores de Aritmética ¿Recuerda la aritmética básica del colegio? Éstos operadores funcionan tal como aquéllos. El operador de división ("/") devuelve un valor flotante a menos que los dos operandos sean enteros (o cadenas que son convertidas a enteros) y los números sean divisibles sin residuos. $suma = $a + $b + $c. ?> Como resultado tendremos lo siguiente: www. Operadores de Aritmética Ejemplo $a + $b $a .phpymysql.com Página 26 . Ejemplo #1.Suma <?php //suma $a = 100. Diferencia entre $a y $b. echo "Total = $suma"..

?> www. $b = 50. ?> Ejemplo #3. $b = 10.PHP Y MYSQL NICANOR YERBA Ejemplo #2.phpymysql.Resta <?php //resta $a = 100.Multiplicación <?php //Multiplicación $a = 100.$b.. echo "Total = $Multiplicacion". $resta = $a . echo "Total = $resta".com Página 27 . $Multiplicacion = $a * $b..

echo "Total = $Division". $Division = $a / $b.División <?php //Division $a = 50..PHP Y MYSQL NICANOR YERBA Ejemplo #4. $b = 10.com Página 28 .. $Modulo = $a % $b.Módulo Resto <?php //Modulo $a = 100. ?> Ejemplo #5. echo "Total = $Modulo". ?> www.phpymysql. $b = 10.

?> </body> </html> www. Ejemplo de Suma con formulario utilizando método post: <html> <body> <form name="form1" action="suma_formulario.com Página 29 . $b =$_POST['variableb'].php" method="post"> Variable a: <input type="text" name="variablea"><br /> Variable b: <input type="text" name="variableb"><br /> <input type="submit" name="submit" value="Sumar"> </form> <br /><br /><br /> <?php $a =$_POST['variablea']. echo "Total $suma".PHP Y MYSQL NICANOR YERBA Operadores de aritmética con formularios Para trabajar con los Operadores Aritméticos de una manera mas dinámica le implementaremos campos de formularios donde ingresaremos los datos y estos serán procesados por PHP.phpymysql. $suma = $a + $b.

$resta = $a .php" method="post"> Variable a: <input type="text" name="variablea"><br /> Variable b: <input type="text" name="variableb"><br /> <input type="submit" name="submit" value="Sumar"> </form> <br /><br /><br /> <?php $a =$_POST['variablea']. $b =$_POST['variableb'].phpymysql.com Página 30 . ?> </body> </html> www.PHP Y MYSQL NICANOR YERBA Ejemplo de Resta con formulario utilizando método post: <html> <body> <form name="form1" action="resta_formulario.$b. echo "Total: $resta".

$b =$_POST['variableb'].phpymysql.com Página 31 .PHP Y MYSQL NICANOR YERBA Ejemplo de Multiplicar con formulario utilizando método post: <html> <body> <form name="form1" action="multiplicar_formulario. $multiplicar = $a * $b. ?> </body> </html> www. echo "Total: $multiplicar".php" method="post"> Variable a: <input type="text" name="variablea"><br /> Variable b: <input type="text" name="variableb"><br /> <input type="submit" name="submit" value="Sumar"> </form> <br /><br /><br /> <?php $a =$_POST['variablea'].

phpymysql.com Página 32 . $b =$_POST['variableb']. $dividir = $a / $b. ?> </body> </html> www.PHP Y MYSQL NICANOR YERBA Ejemplo de Dividir con formulario utilizando método post: <html> <body> <form name="form1" action="dividir_formulario. echo "Total: $dividir".php" method="post"> Variable a: <input type="text" name="variablea"><br /> Variable b: <input type="text" name="variableb"><br /> <input type="submit" name="submit" value="Sumar"> </form> <br /><br /><br /> <?php $a =$_POST['variablea'].

Para aprender más sobre las referencias. $b = "¡Hola ". pero esto no es posible en PHP3. www. unión de matrices y de cadenas. A primera vista. usando la sintaxis $var = &$otra_var.com Página 33 . ?> Nota que la asignación copia la variable original en la nueva (asignación por valor). tal como $ b = $b . Esto puede resultar de importancia si necesita copiar algo como una matriz de gran tamaño al interior de un ciclo reducido.phpymysql. A partir de PHP4. el valor de "$a = 3" es 3. Esto le permite hacer una que otra cosa curiosa: <?php $a = ($b = 4) + 5. por favor refiérase a las Referencias explicadas. $b . usted podría pensar en él como "es igual a". El valor de una expresión de asignación es el valor que se asigna. de modo que cualquier cambio a una no afecta a la otra.= "a todos!". No lo haga. // $a es igual a 9 ahora. 'Asignación por referencia' quiere decir que ambas variables terminan apuntando a los mismos datos y que nada es realmente copiado. y $b ha sido defini do a 4.PHP Y MYSQL NICANOR YERBA Operadores de Asignación El operador básico de asignación es "=". // define $b como "¡Hola a todos!". $a += 5. "se define a"). que le permiten usar un valor en una expresión y luego definir su valor como el resultado de esa expresión. Lo que quiere decir en realidad es que el operando de la izquierda recibe el valor de la expresión a la derecha (es decir. A partir de PHP 5 los objetos son asignados por referencia a menos que explícitamente se diga lo contrario con la nueva palabra clave clone. Es decir. // define $a como 8.. ?> En conjunto con el operador básico de asignación. como si hubiésemos dicho: $a = $a + 5. Por ejemplo: <?php $a = 3. existen "operadores combinados" para todos los operadores de aritmética binaria. es soportada la asignación por referencia. "a todos!".

$a > $b Mayor que TRUE si $a es estrictamente mayor que $b. Si compara dos cadenas numéricas. (A partir de PHP 4) $a < $b Menor que TRUE si $a es escrictamente menor que $b. como su nombre indica. o si no son del mismo tipo. Puede que también se encuentre interesado en consultar las tablas de comparación de tipos. (A partir de PHP 4) $a != $b Diferente TRUE si $a no es igual a $b. Estas reglas también se aplican a la sentencia switch. ellas son comparadas como enteros. $a <= $b Menor o igual que TRUE si $a es menor o igual que $b. <?php var_dump(0 == "a"). break. $a >= $b Mayor o igual que TRUE si $a es mayor o igual que $b. www. // 1 == 1 -> true switch ("a") { case 0: echo "0".phpymysql. Operadores de Comparación Ejemplo Nombre Resultado $a == $b Igual TRUE si $a es igual a $b. la cadena es convertida a un número. ya que éstas muestran ejemplos de varios tipos de comparaciones relacionadas con tipos.com Página 34 . // 0 == 0 -> true var_dump("1" == "01").PHP Y MYSQL NICANOR YERBA Operadores de Comparación Los operadores de comparación. $a === $b Idéntico TRUE si $a es igual a $b. $a !== $b No idénticos TRUE si $a no es igual a $b. y son del mismo tipo. Si compara un entero con una cadena. $a <> $b Diferente TRUE si $a no es igual a $b. le permiten comparar dos valores. // 1 == 1 -> true var_dump("1" == "1e0").

matemática usual array array Una matriz con menos elementos es menor. la misma clase comparan propiedades en la misma forma que las matrices (PHP 4).com Página 35 . de otra forma comparar valor por valor (vea el siguiente ejemplo) array cualquiera array es siempre mayor object cualquiera object es siempre mayor www. PHP 5 tiene su propia explicación object string. Comparación con Varios Tipos Tipo del Operando 1 Tipo del Operando 2 Resultado null ostring string Convertir NULL a "".resourceo number Traducir las cadenas y recursos a números. comparación numérica o de léxico bool o null cualquiera Convertir a bool. clases diferentes son incomparables.PHP Y MYSQL NICANOR YERBA case "a": // nunca se ejecuta ya que "a" ya ha coincidido con 0 echo "a".resourceo number string. la comparación se realiza de acuerdo con la siguient tabla (en orden). } ?> Para varios tipos. break. si una clave del operando 1 no se encuentra en el operando 2 entonces las matrices son incomparables. FALSE < TRUE object Las clases internas pueden definir su propia comparación.phpymysql.

com Página 36 . $op2)) { return null. // $op1 == $op2 } ?> www. // incomparable } elseif ($val < $op2[$clave]) { return -1. // $op1 > $op2 } foreach ($op1 as $clave => $val) { if (!array_key_exists($clave.PHP Y MYSQL NICANOR YERBA Example #1 Transcripción de la comparación de matrices estándar <?php // Las matrices son comparadas de esta forma con los operad ores de comparación estándar function comparacion_matrices_estandar($op1. // $op1 < $op2 } elseif (count($op1) > count($op2)) { return 1. } } return 0.phpymysql. $op2) { if (count($op1) < count($op2)) { return -1. } elseif ($val > $op2[$clave]) { return 1.

Nota: Por favor note que el operador ternario es una sentencia. La sentencia return $var == 42 ? $a : $b. // aquí puede ver que la primera expresión es evaluada como 'tru e'. Example #2 Asignación de un valor predeterminado <?php // Ejemplo de uso de: el Operador Ternario $accion = (empty($_POST['accion'])) ? 'predeterminada' : $_POST[ 'accion']. } else { $accion = $_POST['accion']. // sin embargo. // La línea anterior es idéntica a esta sentencia if/else if (empty($_POST['accion'])) { $accion = 'predeterminada'. El comportamiente de PHP cuando se usa más de un operador ternario al interior de una sentencia no es obvio: Ejemplo #3 Comportamiento Ternario No-Obvio <?php // a primera vista.phpymysql. Es importante saber esto si se desea devolver una variable por referencia. y que no evalúa a una variable. Nota: Es recomendable que evite "apilar" las expresiones ternarias. sino al resultado de una sentencia.PHP Y MYSQL NICANOR YERBA Operador Ternario Otro operador condicional es el operador "?:" (o ternario). y expr3 si expr1 evalúa aFALSE. la salida real de la línea anterior es 't' // esto se debe a que las expresiones ternarias son evaluadas de izquierda a // derecha // la siguiente es una versión más obvia del código presentado a nteriormente echo ((true ? 'true' : 'false') ? 't' : 'f'). } ?> La expresión (expr1) ? (expr2) : (expr3) evalúa a expr2 si expr1 evalúa a TRUE. la cual ?> www. lo siguiente parece imprimir 'true' echo (true?'true':false?'t':'f').com Página 37 . en una función con retorno-por-referencia no funcionará por lo que se ha mencionado y una advertencia es generada en versiones posteriores de PHP.

?> Como resultado tendremos lo siguiente: Nota: El operador @ trabaja sólo sobre expresiones. // esto funciona con cualquier expresión. cualquier mensaje de error generado por la expresión será almacenado en la variable $php_errormsg. no solo con funciones: $valor = @$cache[$llave].PHP Y MYSQL NICANOR YERBA Operadores de Control de Errores PHP ofrece soporte para un operador de control de errores: el signo de arroba (@). así que realice sus chequeos de forma temprana si quiere usarla.com Página 38 . Una simple regla de oro es: si usted puede tomar el valor de algo. constantes. La variable será sobrescrita en cada instancia de error. Cuando es colocado al comienzo de una expresión en PHP. cualquier mensaje de error que pudiera generarse a causa de esa expresión será ignorado. llamadas a funciones y sencencias include(). puede usarlo al inicio de variables. No puede usarlo sobre definiciones de función o clase. y así sucesivamente. entonces puede usar el operador @ sobre ese algo. ni sobre estructuras condicionales como if y foreach. y así sucesivamente. <?php /* Error intencional de archivo */ $mi_archivo = @file ('archivo_que_no_existe') or die ("La apertura de archivo ha fallado: el error fue '$php_ errormsg'"). Por ejemplo. // no producirá una anotación si el índice $llave no existe. www. Si la característica track_errors está habilitada.phpymysql.

$a-- Post-decremento Devuelve $a.phpymysql. su salida será devuelta (es decir. puede ser asignada a una variable).PHP Y MYSQL NICANOR YERBA Operadores de ejecución PHP soporta un operador de ejecución: las comillas invertidas (``). ?> Note: El operador de comillas invertidas es deshabilitado cuando se encuentra activo safe mode o cuando se deshabilita shell_exec(). <?php $salida = `ls -al`. www. y luego incrementa $a en uno. Ejemplo Operadores de Incremento/decremento Nombre Efecto ++$a Pre-incremento Incrementa $a en uno. $a++ Post-incremento Devuelve $a. y luego devuelve $a. Decrementar valores NULL tampoco tiene efecto. ¡Note que no se trata de comillas sencillas! PHP intentará ejecutar el contenido entre las comillas como si se tratara de un comando del intérprete de comandos.y post-incremento y decremento. --$a Pre-decremento Decrementa $a en uno. luego devuelve $a. aunque incrementarlos resulta en 1. estilo-C. luego decrementa $a en uno.com Página 39 . echo "<pre>$salida</pre>". Operadores de Incremento/Decremento PHP ofrece soporte de operadores de pre. no será simplemente volcada como salida. El uso del operador de comillas invertidas es idéntico al deshell_exec(). Nota: Los operadores de incremento/decremento no afectan a los valores booleanos.

$a . echo $a = echo echo "<h3>Preincremento</h3>". "Debe ser 5: " .com Página 40 . $a . $a . "Debe ser 6: " . $a++ .PHP Y MYSQL NICANOR YERBA Ejemplo de un script sencillo: <?php echo "<h3>Postincremento</h3>". "<br />\n". "<br />\n". "<br />\n". $a-. El resultado del ejemplo seria Así: www. "<br />\n". ++$a . "<br />\n". 5. $a = 5. echo "Debe ser 5: " .phpymysql.. "Debe ser 4: " . $a . echo "Debe ser 6: " . "<br />\n". "Debe ser 4: " . "Debe ser 4: " . "<br />\n". 5. "<br />\n". --$a . echo $a = echo echo "<h3>Postdecremento</h3>". echo $a = echo echo ?> "<h3>Predecremento</h3>". "Debe ser 6: " . 5.

com Página 41 . mientras que en C 'Z'+1 se convierte en '[' ( ord('Z') == 90. $n<6.PHP Y MYSQL NICANOR YERBA PHP sigue la convención de Perl cuando trabaja con operaciones aritméticas sobre variables de carácter. Por ejemplo. en Perl 'Z'+1 se convierte en 'AA'. } ?> El resultado del ejemplo seria Así: www. y no la convención de C. ord('[') == 91). y aun así solo son soportados los caracteres ASCII planos (a-z y A-Z). Example #1 Operaciones Aritméticas sobre Variables de Carácter <?php $i = 'W'. Note que las variables de carácter pueden ser incrementadas pero no decrementadas.phpymysql. for ($n=0. $n++) { echo ++$i . "\n".

! $a No TRUE si $a no es TRUE. $h). $a or $b TRUE si cualquiera de $a o $b es TRUE. $b = (true || foo()). $c = (false and foo()). $f). // $g será definido como (true && false) lo que es false $h = true and false. O La razón para tener las dos variaciones diferentes de los operadores "and" y "or" es que ellos operan con precedencias diferentes. $d = (true or foo()).phpymysql. // "&&" tiene una precedencia mayor que "and" $g = true && false. $a && $b Y TRUE si tanto $a como $b son TRUE. // $f será definido como false var_dump($e. // $h será definido como true var_dump($g. $a || $b TRUE si cualquiera de $a o $b es TRUE. (Vea Precedencia de Operadores.) Ejemplo #1 Ilustración de los operadores lógicos <?php // foo() nunca será llamada ya que esos operadores trabajan en m odo corto-circuito $a = (false && foo()).com Página 42 . // $e será definido como (false || true) lo cual es true $f = false or true. pero no ambos. O $a xor $b O exclusivo (Xor) TRUE si $a o $b es TRUE. www. // "||" tiene una precedencia mayor que "or" $e = false || true.PHP Y MYSQL NICANOR YERBA Operadores de Lógica Operadores de Lógica Ejemplo Nombre Resultado $a and $b Y TRUE si tanto $a como $b son TRUE.

com Página 43 .phpymysql.PHP Y MYSQL NICANOR YERBA El resultado del ejemplo seria Así: www.

el cual adiciona el argumento del lado derecho al argumento en el lado izquierdo.= "Mundo!". <?php $a = "¡Hola ". $a = "¡Hola ". // ahora $b contiene "¡Hola Mundo!" echo $b.phpymysql.='). el cual devuelve el resultado de concatenar sus argumentas a lado derecho e izquierdo. El primero es el operador de concatenación ('.PHP Y MYSQL NICANOR YERBA Operadores de Cadena Existen dos operadores para datos tipo string. $b = $a . El segundo es el operador de asignación sobre concatenación ('. ?> www.'). $a . "Mundo! ". echo $a. Por favor consulte Operadores de Asignación para más información.com // ahora $a contiene "¡Hola Mundo!" Página 44 .

$a <> $b Noigualdad TRUE si $a no es igual a $b. $a == $b Igualdad TRUE si $a y $b tienen las mismas parejas llave/valor. El operador + adiciona elementos de las claves restantes de la matriz del lado derecho a aquella al lado izquierdo. $a === $b Identidad TRUE si $a y $b tienen las mismas parejas llave/valor en el mismo orden y de los mismos tipos.PHP Y MYSQL NICANOR YERBA Operadores de Matrices Operadores de Matrices Ejemplo $a + $b Nombre Unión Resultado Unión de $a y $b. al mismo tiempo que cualquier llave duplicada NO es sobrescrita. $a !== $b Noidentidad TRUE si $a no es idéntico a $b.com Página 45 . www.phpymysql. $a != $b Noigualdad TRUE si $a no es igual a $b.

$c = $b + $a.phpymysql. $b = array("a" => "pera". $c = $a + $b. // Unión de $a y $b echo "Unión de \$a y \$b: \n".PHP Y MYSQL NICANOR YERBA <?php $a = array("a" => "manzana". "c" => "cereza"). var_dump($c). ?> Como resultado tendremos lo siguiente: www. var_dump($c). // Unión de $b y $a echo "Unión de \$b y \$a: \n".com Página 46 . "b" => "fresa". "b" => "banano").

"0" => "manzana").PHP Y MYSQL NICANOR YERBA Comparación de matrices <?php $a = array("manzana".phpymysql. $b = array(1 => "banano". var_dump($a == $b). "banano"). // bool(false) ?> www.com Página 47 . // bool(true) var_dump($a === $b).

PHP caracteriza una estructura if que es similar a la de C: <?php if (expr) sentencia ?> Como se describe en la sección sobre expresiones. una sentencia condicional e incluso una sentencia que no haga nada (una sentencia vacía) Las sentencias normalmente acaban con punto y coma Además. este código mostraría a es mayor que b si $a fuera mayor que $b.PHP Y MYSQL NICANOR YERBA Estructuras de Control Todo script PHP se compone de una serie de sentencias. incluido PHP. Por ejemplo. no hay necesidad de encerrar cada sentencia con una cláusula if. ?> A menudo. expr se evalúa a su valor condicional (boolean). entonces que emprima el variable $a: www. una llamada a función. Permite la ejecución condicional de fragmentos de código.la ignorará. En vez de eso. un bucle. Se puede encontrar más información sobre los valores evaluados como FALSE en la sección Convirtiendo a un valor condicional (boolean). El siguiente ejemplo mostraría a es mayor que b si $a fuera mayor que $b: <?php if ($a > $b) echo "a es mayor que b". if La construcción if es una de las más importantes características de muchos lenguajes. PHP ejecutará la sentencia. las sentencias se pueden agrupar en grupos de sentencias encapsulando un grupo de sentencias con llaves Un grupo de sentencias es también una sentencia En este capítulo se describen los diferentes tipos de sentencias.com Página 48 . Siexpr se evalúa como TRUE.phpymysql. Una sentencia puede ser una asignación. y si se evalúa como FALSE . Por supuesto. se pueden agrupar varias sentencias en un grupo de sentencias. se desea tener más de una sentencia ejecutada de forma condicional.

lo cual proporciona una flexibilidad completa para ejecuciones condicionales en las diferentes partes de tu programa.phpymysql. } ?> Como resultado tendremos lo siguiente: Las sentencias if se pueden anidar indefinidamente dentro de otras sentencias if.com Página 49 .PHP Y MYSQL NICANOR YERBA <?php $a= 10. if ($a > $b) { echo "a es mayor que b". $b= 5. www.

y a NO es mayor que b en cualquier otro caso: <?php $a = 20. } else { print "a NO es mayor que b". } ?> Como resultado tendremos lo siguiente: La sentencia else se ejecuta solamente si la expresión if se evalúa como FALSE.PHP Y MYSQL NICANOR YERBA Else A menudo queremos ejecutar una sentencia si se cumple una cierta condicion. Esto es para lo que sirve else. if ($a > $b) { print "a es mayor que b". el siguiente código mostraría a es mayor que b si $a fuera mayor que $b. y si hubiera alguna expresión elseif . else extiende una sentencia if para ejecutar una sentencia en caso de que la expresión en la sentencia if se evalúe como FALSE.com Página 50 . y una sentencia distinta si la condición no se cumple.phpymysql. www.sólo si se evaluaron también a FALSE . Por ejemplo. $b = 10.

== $b) { es igual que b". if ($a > $b) print "a } elseif ($a print "a } else { print "a } ?> { es mayor que b". $b = 10. El significado sintáctico es ligeramente distinto (si estas familiarizado con C. La primera expresión elseif (si hay alguna) que se evalúe como TRUE se ejecutaría.com Página 51 . es una combinación de if y else. es el mismo comportamiento) pero la línea básica es que ambos resultarían tener exactamente el mismo comportamiento. ejecutará esa expresión alternativa solamente si la expresión condicionalelseif se evalúa como TRUE. a es igual a b o a es menor que b: <?php $a = 20. La sentencia elseif se ejecuta sólo si la expresión if precedente y cualquier expresión elseif precedente se evalúan como FALSE. Por ejemplo. el siguiente código mostraría a es mayor que b. www.PHP Y MYSQL NICANOR YERBA Elseif elseif. En PHP. y la expresión elseif actual se evalúa como TRUE.phpymysql. Como else. a diferencia de else. como su nombre sugiere. Puede haber varios elseifs dentro de la misma sentencia if. también se puede escribir 'else if' (con dos palabras) y el comportamiento sería idéntico al de un 'elseif' (una sola palabra). No obstante. extiende una sentencia if para ejecutar una sentencia diferente en caso de que la expresión if original se evalúa como FALSE. es menor que b".

if($nombre == "nicanor") { echo "Bienvenido: $nombre". a continuación se explicará ejemplos con estas sentencias y formularios con método POST. <html> <body> <form name="form1" action="buscando_un_nombre.phpymysql. Ejemplo 1: Buscando un nombre.PHP Y MYSQL NICANOR YERBA Ejemplos con if.php" method="post"> Ingrese su Nombre: <input type="text" name="nombre"><br /> <input type="submit" name="submit" value="Buscar"> </form> <br /><br /><br /> <?php $nombre =$_POST['nombre']. else y elseif: Estas sentencias son muy usadas cuando se programa en php. } ?> </body> </html> Como resultado tendremos lo siguiente: www.com Página 52 . } else { echo "Usuario no registrado".

<html> <body> <form name="form1" action="buscando_varios_nombres. } elseif($nombre == "raul") { echo "Bienvenido: $nombre". if($nombre == "nicanor") { echo "Bienvenido: $nombre". } elseif($nombre == "nancy") { echo "Bienvenido: $nombre". } else { echo "Usuario no registrado".phpymysql. } elseif($nombre == "mercedes") { echo "Bienvenido: $nombre".PHP Y MYSQL NICANOR YERBA Ejemplo 2: Buscando varios nombres.php" method="post"> Ingrese su Nombre: <input type="text" name="nombre"><br /> <input type="submit" name="submit" value="Buscar"> </form> <br /><br /><br /> <?php $nombre =$_POST['nombre'].com Página 53 . } ?> </body> </html> Como resultado tendremos lo siguiente: www.

com Página 54 . } else { echo "Usuario no registrado".php" method="post"> Ingrese su Nombre: <input type="text" name="nombre"><br /> <input type="submit" name="submit" value="Buscar"> </form> <br /><br /><br /> <?php $nombre =$_POST['nombre'].PHP Y MYSQL NICANOR YERBA Ejemplo 3: Buscando varios nombres utilizando OR. } ?> </body> </html> Como resultado tendremos lo siguiente: www. <html> <body> <form name="form1" action="buscando_varios_nombres. if($nombre=="nicanor" or $nombre=="raul" or $nombre=="mercedes" or $nombre=="nancy") { echo "Bienvenido $nombre".phpymysql.

$password =$_POST['password'].phpymysql.php" method="post"> Ingrese su Nombre: <input type="text" name="usuario"><br /> Ingrese su Password: <input type="password" name="password"><br /> <input type="submit" name="submit" value="Buscar"> </form> <br /><br /><br /> <?php $usuario =$_POST['usuario']. } else { echo "Usuario no Registrado". if($usuario == "nicanor" and $password == "0123") { echo "Bienvenido: $usuario". <html> <body> <form name="form1" action="usuario_password_and. } ?> </body> </html> www.com Página 55 .PHP Y MYSQL NICANOR YERBA Ejemplo 4: Comparando usuario y password utilizando AND.

} } else { echo " Usuario no Registrado". if($nombre == "nicanor") { echo "Bienvenido: $nombre ".PHP Y MYSQL NICANOR YERBA Ejemplo 5: if Comparando un nombre y edad.php" method="post"> Ingrese su Nombre: <input type="text" name="nombre"><br /> Ingrese su edad: <input type="text" name="edad"><br /> <input type="submit" name="submit" value="Buscar"> </form> <br /><br /><br /> <?php $nombre =$_POST['nombre'].com Página 56 .phpymysql. $edad =$_POST['edad']. if($edad == "30") { echo " Edad correcta". <html> <body> <form name="form1" action="comparacion_nombre_edad. } ?> </body> </html> www. } else { echo "Edad incorrecta!!".

mientras la expresión while se evalúe como TRUE. while ($i <= 10) { print $i++. /* el valor impreso sería $i antes del incremento (post-incremento) */ } ?> Como resultado tendremos lo siguiente: www. El valor de la expresión es comprobado cada vez al principio del bucle. y ambos imprimen números del 1 al 10: Ejemplo #1: <?php $i = 1.phpymysql. La forma básica de una sentencia while es: While (expr) sentencia El significado de una sentencia while es simple. se pueden agrupar múltiples sentencias dentro del mismo bucle while encerrando un grupo de sentencias con llaves. Los siguientes ejemplos son idénticos.com Página 57 . la ejecución no parará hasta el fin de la iteración (cada vez que PHP ejecuta las sentencias en el bucle es una iteración). la(s) sentencia(s) anidada(s) no se ejecutarán ni siquiera una vez. Como con la sentencia if. así que incluso si este valor cambia durante la ejecución de la(s) sentencia(s) anidada(s). Le dice a PHP que ejecute la(s) sentencia(s) anidada(s) repetidamente.PHP Y MYSQL NICANOR YERBA While Los bucles while son los tipos de bucle más simples en PHP. A veces. o usando la sintaxis alternativa: While (expr) : sentencia …endwhile. si la expresión while se evalúa como FALSE desde el principio de todo. Se comportan como su contrapartida en C.

endwhile. while ($i <= 10): print $i.PHP Y MYSQL NICANOR YERBA Ejemplo #2: <?php $i = 1. ?> Como resultado tendremos lo siguiente: www.com Página 58 .phpymysql. $i++.

si esta se evalúa como FALSE desde el principio la ejecución del bucle finalizará inmediatamente). se evalúa como FALSE ($i no es más grande que 0) y la ejecución del bucle finaliza.while.. excepto que las condiciones se comprueban al final de cada iteración en vez de al principio. y usando la sentencia break.PHP Y MYSQL NICANOR YERBA do..while son muy similares a los bucles while.phpymysql. El siguiente fragmento de código demuestra esto: www. después de la primera iteración.. } while ($i>0). encapsulándolos con do. Los usuarios avanzados de C pueden estar familiarizados con un uso distinto del bucle do. para permitir parar la ejecución en medio de los bloques de código. cuando la condición se comprueba. Hay una sola sintaxis para los bucles do.com Página 59 . La principal diferencia frente a los bucles regulares while es que se garantiza la ejecución de la primera iteración de un bucle do. mientras que puede no ser necesariamente ejecutada con un bucle while regular (la condición se comprueba al principio de cada iteración.while: <?php $i = 0.. ?> El bucle de arriba se ejecutaría exactamente una sola vez.while Los bucles do.while (la condición se comprueba sólo al final de la iteración)..while(0).. do { print $i.

if ($i < $minimum_limit) { break.com Página 60 . } while(0). ?> Como resultado tendremos lo siguiente: www.phpymysql.PHP Y MYSQL NICANOR YERBA <?php do { if ($i < 5) { print "i no es lo suficientemente grande". } $i *= $factor. break. } print "i es correcto".

expr3) sentencia La primera expresión (expr1) se evalúa (ejecuta) incondicionalmente una vez al principio del bucle.PHP Y MYSQL NICANOR YERBA For Los bucles for son los bucles más complejos en PHP. $i <= 10. $i++) { print $i. al igual que C). La sintaxis de un bucle fores: for (expr1. se evalúa expr2 . Que expr2 esté vacía significa que el bucle debería correr indefinidamente (PHP implícitamente lo considera como TRUE. se evalúa (ejecuta) expr3. Todos ellos muestran números del 1 al 10: Ejemplo #1: <?php for ($i = 1. Si se evalúa como TRUE. Cada una de las expresiones puede estar vacía. Al comienzo de cada iteración. Esto puede que no sea tan inútil como se podría pensar. } ?> Como resultado tendremos lo siguiente: www. la ejecución del bucle finaliza. Si se evalúa como FALSE. puesto que a menudo se quiere salir de un bucle usando una sentencia break condicional en vez de usar la condición de for.phpymysql. el bucle continúa y las sentencias anidadas se ejecutan. Considera los siguientes ejemplos.com Página 61 . Se comportan como su contrapartida en C. Al final de cada iteración. expr2.

} print $i. } ?> Como resultado tendremos lo siguiente: Ejemplo #3: <?php $i = 1. } print $i.com Página 62 . } ?> Como resultado tendremos lo siguiente: www.$i++) { if ($i > 10) { break.PHP Y MYSQL NICANOR YERBA Ejemplo #2: <?php for ($i = 1. $i++. for (...phpymysql.) { if ($i > 10) { break.

?> Como resultado tendremos lo siguiente: www. print $i.com Página 63 .phpymysql. $i <= 10. $i++) .PHP Y MYSQL NICANOR YERBA Ejemplo #4: <?php for ($i = 1.

break. } ?> Como resultado tendremos lo siguiente: www. Esto es muy útil para salir del recorrido de un array. } print "$elemento<br>\n". 'Martes'. por ejemplo: <?php $count = 0. en el caso que no queramos seguir ejecutando el resto de las iteraciones de bucle. 'Lunes'. 'Sabado'). 'Viernes'.com Página 64 . foreach ($dias as $elemento) { if (++$count == 3) { print "Estos son los dos primeros dias de la semana<br>".phpymysql. 'Jueves'. $dias = array('Domingo'. 'Miercoles'.PHP Y MYSQL NICANOR YERBA break break nos sirve para detener el bucle. es decir.

$dias = array('Domingo'. <?php $count = 0. } print "$elemento<br>\n". 'Viernes'. 'Lunes'. el cual determina cuantos niveles (bluces) hay que saltar antes de continuar con la ejecución. continue accepta un parámetro opcional. } ?> Como resultado tendremos lo siguiente: www. 'Jueves'.PHP Y MYSQL NICANOR YERBA continue continue se usa dentro de la estructura del bucle para saltar el resto de la iteración actual del bucle y continuar la ejecución al comienzo de la siguiente iteración. 'Martes'.com Página 65 . foreach ($dias as $elemento) { if (++$count == 3) { print "Me estoy saltando el tercer dia de la semana<br>".phpymysql. continue. 'Sabado'). 'Miercoles'.

break.com Página 66 . switch(var int o char) { case const1: instruccion(es). capturar o asignar variable de condición. case 'b':case'B': echo "<br>burro". si no encuentra el valor de igualdad entre variable y constante. case 'c': echo "<br>caballo ". break. case const3: instruccion(es).PHP Y MYSQL NICANOR YERBA Switch También existen ocasiones o programas donde se exige evaluar muchas condiciones a la vez. donde el compilador prueba o busca el valor contenido en una variable contra una lista de constantes ints o chars.phpymysql. www. en estos casos o se usa una condición compuesta muy grande o se debe intentar convertir el problema a uno que se pueda resolver usando la instrucción switch(). }. break. aunque este ultimo es opcional. case const2: instruccion(es). Mejor un ejemplo practico: <form action="switch. break. ……………… default: instruccion(es). entonces ejecuta un grupo de instrucciones asociados a un default. break. cuando el computador encuentra el valor de igualdad entre variable y constante. La instrucción switch() es una instrucción de decisión múltiple.php" method="post" > DAME UNA LETRA:<input type="text" name="letra" value="<? echo $letra ?>" /><br /> <input type="submit" name="ok" value="evento1" /><br /> </form> <?php if ($ok == "evento1") { // area de switch() switch($letra) { case 'a': echo "<br>aguila". El formato de esta instrucción es el siguiente. echo "<br>camello ". break. entonces ejecuta el grupo de instrucciones asociados a dicha constante.

pero con un solo break..phpymysql.com Página 67 . 3. }. ?> Como resultado tendremos lo siguiente: Notas: 1. por eso se deben encerrar entre apostrofes ( '). es decir por ejemplo: case 5: instrucciones.Recordar que switch () que cuando se trabaje con constantes y variables de tipo entero.PHP Y MYSQL NICANOR YERBA default: echo" <br />no hay ".. observar que se usan dos case. 2. 6.Se pueden usar cualquier tipo de dato como variable de condición excepto decimales???. break. En particular.Las constantes que estamos buscando y comparando son de tipo char.. donde al usuario se le plantean dos o tres problemas distintos y el propio usuario seleccionaba cual de ellos se ejecuta www. instrucciones de tipo switch() se usan para construir programas de selección de menús.Si se quiere resolver el problema de mayúsculas o minúsculas en el teclado. en los case poner la constante numérica. }.. sin apostrofes.

PHP Y MYSQL NICANOR YERBA Require() La sentencia require() se sustituye a sí misma con el archivo especificado. Ejemplo: Creamos 2 páginas con el siguiente código: Require_1. $pais = "Chile". require() siempre leerá el archivo referenciado. Esto significa que no se puede poner una sentencia require() dentro de una estructura de bucle y esperar que incluya el contenido de un archivo distinto en cada iteración.com Página 68 . Aunque el código contenido en el archivo referenciado está todavía sujeto al bucle. el intérprete sale del modo PHP y entra en modo HTML al principio del archivo referenciado. Por ejemplo. intentar leer un valor de retorno de una llamada a un require() resulta en un error del intérprete. Para hacer esto. usa una sentencia include(). ?> www. De forma similar. incluso si la línea en que está no se ejecuta nunca. cualquier código dentro del archivo referenciado que debiera ser ejecutado como código PHP debe ser encerrado dentro de etiquetas válidas de comienzo y fin de PHP. las estructuras de bucle no afectan la conducta de require().phpymysql. y vuelve de nuevo al modo PHP al final. no devuelve ningún valor. Un punto importante sobre su funcionamiento es que cuando un archivo se incluye con include() o se requiere con require()). Por otro lado. Está sujeta a algunas reglas distintas de las de funciones. A diferencia de include(). require() no esta sujeto a ninguna estructura de control contenedora. tampoco se ejecutará el código del archivo referenciado. Si se quiere incluir condicionalmente un archivo. si la línea en la cual aparece el require() no se ejecuta. se usa include(). Por esta razón.php <?php $nombre = "Nicanor". es más una construcción del lenguaje. tal y como funciona la directiva #include de C. La sentencia conditional no afecta a require(). require() no es en realidad una función de PHP. el propio require() sólo ocurre una vez. No obstante.

php y Require.php <?php require("Require_1. Tu eres de $pais".phpymysql.PHP Y MYSQL NICANOR YERBA Require.php"). ?> Como resultado de Require_1. echo"Hola $nombre.com Página 69 .php tendremos lo siguiente: www.

todo el código contenido en el fichero incluido se comportará como si hubiese sido definido dentro de esta función. Ejemplo #1 Ejemplo básico de la función include() vars. Ejemplo #2 Incluyendo desde funciones include. echo "A $color $fruit". Cuando un fichero es incluido. include() produce un Warning mientras que require() produce un Error Fatal.php'. include() no se comporta de esta manera. no dude en utilizar require() si quiere que un fichero no encontrado cuelgue el procesamiento de la página.php'.phpymysql. el script seguirá funcionando de todas maneras.PHP Y MYSQL NICANOR YERBA include() La sentencia include() incluye y evalúa el archivo especificado. } /* vars.php <?php $color = 'amarillo'.php <?php echo "A $color $fruit".php is in the scope of foo() so www.php <?php function foo() { global $color. require() y include() son idénticas en todos los aspectos excepto en el modo de actuar ante un error. echo " A $color $fruit ". ?> test. // A include 'vars. $fruit = 'bueno'. include 'vars. En otras palabras. el código que contiene hereda la variable scope de la linea en donde el include ocurre. Cualquier variable disponible en esa linea en el fichero desde donde se hace la inclusión estará disponible en el fichero incluido a partir de ese momento. Asegurarse que include_path este configurado bien. Esta documentación también se aplica a la función require(). // A green apple ?> Si la inclusión ocurre dentro de una función en el fichero donde se incluye.com * Página 70 .

consultar Lista de Protocolos/Envolturas Soportadas) en vez de un fichero local. */ foo(). Esto no es lo mismo que incluir un fichero y que este fichero herede las variables del fichero padre. tal como se hace con HTTP GET. se puede especificar el fichero que se va a incluir usando una URL (via HTTP u otro mecanismo soportado.com Página 71 . // A green ?> Como resultado tendremos lo siguiente: Cuando un fichero es incluido. $color is because we declared it * * as global. // A green apple echo " A $color $fruit ". variables pueden ser mandadas al fichero incluido usando una cadena URL de petición.phpymysql. el intérprete sale del modo PHP y entra en modo HTML al principio del archivo referenciado. cualquier código dentro del archivo referenciado que debiera ser ejecutado como código PHP debe ser encerrado dentro de etiquetas válidas de comienzo y fin de PHP. Por esta razón. www. el script es ejecutado en el servidor remoto y el resultado es incluido en script local.PHP Y MYSQL NICANOR YERBA * $fruit is NOT available outside of this * * scope. y vuelve de nuevo al modo PHP al final. Si el servidor destino interpreta el fichero destino como código PHP. Si "URL fopen wrappers" esta activada en PHP (como está en la configuración inicial).

date(formato. Si no le pasamos la variable timestamp nos devuelve la cadena formateada para la fecha y la hora actual.timestamp) La función date devuelve una cadena formateada según los códigos de formato.phpymysql. así como algunos ejemplos prácticos.com Página 72 . A esta forma de expresar fecha y hora se le denomina timestamp.PHP Y MYSQL NICANOR YERBA Tiempo y fecha En esta lección vamos a ver como algunas funciones relacionadas con el tiempo y la fecha. time Devuelve el número de segundos transcurridos desde el 1 de Enero de 1970. Los códigos de formato para la función date son: Código Descripción a am o pm A AM o PM d Día del mes con ceros D Abreviatura del día de la semana (Inglés) F Nombre del mes (Inglés) h Hora en formato 1-12 H Hora en formato 0-23 i Minutos j Día del mes sin ceros l Día de la semana m Número del mes (1-12) M Abreviatura del mes (Inglés) s Segundos y Año con 2 dígitos Y Año con 4 dígitos z Día del año (1-365) www.

// 2009 ?> <br /> <?php echo date("YmdHis"). // 21:1351 ?> <br /> <?php echo date("Y"). time()). // 05/12/09 21:31 pm ?> <br /> <?php echo date("d-m-Y H:i".phpymysql. // el momento actual ?> Como resultado tendremos lo siguiente: www. // 05-12-2009 ?> <br /> <?php echo date("H:i:s").com Página 73 . // 20091205213151 ?> <br /> <?php echo date("d/m/y H:i a").PHP Y MYSQL NICANOR YERBA Para ver algunos ejemplos supongamos que ahora es 5 de diciembre de 2009 <?php echo date("d-m-Y").

return $fecha."<br>". $seg. $d = $día . } echo restar_dias(25.com Página 74 . $min. } list($hora. $anno)). $mes.$numdias. dia. $día. $d. date("d-m-Y")). seg.phpymysql. Ejemplo: <?php function restar_dias($numdias. año) La función mktime devuelve una variable de tipo timestamp a partir de las coordenadas dadas. $date) { if(isset($date)) { $date = time(). $seg. La principal utilidad de esta función es la de añadir o quitar una determinada cantidad de fecha u horas a una dada. $anno)= explode(" ". $fecha = date("d-m-Y". $mes. mktime($hora. ?> Como resultado tendremos lo siguiente: www.PHP Y MYSQL NICANOR YERBA mktime(hora. date("H i s d m Y")). $min. mes. min.

2006)) { echo "la fecha es correcta". año) La función checkdate compraba si una fecha es válida. el mes entre 1 y 12 y el día es menor o igual que el número de días total del mes en cuestión. Una fecha se considera válida si el año esta entre 1900 y 32767. }else{ echo "la fecha es incorrecta". si es así devuelve True y si no lo es False. 2.PHP Y MYSQL NICANOR YERBA checkdate(mes.phpymysql.com Página 75 . } ?> www. Dia. Ejemplo: <?php if(checkdate(31.

php Ejemplo ilustrativo del uso de clases en PHP.php <?php /* Circulo. Por ejemplo. 2009 */ class Circulo { // Atributos de la clase private $radio. Pero. $matricula y habrá una serie de funciones que actuarán sobre la clase automóvil como Precio(). $color. reutilizable. Girar()y Reparar(). pero implementa las características que permiten definir las clases. PHP no es un lenguaje orientad a objeto. vamos a crear la claseautomóvil.com Página 76 . Frenar(). ¿qué son las Clases y para que sirven?. empecemos por los segundo. $marca. Circulo. } // Otros métodos de la clase public function diametro() { return (2 * $this->radio). y lo que es más importante.PHP Y MYSQL NICANOR YERBA Las clases Las Clases son máximo exponente de la Programación Orientada a Objetos (POO). la cual tendrá diversas variables. // Métodos de acceso public function setRadio($radio) { $this->radio = $radio. } public function longitud() { return (2 * pi() * $this->radio). } public function getRadio() { return ($this->radio). Las Clases no son más que una serie de variables y funciones que describen y actúan sobre algo. (c) Carlos Castillo Peralta. $modelo. sirven hacer el código más legible. Acelerar(). } www. El siguiente ejemplo muestra como definir una clase en PHP y luego crea algunos objetos de esa clase. pero a la larga es más rentable por su portabilidad a otras aplicaciones y su mantenimiento. Escribir una Clase es sin duda más largo que escribir el código directamente.phpymysql.$potencia.

PHP Y MYSQL

NICANOR YERBA

public function area()
{
return (pi() * $this->radio * $this->radio);
}
}
?>
En el código mostrado se define la clase Circulo, que puede ser utilizada dentro de un programa
PHP para crear objetos de esa clase. Un objeto de la clase Circulo tendrá el atributo radio y los
métodos setRadio(), getRadio(), diametro(), longitud() yarea().
La forma de utilizar la clase Circulo es:

Clases.php
<?php
/*
Clases.php
Forma de utilizar la clase Circulo en PHP.
(c) Carlos Castillo Peralta, 2008
*/
// Incluimos el archivo de la clase
include ("Circulo.php");
// Se instancia un objeto de la clase Circulo
$objCirculo = new Circulo();
// Para asignar valores a los atributos del objeto se usa el
método set()
$objCirculo->setRadio(1);
// Para obtener el valor del atributo de un objeto se usa el
método get()
$radio = $objCirculo->getRadio();
// Acceso a otros métodos públicos del objeto
$diametro = $objCirculo->diametro();
$longitud = $objCirculo->longitud();
$area = $objCirculo->area();
// Impresión de resultados
echo "Radio: "
. $radio
echo "Diámetro: " . $diametro
echo "Longitud: " . $longitud
echo "Área: "
. $area
?>

www.phpymysql.com

.
.
.
.

"<br
"<br
"<br
"<br

/>";
/>";
/>";
/>";

Página 77

PHP Y MYSQL

NICANOR YERBA

Como resultado tendremos de Circulo.php y Clases.php lo siguiente:

Por simplicidad no estamos consustanciando los valores que puede tomar el atributo
radio. Por ejemplo, es posible asignar números negativos al radio lo que producirá
resultados erróneos. En todo caso se deja esto como tarea para el lector.

www.phpymysql.com

Página 78

PHP Y MYSQL

NICANOR YERBA

Sessiones
Las sesiones son las mejores formas de almacenar la información de los visitantes. Ya
que con las cookis aparte de tener mala fama por ser “inseguras”, el usuario puede
desactivarlas de su navegador, mientras que las sesiones no se pueden desactivadas.
Además las cookies son almacenadas en el PC del visitante, mientras que las sesiones
son guardadas en nuestro servidor, lo que nos permite almacenar mucha mayor
información y tener un acceso mas fácil a ellas.
Nota: Para que las sesiones funcionen, todas las paginas por las que queramos que corra
deben tener la extensión.php, si hacemos que corra por otra pagina que no sea php las
sesiones se perderán al abandonar el archivo php.
session_start()
Con esta función, lo que aremos es comprobar si existe alguna sesión abierta, y si no
hay ninguna, se abrirá una.
Es una buena idea incluir esta línea en cada script ya que si la sesion ya existe no abrirá
otra nueva, sino que se limitará a abrir toda la información asociada a dicha sesión.
session_register()
Esta función nos servirá para registrar una variable de sesión
Ejemplo:
$nombre = “Giss”;
Sessión_register(“nombre”);

Nota: No es necesario poner el símbolo $ a la hora de registrar la variable de sesión
Cuando las variables están registradas, son enviadas a través de las páginas .php hasta
que se termine la sesión o nosotros programemos manualmente el cierre de la sesión.
Se puede registrar mas de una variable a la vez, separándolo por comas, por ejemplo:
Session_register(“nombre”,”apellido”,”direccion”);
Otra cosa a tener en cuenta es que este tipo de variables no pueden pasarse por el
método POST ni GET.

session_is_register()
Esta función nos servirá para saber si una variable esta registrada o no.
Su sintaxis es así:

$registro=session_is_register(“nombre”);

En caso de que sea verdadero devolverá true y de lo contrario devolverá false.
www.phpymysql.com

Página 79

session_register("nombre").php">siguiente pagina</a>'. Una vez desregistradas las variables solo nos falta terminar la sesión con la función session_destroy().com Página 80 . Para des registrar todas las variables de una sola vez podemos utilizar la función session_unset().phpymysql.php <? session_start().PHP Y MYSQL NICANOR YERBA Cómo cerrar las sesiones Cerrar una sesión equivale a “des registrar” todas las variables que contiene. Vamos a realizar un ejemplo con todo lo visto hasta ahora sobre las sesiones: Crearemos una sesión. lo malo de esta sentencia es que solo se puede desregistrar una sola variable por cada vez. sesion1. registraremos una variable y la pasaremos a través de tres páginas distintas. Para des registrar una variable usamos la sentencia session_unregister(). echo " Bienvenido a mi web. echo '<a href="sesion2. $nombre ". ?> Como resultado tendremos lo siguiente: www. $nombre= "Jaime".

echo '<a href = "sesion3.php <? session_start().com Página 81 . $nombre". echo " Bienvenido a mi web de nuevo. session_unregister("$nombre").PHP Y MYSQL NICANOR YERBA sesion2. ?> Como resultado tendremos lo siguiente: www.php"> siguiente pagina </a>'.phpymysql.

com Página 82 . $nombre". y finalmente cerramos la sesion con session_destroy(). www. session_destroy().PHP Y MYSQL NICANOR YERBA sesion3. ?> Explicación: Tenemos 3 archivos con una sesion En el archivo 1: creamos la sesión y registramos la variable nombre con session_register() y lo pasamos al archivo 2 mediante un enlace En el archivo 2: usamos la variable creada en el archivo 1 y después desregistramos la variable con session_unregister() En el archivo 3: vemos que a pesar de que la sesion sigue abierta no le llega la variable nombre ya que la desregistremos en el archivo2.phpymysql.php <? session_start(). echo " Bienvenido a mi web de nuevo otra vez.

Ejemplo: <?php $a = array('verde'. 'manzana'. $b = array('aguacate'. array_combine Crea una nueva matriz. es recomendable apreciar algunos ejemplos netamente en PHP5 y de esta manera apreciar su funcionamiento.PHP Y MYSQL NICANOR YERBA Ejemplos php5 A continuación se explicaran algunos ejemplos en PHP5 dado que la mayoría de ejemplos que se han explicado anteriormente pueden ser explicados en PHP4 y PHP3 sin problemas. print_r($c).phpymysql. $c = array_combine($a. $b). ?> Como resultado tendremos lo siguiente: www. usando una matriz para las claves y otra para sus valores array_combine ( array claves. 'rojo'. 'amarillo'). Devuelve FALSE si el numero de elementos de cada matriz no es equivalente o si las matrices están vacías.com Página 83 . y los valores de la matriz valores como los valores correspondientes. array valores ) Devuelve un array usando los valores de la matriz claves como claves. 'banano').

"B" => "tren". "b" => "tren". "strcasecmp")). "strcasecmp". Ejemplo: <?php $array1 = array("a" => "avion".phpymysql. $array2 = array("a" => "AVION". "yellow". compara los datos y los índices por una función del usuario. print_r(array_uintersect_uassoc($array1.com Página 84 .PHP Y MYSQL NICANOR YERBA array_uintersect_uassoc Calcula la intersección de matrices con chequeo adicional de índices. $array2. ?> Como resultado tendremos lo siguiente: www. "red"). "red"). "c" => "blue".

0. "ISO-8859-1").com Página 85 .PHP Y MYSQL NICANOR YERBA iconv_mime_decode() Decodifica un campo de cabecera MIME. <?php echo iconv_mime_decode("Subject: =?UTF8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=". ?> Como resultado tendremos lo siguiente: www.phpymysql.

?> Como resultado tendremos lo siguiente: www.com Página 86 .phpymysql. $preferences). "line-break-chars" => "\n" ). $preferences). "Prüfung Prüfung". <?php $preferences = array( "input-charset" => "ISO-8859-1". "output-charset" => "UTF-8". // This yields "Subject: =?UTF-8?Q?Pr=C3=BCfung_Pr=C3=BCfung?=" echo iconv_mime_encode("Subject".PHP Y MYSQL NICANOR YERBA iconv_mime_encode Compone un campo de cabecera MIME. "line-length" => 76. $preferences["scheme"] = "B". "Prüfung Prüfung". // This yields "Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=" echo iconv_mime_encode("Subject". $preferences["scheme"] = "Q".

PHP Y MYSQL NICANOR YERBA stream_copy_to_stream Copia datos de una secuencia a otra.com Página 87 .phpymysql. 'r'). $dest1. ?> Como resultado tendremos lo siguiente: www.calichin.com'. 'w'). <?php $fuente = fopen('http://www.txt'.txt\n". 1024) . $dest2) . $dest2 = fopen('resto. echo stream_copy_to_stream($fuente.txt'.txt\n". 'w'). echo stream_copy_to_stream($fuente. $dest1 = fopen('primer1k. " bytes copiados a resto. " bytes copiados a primer1k.

echo fread($da. Ejemplo: <?php $da = stream_socket_client("udp://127.phpymysql.0. "\n").PHP Y MYSQL NICANOR YERBA stream_socket_client El siguiente ejemplo muestra como recuperar la fecha y hora desde el servicio UDP <<DAYTIME>> (puerto 13) en su maquina local. fclose($da). $errstr).com Página 88 . $errno.0. } else { fwrite($da. } ?> www.1:13". 26). if (!$da) { echo "ERROR: $errno .$errstr<br />\n".

phpymysql. <?php /* Abrir un socket de servidor en el puerto 1234 en localhost */ $servidor = stream_socket_server('tcp://127. "'\n". STREAM_OOB) . stream_socket_recvfrom($socket.0. /* Echar un vistazo a los datos en banda normales. pero eliminarlo del * bufer esta vez. stream_socket_recvfrom($socket. pero no consumirlos. STREAM_PEEK) . /* Aceptar una conexion */ $socket = stream_socket_accept($servidor). */ echo "Datos: '" . ?> www.0.PHP Y MYSQL NICANOR YERBA stream_socket_recvfrom Recibe datos desde un socket. 1500) . "'\n". 1500. fclose($servidor).com Página 89 . 1500. /* Cerrarlo */ fclose($socket). */ echo "Datos: '" . stream_socket_recvfrom($socket. conectado o no.1:1234'). /* Recibir exactamente el mismo paquete de nuevo. /* Tomar un paquete (1500 es un tamanyo tipico) de datos OOB */ echo "Recibidos Out-Of-Band: '" . "'\n".

0. */ fwrite($socket.com Página 90 .0. /* Enviar mas datos fuera de banda. */ stream_socket_sendto($socket."). <?php /* Abrir un socket en el puerto 1234 en localhost */ $socket = stream_socket_client('tcp://127. "Datos Out of Band. "Transmision normal de datos.".phpymysql. /* Enviar datos ordinarios mediante los canales ordinarios. STREAM_OOB). /* Cerrarlo */ fclose($socket).1:1234'). sin importar si esta conectado o no. ?> www.PHP Y MYSQL NICANOR YERBA stream_socket_sendto Envía un mensaje a un socket.

0:8000".0. } fclose($socket). if (!$socket) { echo "$errstr ($errno)<br />\n". $errstr). } ?> www. } else { while ($con = stream_socket_accept($socket)) { fwrite($con.com Página 91 . fclose($con).PHP Y MYSQL NICANOR YERBA stream_socket_server Crear un socket de servidor de dominio de internet o Unix.phpymysql. <?php $socket = stream_socket_server("tcp://0. 'La hora local es ' . $errno.0. date('n/j/Y g:i a') . "\n").

phpymysql. que no solemos utilizar habitualmente.php" method="post" enctype="multipart/form-data"> <b>Campo de tipo texto:</b> <br> <input type="text" name="cadenatexto" size="20" maxlength="100"> <input type="hidden" name="MAX_FILE_SIZE" value="100000"> <br> <br> <b>Enviar un nuevo archivo: </b> <br> <input name="userfile" type="file"> <br> <input type="submit" value="Enviar"> </form> Como resultado tendremos lo siguiente: www.php. realizando un par de comprobaciones al subir el fichero y combinando en el mismo formulario campos de tipo file y tipo text.php. donde se permite seleccionar el archivo que queremos cargar de nuestro disco duro.net/manual/es/features.file-upload.PHP Y MYSQL NICANOR YERBA Upload de archivos con PHP En PHP tenemos muchas funcionalidades desarrolladas desde el principio y sin necesidad de instalar ningún añadido en nuestro servidor. cargar. El formulario para subir seleccionar los archivos Es un formulario cualquiera.html <form action="subearchivo. pero tiene una serie de particularidades y campos file. Es el caso de subir archivos a un servidor web por HTTP y a través de una página con un formulario. sin ir más lejos en la página de la propia tecnología: http://www. Nosotros en este caso vamos a intentar ir un poco más allá.com Página 92 . El ejemplo se encuentra bien documentado en un montón de páginas para desarrolladores.

Para hacer las comprobaciones.PHP Y MYSQL NICANOR YERBA Para empezar vemos que se ha colocado un nuevo atributo en el formulario: enctype="multipart/form-data". que sirve para indicar el tamaño en bytes de los archivos a subir. independientemente de la configuración. por lo que deberemos en las propias páginas PHP comprobar que el archivo tenga el tamaño que deseamos. $HTTP_POST_FILES['userfile']['size'] El tamaño en bytes del fichero recibido. $HTTP_POST_FILES['userfile']['name'] El nombre original del fichero en la máquina cliente.phpymysql. para subir datos por POST de tipo texto acompañados a los datos binarios del archivo. Por ejemplo. También tenemos el campo hidden MAX_FILE_SIZE. También hemos colocado un campo de tipo text. donde se seleccionará el archivo a subir. necesario para subir en un mismo formulario datos y archivos. pero en cualquier caso te recomendamos utilizar $_FILES para que tus scripts funcionen en cualquier servidor. En realidad es exactamente lo mismo. www.com Página 93 . Página que sube los archivos Esta página debe hacer las comprobaciones necesarias para saber si las características del archivo a subir son las que deseamos y realizar la copia del archivo en un directorio del servidor. con la diferencia que $_FILES es más corto de escribir. tenemos el campo tipo file. Un ejemplo podría ser "image/gif". usa $_FILES['userfile']['tmp_name'] en lugar de $HTTP_POST_FILES['userfile']['tmp_name']. $HTTP_POST_FILES['userfile']['type'] El tipo mime del fichero (si el navegador lo proporciona). Dependiendo de la configuración de tu PHP el nombre de variable antigua $HTTP_POST_FILES puede existir o no. $HTTP_POST_FILES['userfile']['tmp_name'] El nombre del fichero temporal que se utiliza para almacenar en el servidor el archivo recibido. es fácil saltarse esa protección. Este campo algunos navegadores no tienen porqué entenderlo o hacerle caso. Por último. Además. PHP nos crea una serie de variables que podemos acceder con la información del archivo enviado. Nota: En este momento (a partir de PHP 5) el array $HTTP_POST_FILES ha sido sustituido por el array $_FILES.

$cadenatexto . "gif") || strpos($tipo_archivo. $tipo_archivo = $HTTP_POST_FILES['userfile']['type'].phpymysql.PHP Y MYSQL NICANOR YERBA upload.com Página 94 .gif o . "<br><br>". echo "Escribió en el campo de texto: " . }else{ echo "Ocurrió algún error al subir el fichero. }else{ if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name' ]. No pudo guardarse.". $tamano_archivo = $HTTP_POST_FILES['userfile']['size']. "jpeg")) && ($tamano_archivo < 100000))) { echo "La extensión o el tamaño de los archivos no es correcta.". <br><br><table><tr><td><li>Se permiten archivos .</td></tr></table>". $nombre_archivo)){ echo "El archivo ha sido cargado correctamente. //datos del arhivo $nombre_archivo = $HTTP_POST_FILES['userfile']['name'].php <? //tomo el valor de un elemento de tipo texto del formulario $cadenatexto = $_POST["cadenatexto"]. //compruebo si las características del archivo son las que deseo if (!((strpos($tipo_archivo. } } ?> Como resultado tendremos lo siguiente: www.jpg<br><li>se permiten archivos de 100 Kb máximo.

por ello el fichero se subirá al mismo directorio donde están las páginas PHP que hacen el upload. Esta función devuelve un boleano que indica si hubo o no éxito al subir el archivo. comprobar que la extensión sea .jpg y que el tamaño menor que 100000 bytes. la ruta para llegar al directorio donde queremos guardarlo. es muy normal que en el mismo formulario deseemos mezclar varios tipos de información. Para ello se utiliza la función move_uploaded_file(). La función move_uploaded_file() se utiliza para mover el archivo a la posición definitiva. extensión y tamaño para. Aunque esto no tenga nada que ver con subir archivos. después de la ejecución de la página. Recibe por un lado el nombre temporal del fichero y por otro el nombre que deseamos colocarle definitivamente y. se borra de su localización temporal. Si el archivo tenía las características deseadas. Cuando se sube el archivo. el servidor lo copia en una localización temporal para que seamos nosotros los que elijamos la posición definitiva donde queremos que se almacene.phpymysql. de la forma habitual. En el caso del ejemplo sólo se indica el nombre del archivo. recogemos el campo de texto enviado por POST.PHP Y MYSQL NICANOR YERBA Para empezar. Luego se recogen los datos necesarios del archivo. se puede subir al servidor.gif o . que recibe el nombre del archivo temporal que se desea subir y el nombre del archivo que se desea dar. Si no lo copiamos a ningún sitio. si se desea. como su nombre.com Página 95 . www. en el siguiente if.

0. sin necesidad de instalar ningún añadido. en contra de lo que ocurría con ASP. Asunto: para indicar una cadena de caracteres que queremos que sea el asunto del correo electrónico a enviar. Ejemplo de envío de un mail sencillo <? mail("pepito@desarrolloweb. Cuerpo: el cuerpo del mensaje. Parámetros necesarios en todos los casos Destinatario: la dirección de correo o direcciones de correo que han de recibir el mensaje. Podemos obtener más información en la documentación de PHP para la función mail(). si el correo está en formato HTML. incluida en todas las versiones de PHP."asu ntillo". con copia a mariano@calichin.2.com".com.com Página 96 . además. las direcciones que recibirán copia oculta. etc. En concreto.com y juan@juan. sólo está disponible a partir de la versión PHP 4. www.com. Ejemplo complejo de envío de correo Vamos a enviar un correo con formato HTML a pepito@calichin. Si incluimos varias direcciones debemos separarlas por una coma.com."Este es el cuerpo del mensaje") ?> Parámetros opcionales del envío de correo Headers: Cabeceras del correo.com. La dirección de respuesta la configuraremos a maria@calichin.PHP Y MYSQL NICANOR YERBA Mandar mails desde PHP Para el envío de correos electrónicos utilizando PHP disponemos de una función bastante potente. La función se llama mail() y recibe tres parámetros de manera obligada y otros dos parámetros que podemos colocar opcionalmente.com y con copia oculta para pepe@pepe.5 y desde PHP 4.phpymysql. las posibles direcciones que recibirán copia del mensaje. en PHP disponemos de una función llamada mail() que permite configurar y enviar el mensaje de correo.3 está deshabilitado en modo seguro. Additional_parameters: esta opción no suele utilizarse y. Puede usarse para pasar parámetros adicionales al programa configurado para enviar el correo. Datos como la dirección de respuesta. Devuelve true si se envió el mensaje correctamente y false en caso contrario.maria@guiartemultimedia. lo que queremos que tenga escrito el correo. cuando se manda el mail usando la opción de configuración sendmail_path.

si queremos que sea distinta que la del remitente $headers . $headers .$asunto.calichin. $cuerpo = ' <html> <head> <title>Prueba de correo</title> </head> <body> <h1>Hola amigos!</h1> <p> <b>Bienvenidos a mi correo electrónico de prueba</b>. //ruta del mensaje desde origen a destino $headers . //dirección de respuesta.= "From: Nicanor Yerba <pepito@calichin.com\r\n".= "Return-path: holahola@calichin.com".juan@juan.com Página 97 .phpymysql.0\r\n".com>\r\n". //direcciones que recibirán copia oculta $headers .com. Este cuerpo del mensaje es del artículo de envío de mails por PHP. Por cierto. //direcciones que recibián copia $headers . //dirección del remitente $headers .= "Reply-To: mariano@desarrolloweb. mail($destinatario.PHP Y MYSQL NICANOR YERBA <? $destinatario = "nicanor_88@hotmail. //para el envío en formato HTML $headers = "MIME-Version: 1.= "Bcc: pepe@pepe. Estoy encantado de tener tantos lectores. cambia también las cabeceras del mensaje.$cuerpo.com</h1> </p> </body> </html> '. Habría que cambiarlo para poner tu propio cuerpo.com\r\n".com\r\n". charset=iso-8859-1\r\n".= "Cc: maria@calichin. $asunto = "Este mensaje es de prueba".com\r\n". <br> <h1>www.$headers) ?> www.= "Content-type: text/html.

En sistemas Windows encontraremos el php.com.com Página 98 . sí tendremos que configurar PHP. en el subdirectorio system32 o similar. se enviara automáticamente: Nota: Para el envío de correo mediante PHP es necesario que este disponga de una correcta configuración.PHP Y MYSQL NICANOR YERBA Como resultado tendremos lo siguiente después de subir y actualizar.ini. En este sistema deberemos indicar el dominio del servidor de smtp. PHP se configura en el archivo php. algo como smtp.midominio.ini. Si nuestro web está en un servidor de un proveedor de hosting seguramente ya hayan configurado PHP para el envío de mails. Dentro del php. Si estamos trabajando en un servidor propio. podremos poner "localhost" como máquina que enviará el correo. Dependiendo de nuestro sistema deberemos configurar de una manera u otra. www. debemos buscar el epígrafe [mail function].phpymysql. También podemos especificar la dirección desde donde queremos que parezca que se envía el mensaje en caso de que no se indique otra durante el envío. donde debemos especificar datos como el servidor de correo saliente que debe de utilizar PHP para transferir los mensajes. Si es el ordenador local el que hace de servidor.ini en el directorio windows o dentro de este.

En caso contrario -sí que había algo en $HTTP_POST_VARS.com Página 99 . $HTTP_POST_VARS["coment"] . "\n". compongo el cuerpo $cuerpo = "Formulario enviado\n". "\n". "\n". que si pasa por el caso positivo -no había nada en $HTTP_POST_VARS. $HTTP_POST_VARS["email"] . $cuerpo .quiere decir que estamos recibiendo datos por un formulario y en ese caso. $cuerpo . www.= "Nombre: " .0 Transitional//EN"> <html> <head> <title>Mándanos tus comentarios</title> </head> <body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060"> <? if (!$HTTP_POST_VARS){ ?> <form action="mail_formulario.PHP Y MYSQL NICANOR YERBA Enviar un formulario por mail con PHP El método para enviar un formulario con PHP resulta muy similar al utilizado en ASP. $HTTP_POST_VARS["nombre"] . Esquema de funcionamiento En este caso nos vamos a apoyar en la variable $HTTP_POST_VARS. Ejemplo: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. recibirlo y componer el cuerpo del mensaje que se va a enviar. $cuerpo . para saber si hemos recibido o no datos desde un formulario.php" method=post> Nombre: <input type=text name="nombre" size=16> <br> Email: <input type=text name=email size=16> <br> Comentarios: <textarea name=coment cols=32 rows=6></textarea> <br> <input type=submit value="Enviar"> </form> <? }else{ //Estoy recibiendo el formulario. que debería contener el formulario.significa que no se ha recibido nada desde un formulario. Varía tan sólo la sintaxis utilizada y las líneas de código que realizan el envío del correo electrónico.phpymysql. En ese caso. Veamos el código de la página para crear el formulario. En el mismo código podremos encontrar también la llamada a la función que envía el correo.= "Email: " . muestro el formulario de contacto. Dicha variable la utilizamos en un enunciado if (! $HTTP_POST_VARS). recogemos los datos y componemos el cuerpo del mensaje.= "Comentarios: " .

$cuerpo).. mail("ana@calichin..com".PHP Y MYSQL NICANOR YERBA //mando el correo. //doy las gracias por el envío echo "Gracias por rellenar el formulario. Se ha enviado correctamente.phpymysql. } ?> </body> </html> Como resultado tendremos lo siguiente: www.".com Página 100 ."Formulario recibido".

phpymysql.com NICANOR YERBA Página 101 .PHP Y MYSQL www.

Tras haber visto como funciona la lectura secuencial de un archivo. Por otra parte. 26).com Página 102 .PHP Y MYSQL NICANOR YERBA Escritura en archivos con PHP Siguiendo con la gestión de archivos por medio de PHP. podemos contentarnos con crear un script accesorio que ejecute una única vez el script principal y que almacene su resultado en forma de archivo HTML que será en realidad el que mostraremos a nuestros visitantes. Sin ir más lejos. y guardando las distancias.. Si el contenido que estamos mostrando es el mismo para todos los usuarios y no tiene necesidad de ser actualizado constantemente. podemos imaginar que escribir sobre éste no debe de resultar mucho más complicado."r"). fclose($fp). presupuesto. la cadena que deseamos incluir en nuestro archivo. conocimientos. evitamos por una parte la ejecución masiva de un mismo script con el consiguiente ahorro de recursos y por otra automatizamos la actualización de una determinada página o sección ejecutando periódicamente el script accesorio. en este artículo veremos los pasos elementales para la creación y escritura de un archivo texto por medio de esta tecnología de lado servidor.phpymysql. La escritura de archivos pasa. si por diversas razones (hosting. este método no tiene nada de seguro ni de versátil y sólo es valido para un sitio sin información confidencial y con poca cantidad de datos. siempre podremos solventar el inconveniente almacenando nuestros datos en archivos que luego podrán ser leídos. el paso siguiente será introducir por medio de la función fwrite. Por supuesto. Una vez abierto. Imaginemos que tenemos una página.) nos resulta difícil la puesta en marcha de una base de datos elemental. escribir y leer archivos puede en cierta manera sustituir muy primariamente a una base de datos. Podemos pensar también en crear documentos dinámicos a partir de datos introducidos en un formulario: cartas. fgets. páginas HTML y otros. Para ejemplificar esta nueva función de escritura y combinarla con la de lectura. $contador = fgets($fp. o su alias fputs. En efecto. o archivo.. www. en nuestro sitio que carga muy frecuentemente y que realiza constantemente llamadas a bases de datos o ejecuta scripts medianamente largos. os proponemos este contador inspirado en una nota de la página oficial de PHP: Ejemplo: <? function incremento_contador($archivo) { // $archivo contiene el numero que actualizamos $contador = 0. //Abrimos el archivo y leemos su contenido $fp = fopen($archivo. por la previa apertura de archivo en un modo apropiado. las posibilidades que estas dos operaciones nos pueden ofrecer conjuntamente son realmente sorprendentes. Otro ejemplo particularmente práctico es la creación dinámica de archivos que nos ahorren recursos de servidor. De esta forma. como es de esperar.

Las etapas que llevamos a cabo son verdaderamente cortas y comprensibles: • • • • Iniciamos nuestra variable contador. Abrimos el archivo y lo sobrescribimos (modo +w) con el valor contador modificado. $contador.com Página 103 . echo "Este script ha sido ejecutado $contador veces". 26). Aumentamos de una unidad el valor de contador. } ?> Como en otros ejemplos. Cerramos el archivo. fwrite($fp."w+"). fclose($fp). Abrimos el archivo en modo lectura y extraemos el valor actual del contador leyendo la primera y única línea.phpymysql. //Actualizamos el archivo con el nuevo valor $fp = fopen($archivo.PHP Y MYSQL NICANOR YERBA //Incrementamos el contador ++$contador. el script es expresado en forma de función para que sea más sencilla su reutilización. www.

Related Interests

s ###BOT_TEXT###quot;PHP!###BOT_TEXT###quot;). ?>" meth od="POST"> Name: <input type="text" name="personal[name]"><br> Email: <input type="text" name="personal[email]"><br> Beer: <br> <select multiple name="beer[]"> <option value="warthog">Warthog</option> www. PHP tambien entiende matrices en el contexto de variables de formularios. print '<a HREF="http://www. $HTTP_SERVER_VARS['PHP_SELF'] .php?id=3 contiene datos GET que son accesibles con$_GET['id']. Note: Matrices superglobales. como $_POST y$_GET. print '</pre>'. están disponibles desde PHP 4. Por ejemplo. Post y Cookie. agrupar juntas variables relacionadas ó usar esta característica para obtener valores de una entrada "select2 múltiple.

time()+3600). sub_x y sub_y. "Testing 2". el formulario que la acompaña se transmitirá al servidor con dos variables adicionales. time()+3600). Las cookies son un mecanismo para almacenar datos en el navegador y así rastrear o identificar a usuarios que vuelven. En PHP 4. ?> www.phpymysql. no existe esta restricción. Por ejemplo: <?php setcookie("MyCookie[foo]". $HTTP_COOKIE_VARS y también en $_REQUEST. Si se quieren asignar múltiples valores a una sola cookie. "Testing 1". Las cookies son parte de la cabecera HTTP. Cookies HTTP PHP soporta cookies de HTTP de forma transparente tal y como están definidas en en las » Netscape's Spec.gif" name="sub"> Cuando el usuario hace click en cualquier parte de la imagen.com Página 22 .PHP Y MYSQL NICANOR YERBA <option value="guinness">Guinness</option> <option value="stuttgarter">Stuttgarter Schwabenbräu</op tion> </select><br> <input type="hidden" name="action" value="submitted"> <input type="submit" name="submit" value="submit me!"> </form> <?php } ?> en PHP 3. pero PHP convierte el guión en subrayado automáticamente. es posible usar una imagen en vez del botón estandar de "mandar": <input type="image" src="image. setcookie("MyCookie[bar]". Los más experimentados puede notar que los nombres de variable enviados por el navegador contienen un guión en vez de un subrayado (guión bajo). Se pueden crear cookies usando la función SetCookie(). basta con añadir [] al nombre de la cookie para definirla como una matriz. Estas contienen las coordenadas del click del usuario dentro de la imagen. el uso de matrices de variables de formularios está limitado a matrices unidimensionales. Es la misma restricción que para la función header(). tal como $_COOKIE. así que se debe llamar a la función SetCookie antes de que se envíe cualquier salida al navegador. Los datos de una cookie estan disponibles en la matriz con datos de cookies apropiada. IMAGE SUBMIT variable names Cuando mandamos un formulario.

y seguido por la prueba (es decir. para una aplicación de carro de la compra se podría querer mantener un contador e ir pasándolo. y is_string(). Si se quiere definir una sola cookie con valores multiples. is_int(). setcookie("count". no se pretendía que fuese este el resultado. no siempre resulta obvio de qué tipo es una variable dada en un momento concreto.PHP Y MYSQL NICANOR YERBA Esto creara dos cookies separadas aunque MyCookie será una matriz simple en el script. $item. seguido por el operador de concatenación. is_float(). PHP incluye varias funciones que descubren de qué tipo es una variable: gettype(). time()+3600). Nótese que una cookie reemplazará a una cookie anterior que tuviese el mismo nombre en el navegador a menos que el camino (path) o el dominio fuesen diferentes. Ejemplo #4 Ejemplo SetCookie <?php $count++. Obviamente. is_array(). Así. setcookie("Cart[$count]". PHP no altera los nombres de las variables cuando se pasan a un script. P. www.ext. es importante hacer notar que PHP reemplazará automáticamente cualquier punto en los nombres de variables de entrada por guiones bajos (subrayados).is_object(). una cadena sin entrecomillar que no coincide con ninguna palabra clave o reservada conocida) 'ext'.com Página 23 . Por esta razón: <?php $varname. considerar primero el uso de la función serialize() óexplode() en el valor. time()+3600). $count.phpymysql.ej. Por esta razón. Determinando los tipos de variables Dado que PHP determina los tipos de las variables y los convierte (generalmente) según lo necesita. hay que notar que el punto no es un carácter válido en el nombre de una variable PHP. ?> Puntos en los nombres de variables de entrada Típicamente. De todas formas. ?> /* nombre de variable invalido */ Lo que el intérprete ve es el nombre de una variable $varname.

Éste debe ser usado para seleccionar entre dos expresiones.com Página 24 . ya que el operador de multiplicación ("*") tiene una mayor precedencia que el operador de adición ("+"). El segundo grupo se conoce como operadores binarios. con aquellos de mayor precedencia listados al comienzo de la tabla. la respuesta es 16 y no 18. en lugar de seleccionar dos sentencias o rutas de ejecución. Los paréntesis pueden ser usados para marcar la precedencia. el cual opera sobre un único valor. en cuyo caso su asociatividad decide el orden para evaluarlos. se utiliza una asociación de izquierda a derecha. Precedencia de Operadores La precedencia de un operador indica qué tan "cerca" se agrupan dos expresiones. Por ejemplo: (1 + 5) * 3 evalúa a 18.phpymysql. Si la precedencia de los operadores es la misma. Existen tres tipos de operadores. Los operadores en la misma línea tienen la misma precedencia. www.PHP Y MYSQL NICANOR YERBA Operadores Un operador es algo a lo que usted entrega uno o más valores (o expresiones. Así que puede pensar sobre las funciones o construcciones que devuelven un valor (como print) como operadores. Rodear las expresiones ternarias con paréntesis es una muy buena idea. y una lista se encuentra disponible más adelante en la sección Precedencia de Operadores. En primer lugar se encuentra el operador unario. este grupo contiene la mayoría de operadores que soporta PHP. en jerga de programación) y produce otro valor (de modo que la construcción misma se convierte en una expresión). Por ejemplo. en base a una tercera. por ejemplo (el operador de negación) o ++ (el operador de incremento). en la expresión 1 + 5 * 3. y en aquellas que no devuelven nada (como echo) como cualquier otra cosa. si resulta necesario. la asociatividad de derecha quiere decir lo contrario. El tercer grupo consiste del operador ternario: ?:. La siguiente tabla lista la precedencia de los operadores. La asociatividad de izquierda quiere decir que la expresión es evaluada desde la izquierda a la derecha.

PHP aun permite expresiones similares a la siguiente: if (!$a = foo()). // $a = ($b += 3) -> $a = 5. $b = 5 ?> Use paréntesis para incrementar la legibilidad del código. // (true ? 0 : true) ? 1 : 2 = 2 $a = 1. // (3 * 3) % 5 = 4 $a = true ? 0 : true ? 1 : 2. $a = $b += 3. varios usos Ejemplo #1 Asociatividad <?php $a = 3 * 3 % 5. Nota: Aunque = tiene una menor precedencia que la mayoría de los demás operadores.phpymysql.PHP Y MYSQL Asociatividad no-asociativo new izquierda NICANOR YERBA Precedencia de Operadores Operadores Información Adicional new [ no-asociativos ++ -- array() incremento/decremento no-asociativos ~ . $b = 2.= %= &= |= ^= <<= >>= asignación izquierda and lógicos izquierda xor lógicos izquierda or lógicos izquierda .com Página 25 . www. en cuyo caso el valor de retorno de foo() va a dar a $a. y cadena izquierda << >> manejo de bits no-asociativos < <= > >= comparación no-asociativos == != === !== comparación izquierda & manejo de bits. y referencias izquierda ^ manejo de bits izquierda | manejo de bits izquierda && lógicos izquierda || lógicos izquierda ?: ternario derecha = += -= *= /= .(int) (float) (string) (array) (object) @ tipos no-asociativos instanceof tipos derecha ! lógicos izquierda */% aritmética izquierda +-. aritmética.

Resto de $a dividido por $b. en cuyo caso se devuelve un valor entero. $b = 30. Cociente de $a y $b. $c = 20. Producto de $a y $b.$b $a * $b $a / $b $a % $b Nombre Adición Substracción Multiplicación División Módulo Resultado Suma de $a y $b.PHP Y MYSQL NICANOR YERBA Operadores de Aritmética ¿Recuerda la aritmética básica del colegio? Éstos operadores funcionan tal como aquéllos. El operador de división ("/") devuelve un valor flotante a menos que los dos operandos sean enteros (o cadenas que son convertidas a enteros) y los números sean divisibles sin residuos. $suma = $a + $b + $c. ?> Como resultado tendremos lo siguiente: www. Operadores de Aritmética Ejemplo $a + $b $a .phpymysql.com Página 26 . Ejemplo #1.Suma <?php //suma $a = 100. Diferencia entre $a y $b. echo "Total = $suma"..

?> www. $b = 50. ?> Ejemplo #3. $b = 10.PHP Y MYSQL NICANOR YERBA Ejemplo #2.phpymysql.Resta <?php //resta $a = 100.Multiplicación <?php //Multiplicación $a = 100.$b.. echo "Total = $Multiplicacion". $resta = $a . echo "Total = $resta".com Página 27 . $Multiplicacion = $a * $b..

echo "Total = $Division". $Division = $a / $b.División <?php //Division $a = 50..PHP Y MYSQL NICANOR YERBA Ejemplo #4. $b = 10.com Página 28 .. $Modulo = $a % $b.Módulo Resto <?php //Modulo $a = 100. ?> Ejemplo #5. echo "Total = $Modulo". ?> www.phpymysql. $b = 10.

?> </body> </html> www. Ejemplo de Suma con formulario utilizando método post: <html> <body> <form name="form1" action="suma_formulario.com Página 29 . $b =$_POST['variableb'].php" method="post"> Variable a: <input type="text" name="variablea"><br /> Variable b: <input type="text" name="variableb"><br /> <input type="submit" name="submit" value="Sumar"> </form> <br /><br /><br /> <?php $a =$_POST['variablea']. echo "Total $suma".PHP Y MYSQL NICANOR YERBA Operadores de aritmética con formularios Para trabajar con los Operadores Aritméticos de una manera mas dinámica le implementaremos campos de formularios donde ingresaremos los datos y estos serán procesados por PHP.phpymysql. $suma = $a + $b.

$resta = $a .php" method="post"> Variable a: <input type="text" name="variablea"><br /> Variable b: <input type="text" name="variableb"><br /> <input type="submit" name="submit" value="Sumar"> </form> <br /><br /><br /> <?php $a =$_POST['variablea']. $b =$_POST['variableb'].phpymysql.com Página 30 . ?> </body> </html> www.PHP Y MYSQL NICANOR YERBA Ejemplo de Resta con formulario utilizando método post: <html> <body> <form name="form1" action="resta_formulario.$b. echo "Total: $resta".

$b =$_POST['variableb'].phpymysql.com Página 31 .PHP Y MYSQL NICANOR YERBA Ejemplo de Multiplicar con formulario utilizando método post: <html> <body> <form name="form1" action="multiplicar_formulario. $multiplicar = $a * $b. ?> </body> </html> www. echo "Total: $multiplicar".php" method="post"> Variable a: <input type="text" name="variablea"><br /> Variable b: <input type="text" name="variableb"><br /> <input type="submit" name="submit" value="Sumar"> </form> <br /><br /><br /> <?php $a =$_POST['variablea'].

phpymysql.com Página 32 . $b =$_POST['variableb']. $dividir = $a / $b. ?> </body> </html> www.PHP Y MYSQL NICANOR YERBA Ejemplo de Dividir con formulario utilizando método post: <html> <body> <form name="form1" action="dividir_formulario. echo "Total: $dividir".php" method="post"> Variable a: <input type="text" name="variablea"><br /> Variable b: <input type="text" name="variableb"><br /> <input type="submit" name="submit" value="Sumar"> </form> <br /><br /><br /> <?php $a =$_POST['variablea'].

Para aprender más sobre las referencias. $b = "¡Hola ". pero esto no es posible en PHP3. www. unión de matrices y de cadenas. A primera vista. usando la sintaxis $var = &$otra_var.com Página 33 . ?> Nota que la asignación copia la variable original en la nueva (asignación por valor). tal como $ b = $b . Esto puede resultar de importancia si necesita copiar algo como una matriz de gran tamaño al interior de un ciclo reducido.phpymysql. A partir de PHP4. el valor de "$a = 3" es 3. Esto le permite hacer una que otra cosa curiosa: <?php $a = ($b = 4) + 5. por favor refiérase a las Referencias explicadas. $b . usted podría pensar en él como "es igual a". El valor de una expresión de asignación es el valor que se asigna. de modo que cualquier cambio a una no afecta a la otra.= "a todos!". No lo haga. // $a es igual a 9 ahora. 'Asignación por referencia' quiere decir que ambas variables terminan apuntando a los mismos datos y que nada es realmente copiado. y $b ha sido defini do a 4.PHP Y MYSQL NICANOR YERBA Operadores de Asignación El operador básico de asignación es "=". // define $b como "¡Hola a todos!". $a += 5. "se define a"). que le permiten usar un valor en una expresión y luego definir su valor como el resultado de esa expresión. Lo que quiere decir en realidad es que el operando de la izquierda recibe el valor de la expresión a la derecha (es decir. A partir de PHP 5 los objetos son asignados por referencia a menos que explícitamente se diga lo contrario con la nueva palabra clave clone. Es decir. // define $a como 8.. ?> En conjunto con el operador básico de asignación. como si hubiésemos dicho: $a = $a + 5. Por ejemplo: <?php $a = 3. existen "operadores combinados" para todos los operadores de aritmética binaria. es soportada la asignación por referencia. "a todos!".

$a > $b Mayor que TRUE si $a es estrictamente mayor que $b. Si compara dos cadenas numéricas. (A partir de PHP 4) $a < $b Menor que TRUE si $a es escrictamente menor que $b. como su nombre indica. o si no son del mismo tipo. Puede que también se encuentre interesado en consultar las tablas de comparación de tipos. (A partir de PHP 4) $a != $b Diferente TRUE si $a no es igual a $b. Estas reglas también se aplican a la sentencia switch. ellas son comparadas como enteros. $a <= $b Menor o igual que TRUE si $a es menor o igual que $b. <?php var_dump(0 == "a"). break. $a >= $b Mayor o igual que TRUE si $a es mayor o igual que $b. www. // 1 == 1 -> true switch ("a") { case 0: echo "0".phpymysql. Operadores de Comparación Ejemplo Nombre Resultado $a == $b Igual TRUE si $a es igual a $b. la cadena es convertida a un número. ya que éstas muestran ejemplos de varios tipos de comparaciones relacionadas con tipos.com Página 34 . // 0 == 0 -> true var_dump("1" == "01").PHP Y MYSQL NICANOR YERBA Operadores de Comparación Los operadores de comparación. $a === $b Idéntico TRUE si $a es igual a $b. $a !== $b No idénticos TRUE si $a no es igual a $b. y son del mismo tipo. Si compara un entero con una cadena. $a <> $b Diferente TRUE si $a no es igual a $b. le permiten comparar dos valores. // 1 == 1 -> true var_dump("1" == "1e0").

matemática usual array array Una matriz con menos elementos es menor. la misma clase comparan propiedades en la misma forma que las matrices (PHP 4).com Página 35 . de otra forma comparar valor por valor (vea el siguiente ejemplo) array cualquiera array es siempre mayor object cualquiera object es siempre mayor www. PHP 5 tiene su propia explicación object string. Comparación con Varios Tipos Tipo del Operando 1 Tipo del Operando 2 Resultado null ostring string Convertir NULL a "".resourceo number Traducir las cadenas y recursos a números. comparación numérica o de léxico bool o null cualquiera Convertir a bool. clases diferentes son incomparables.PHP Y MYSQL NICANOR YERBA case "a": // nunca se ejecuta ya que "a" ya ha coincidido con 0 echo "a".resourceo number string. la comparación se realiza de acuerdo con la siguient tabla (en orden). } ?> Para varios tipos. break. si una clave del operando 1 no se encuentra en el operando 2 entonces las matrices son incomparables. FALSE < TRUE object Las clases internas pueden definir su propia comparación.phpymysql.

com Página 36 . $op2)) { return null. // $op1 == $op2 } ?> www. // incomparable } elseif ($val < $op2[$clave]) { return -1. // $op1 > $op2 } foreach ($op1 as $clave => $val) { if (!array_key_exists($clave.PHP Y MYSQL NICANOR YERBA Example #1 Transcripción de la comparación de matrices estándar <?php // Las matrices son comparadas de esta forma con los operad ores de comparación estándar function comparacion_matrices_estandar($op1. // $op1 < $op2 } elseif (count($op1) > count($op2)) { return 1. } } return 0.phpymysql. $op2) { if (count($op1) < count($op2)) { return -1. } elseif ($val > $op2[$clave]) { return 1.

Nota: Por favor note que el operador ternario es una sentencia. La sentencia return $var == 42 ? $a : $b. // aquí puede ver que la primera expresión es evaluada como 'tru e'. Example #2 Asignación de un valor predeterminado <?php // Ejemplo de uso de: el Operador Ternario $accion = (empty($_POST['accion'])) ? 'predeterminada' : $_POST[ 'accion']. } else { $accion = $_POST['accion']. // sin embargo. // La línea anterior es idéntica a esta sentencia if/else if (empty($_POST['accion'])) { $accion = 'predeterminada'. El comportamiente de PHP cuando se usa más de un operador ternario al interior de una sentencia no es obvio: Ejemplo #3 Comportamiento Ternario No-Obvio <?php // a primera vista.phpymysql. Es importante saber esto si se desea devolver una variable por referencia. y que no evalúa a una variable. Nota: Es recomendable que evite "apilar" las expresiones ternarias. sino al resultado de una sentencia.PHP Y MYSQL NICANOR YERBA Operador Ternario Otro operador condicional es el operador "?:" (o ternario). y expr3 si expr1 evalúa aFALSE. la salida real de la línea anterior es 't' // esto se debe a que las expresiones ternarias son evaluadas de izquierda a // derecha // la siguiente es una versión más obvia del código presentado a nteriormente echo ((true ? 'true' : 'false') ? 't' : 'f'). } ?> La expresión (expr1) ? (expr2) : (expr3) evalúa a expr2 si expr1 evalúa a TRUE. la cual ?> www. lo siguiente parece imprimir 'true' echo (true?'true':false?'t':'f').com Página 37 . en una función con retorno-por-referencia no funcionará por lo que se ha mencionado y una advertencia es generada en versiones posteriores de PHP.

?> Como resultado tendremos lo siguiente: Nota: El operador @ trabaja sólo sobre expresiones. // esto funciona con cualquier expresión. cualquier mensaje de error generado por la expresión será almacenado en la variable $php_errormsg. no solo con funciones: $valor = @$cache[$llave].PHP Y MYSQL NICANOR YERBA Operadores de Control de Errores PHP ofrece soporte para un operador de control de errores: el signo de arroba (@). así que realice sus chequeos de forma temprana si quiere usarla.com Página 38 . Una simple regla de oro es: si usted puede tomar el valor de algo. constantes. La variable será sobrescrita en cada instancia de error. Cuando es colocado al comienzo de una expresión en PHP. cualquier mensaje de error que pudiera generarse a causa de esa expresión será ignorado. llamadas a funciones y sencencias include(). puede usarlo al inicio de variables. No puede usarlo sobre definiciones de función o clase. y así sucesivamente. entonces puede usar el operador @ sobre ese algo. ni sobre estructuras condicionales como if y foreach. y así sucesivamente. <?php /* Error intencional de archivo */ $mi_archivo = @file ('archivo_que_no_existe') or die ("La apertura de archivo ha fallado: el error fue '$php_ errormsg'"). Por ejemplo. // no producirá una anotación si el índice $llave no existe. www. Si la característica track_errors está habilitada.phpymysql.

$a-- Post-decremento Devuelve $a.phpymysql. su salida será devuelta (es decir. puede ser asignada a una variable).PHP Y MYSQL NICANOR YERBA Operadores de ejecución PHP soporta un operador de ejecución: las comillas invertidas (``). ?> Note: El operador de comillas invertidas es deshabilitado cuando se encuentra activo safe mode o cuando se deshabilita shell_exec(). <?php $salida = `ls -al`. www. y luego incrementa $a en uno. Ejemplo Operadores de Incremento/decremento Nombre Efecto ++$a Pre-incremento Incrementa $a en uno. $a++ Post-incremento Devuelve $a. y luego devuelve $a. Decrementar valores NULL tampoco tiene efecto. ¡Note que no se trata de comillas sencillas! PHP intentará ejecutar el contenido entre las comillas como si se tratara de un comando del intérprete de comandos.y post-incremento y decremento. --$a Pre-decremento Decrementa $a en uno. luego devuelve $a. aunque incrementarlos resulta en 1. estilo-C. luego decrementa $a en uno.com Página 39 . echo "<pre>$salida</pre>". Operadores de Incremento/Decremento PHP ofrece soporte de operadores de pre. no será simplemente volcada como salida. El uso del operador de comillas invertidas es idéntico al deshell_exec(). Nota: Los operadores de incremento/decremento no afectan a los valores booleanos.

$a . echo $a = echo echo "<h3>Preincremento</h3>". "Debe ser 5: " .com Página 40 . $a . $a . "Debe ser 6: " . $a++ .PHP Y MYSQL NICANOR YERBA Ejemplo de un script sencillo: <?php echo "<h3>Postincremento</h3>". "<br />\n". "<br />\n". "<br />\n". $a-. El resultado del ejemplo seria Así: www. "<br />\n". ++$a . "<br />\n". 5. $a = 5. echo "Debe ser 5: " .phpymysql.. "Debe ser 4: " . $a . echo "Debe ser 6: " . "<br />\n". "Debe ser 4: " . "Debe ser 4: " . "<br />\n". 5. "<br />\n". --$a . echo $a = echo echo "<h3>Postdecremento</h3>". echo $a = echo echo ?> "<h3>Predecremento</h3>". "Debe ser 6: " . 5.

com Página 41 . mientras que en C 'Z'+1 se convierte en '[' ( ord('Z') == 90. $n<6.PHP Y MYSQL NICANOR YERBA PHP sigue la convención de Perl cuando trabaja con operaciones aritméticas sobre variables de carácter. Por ejemplo. en Perl 'Z'+1 se convierte en 'AA'. } ?> El resultado del ejemplo seria Así: www. y no la convención de C. ord('[') == 91). y aun así solo son soportados los caracteres ASCII planos (a-z y A-Z). Example #1 Operaciones Aritméticas sobre Variables de Carácter <?php $i = 'W'. Note que las variables de carácter pueden ser incrementadas pero no decrementadas.phpymysql. for ($n=0. $n++) { echo ++$i . "\n".

! $a No TRUE si $a no es TRUE. $h). $a or $b TRUE si cualquiera de $a o $b es TRUE. $b = (true || foo()). $c = (false and foo()). $f). // $g será definido como (true && false) lo que es false $h = true and false. O La razón para tener las dos variaciones diferentes de los operadores "and" y "or" es que ellos operan con precedencias diferentes. $d = (true or foo()).phpymysql. // "&&" tiene una precedencia mayor que "and" $g = true && false. $a && $b Y TRUE si tanto $a como $b son TRUE. // $f será definido como false var_dump($e. // $h será definido como true var_dump($g. $a || $b TRUE si cualquiera de $a o $b es TRUE. (Vea Precedencia de Operadores.) Ejemplo #1 Ilustración de los operadores lógicos <?php // foo() nunca será llamada ya que esos operadores trabajan en m odo corto-circuito $a = (false && foo()).com Página 42 . // $e será definido como (false || true) lo cual es true $f = false or true. pero no ambos. O $a xor $b O exclusivo (Xor) TRUE si $a o $b es TRUE. www. // "||" tiene una precedencia mayor que "or" $e = false || true.PHP Y MYSQL NICANOR YERBA Operadores de Lógica Operadores de Lógica Ejemplo Nombre Resultado $a and $b Y TRUE si tanto $a como $b son TRUE.

com Página 43 .phpymysql.PHP Y MYSQL NICANOR YERBA El resultado del ejemplo seria Así: www.

el cual adiciona el argumento del lado derecho al argumento en el lado izquierdo.= "Mundo!". <?php $a = "¡Hola ". $a = "¡Hola ". // ahora $b contiene "¡Hola Mundo!" echo $b.phpymysql.='). el cual devuelve el resultado de concatenar sus argumentas a lado derecho e izquierdo. El primero es el operador de concatenación ('.PHP Y MYSQL NICANOR YERBA Operadores de Cadena Existen dos operadores para datos tipo string. $b = $a . El segundo es el operador de asignación sobre concatenación ('. ?> www.'). $a . "Mundo! ". echo $a. Por favor consulte Operadores de Asignación para más información.com // ahora $a contiene "¡Hola Mundo!" Página 44 .

$a <> $b Noigualdad TRUE si $a no es igual a $b. $a == $b Igualdad TRUE si $a y $b tienen las mismas parejas llave/valor. El operador + adiciona elementos de las claves restantes de la matriz del lado derecho a aquella al lado izquierdo. $a === $b Identidad TRUE si $a y $b tienen las mismas parejas llave/valor en el mismo orden y de los mismos tipos.PHP Y MYSQL NICANOR YERBA Operadores de Matrices Operadores de Matrices Ejemplo $a + $b Nombre Unión Resultado Unión de $a y $b. al mismo tiempo que cualquier llave duplicada NO es sobrescrita. $a !== $b Noidentidad TRUE si $a no es idéntico a $b.com Página 45 . www.phpymysql. $a != $b Noigualdad TRUE si $a no es igual a $b.

$c = $b + $a.phpymysql. $b = array("a" => "pera". $c = $a + $b. // Unión de $a y $b echo "Unión de \$a y \$b: \n".PHP Y MYSQL NICANOR YERBA <?php $a = array("a" => "manzana". "c" => "cereza"). var_dump($c). ?> Como resultado tendremos lo siguiente: www. var_dump($c). // Unión de $b y $a echo "Unión de \$b y \$a: \n".com Página 46 . "b" => "fresa". "b" => "banano").

"0" => "manzana").PHP Y MYSQL NICANOR YERBA Comparación de matrices <?php $a = array("manzana".phpymysql. $b = array(1 => "banano". var_dump($a == $b). "banano"). // bool(false) ?> www.com Página 47 . // bool(true) var_dump($a === $b).

PHP caracteriza una estructura if que es similar a la de C: <?php if (expr) sentencia ?> Como se describe en la sección sobre expresiones. una sentencia condicional e incluso una sentencia que no haga nada (una sentencia vacía) Las sentencias normalmente acaban con punto y coma Además. este código mostraría a es mayor que b si $a fuera mayor que $b.PHP Y MYSQL NICANOR YERBA Estructuras de Control Todo script PHP se compone de una serie de sentencias. incluido PHP. Por ejemplo. no hay necesidad de encerrar cada sentencia con una cláusula if. ?> A menudo. expr se evalúa a su valor condicional (boolean). entonces que emprima el variable $a: www. una llamada a función. Permite la ejecución condicional de fragmentos de código.la ignorará. En vez de eso. un bucle. Se puede encontrar más información sobre los valores evaluados como FALSE en la sección Convirtiendo a un valor condicional (boolean). El siguiente ejemplo mostraría a es mayor que b si $a fuera mayor que $b: <?php if ($a > $b) echo "a es mayor que b". if La construcción if es una de las más importantes características de muchos lenguajes. PHP ejecutará la sentencia. las sentencias se pueden agrupar en grupos de sentencias encapsulando un grupo de sentencias con llaves Un grupo de sentencias es también una sentencia En este capítulo se describen los diferentes tipos de sentencias.com Página 48 . Siexpr se evalúa como TRUE.phpymysql. Una sentencia puede ser una asignación. y si se evalúa como FALSE . Por supuesto. se pueden agrupar varias sentencias en un grupo de sentencias. se desea tener más de una sentencia ejecutada de forma condicional.

lo cual proporciona una flexibilidad completa para ejecuciones condicionales en las diferentes partes de tu programa.phpymysql. } ?> Como resultado tendremos lo siguiente: Las sentencias if se pueden anidar indefinidamente dentro de otras sentencias if.com Página 49 .PHP Y MYSQL NICANOR YERBA <?php $a= 10. if ($a > $b) { echo "a es mayor que b". $b= 5. www.

y a NO es mayor que b en cualquier otro caso: <?php $a = 20. } else { print "a NO es mayor que b". } ?> Como resultado tendremos lo siguiente: La sentencia else se ejecuta solamente si la expresión if se evalúa como FALSE.PHP Y MYSQL NICANOR YERBA Else A menudo queremos ejecutar una sentencia si se cumple una cierta condicion. Esto es para lo que sirve else. if ($a > $b) { print "a es mayor que b". el siguiente código mostraría a es mayor que b si $a fuera mayor que $b. y si hubiera alguna expresión elseif . else extiende una sentencia if para ejecutar una sentencia en caso de que la expresión en la sentencia if se evalúe como FALSE.com Página 50 . y una sentencia distinta si la condición no se cumple.phpymysql. www.sólo si se evaluaron también a FALSE . Por ejemplo. $b = 10.

== $b) { es igual que b". if ($a > $b) print "a } elseif ($a print "a } else { print "a } ?> { es mayor que b". $b = 10. El significado sintáctico es ligeramente distinto (si estas familiarizado con C. La primera expresión elseif (si hay alguna) que se evalúe como TRUE se ejecutaría.com Página 51 . es una combinación de if y else. es el mismo comportamiento) pero la línea básica es que ambos resultarían tener exactamente el mismo comportamiento. ejecutará esa expresión alternativa solamente si la expresión condicionalelseif se evalúa como TRUE. a es igual a b o a es menor que b: <?php $a = 20. La sentencia elseif se ejecuta sólo si la expresión if precedente y cualquier expresión elseif precedente se evalúan como FALSE. Por ejemplo. el siguiente código mostraría a es mayor que b. www.PHP Y MYSQL NICANOR YERBA Elseif elseif. En PHP. y la expresión elseif actual se evalúa como TRUE.phpymysql. Como else. a diferencia de else. como su nombre sugiere. Puede haber varios elseifs dentro de la misma sentencia if. también se puede escribir 'else if' (con dos palabras) y el comportamiento sería idéntico al de un 'elseif' (una sola palabra). No obstante. extiende una sentencia if para ejecutar una sentencia diferente en caso de que la expresión if original se evalúa como FALSE. es menor que b".

if($nombre == "nicanor") { echo "Bienvenido: $nombre". a continuación se explicará ejemplos con estas sentencias y formularios con método POST. <html> <body> <form name="form1" action="buscando_un_nombre.phpymysql. Ejemplo 1: Buscando un nombre.PHP Y MYSQL NICANOR YERBA Ejemplos con if.php" method="post"> Ingrese su Nombre: <input type="text" name="nombre"><br /> <input type="submit" name="submit" value="Buscar"> </form> <br /><br /><br /> <?php $nombre =$_POST['nombre']. else y elseif: Estas sentencias son muy usadas cuando se programa en php. } ?> </body> </html> Como resultado tendremos lo siguiente: www.com Página 52 . } else { echo "Usuario no registrado".

<html> <body> <form name="form1" action="buscando_varios_nombres. } elseif($nombre == "raul") { echo "Bienvenido: $nombre". if($nombre == "nicanor") { echo "Bienvenido: $nombre". } elseif($nombre == "nancy") { echo "Bienvenido: $nombre". } else { echo "Usuario no registrado".phpymysql. } elseif($nombre == "mercedes") { echo "Bienvenido: $nombre".PHP Y MYSQL NICANOR YERBA Ejemplo 2: Buscando varios nombres.php" method="post"> Ingrese su Nombre: <input type="text" name="nombre"><br /> <input type="submit" name="submit" value="Buscar"> </form> <br /><br /><br /> <?php $nombre =$_POST['nombre'].com Página 53 . } ?> </body> </html> Como resultado tendremos lo siguiente: www.

com Página 54 . } else { echo "Usuario no registrado".php" method="post"> Ingrese su Nombre: <input type="text" name="nombre"><br /> <input type="submit" name="submit" value="Buscar"> </form> <br /><br /><br /> <?php $nombre =$_POST['nombre'].PHP Y MYSQL NICANOR YERBA Ejemplo 3: Buscando varios nombres utilizando OR. } ?> </body> </html> Como resultado tendremos lo siguiente: www. <html> <body> <form name="form1" action="buscando_varios_nombres. if($nombre=="nicanor" or $nombre=="raul" or $nombre=="mercedes" or $nombre=="nancy") { echo "Bienvenido $nombre".phpymysql.

$password =$_POST['password'].phpymysql.php" method="post"> Ingrese su Nombre: <input type="text" name="usuario"><br /> Ingrese su Password: <input type="password" name="password"><br /> <input type="submit" name="submit" value="Buscar"> </form> <br /><br /><br /> <?php $usuario =$_POST['usuario']. } else { echo "Usuario no Registrado". if($usuario == "nicanor" and $password == "0123") { echo "Bienvenido: $usuario". <html> <body> <form name="form1" action="usuario_password_and. } ?> </body> </html> www.com Página 55 .PHP Y MYSQL NICANOR YERBA Ejemplo 4: Comparando usuario y password utilizando AND.

} } else { echo " Usuario no Registrado". if($nombre == "nicanor") { echo "Bienvenido: $nombre ".PHP Y MYSQL NICANOR YERBA Ejemplo 5: if Comparando un nombre y edad.php" method="post"> Ingrese su Nombre: <input type="text" name="nombre"><br /> Ingrese su edad: <input type="text" name="edad"><br /> <input type="submit" name="submit" value="Buscar"> </form> <br /><br /><br /> <?php $nombre =$_POST['nombre'].com Página 56 .phpymysql. $edad =$_POST['edad']. if($edad == "30") { echo " Edad correcta". <html> <body> <form name="form1" action="comparacion_nombre_edad. } ?> </body> </html> www. } else { echo "Edad incorrecta!!".

mientras la expresión while se evalúe como TRUE. while ($i <= 10) { print $i++. /* el valor impreso sería $i antes del incremento (post-incremento) */ } ?> Como resultado tendremos lo siguiente: www. El valor de la expresión es comprobado cada vez al principio del bucle. y ambos imprimen números del 1 al 10: Ejemplo #1: <?php $i = 1.phpymysql. La forma básica de una sentencia while es: While (expr) sentencia El significado de una sentencia while es simple. se pueden agrupar múltiples sentencias dentro del mismo bucle while encerrando un grupo de sentencias con llaves. Los siguientes ejemplos son idénticos.com Página 57 . la ejecución no parará hasta el fin de la iteración (cada vez que PHP ejecuta las sentencias en el bucle es una iteración). la(s) sentencia(s) anidada(s) no se ejecutarán ni siquiera una vez. Como con la sentencia if. así que incluso si este valor cambia durante la ejecución de la(s) sentencia(s) anidada(s). Le dice a PHP que ejecute la(s) sentencia(s) anidada(s) repetidamente.PHP Y MYSQL NICANOR YERBA While Los bucles while son los tipos de bucle más simples en PHP. A veces. o usando la sintaxis alternativa: While (expr) : sentencia …endwhile. si la expresión while se evalúa como FALSE desde el principio de todo. Se comportan como su contrapartida en C.

endwhile. while ($i <= 10): print $i.PHP Y MYSQL NICANOR YERBA Ejemplo #2: <?php $i = 1. ?> Como resultado tendremos lo siguiente: www.com Página 58 .phpymysql. $i++.

si esta se evalúa como FALSE desde el principio la ejecución del bucle finalizará inmediatamente). se evalúa como FALSE ($i no es más grande que 0) y la ejecución del bucle finaliza.while.. excepto que las condiciones se comprueban al final de cada iteración en vez de al principio. y usando la sentencia break.PHP Y MYSQL NICANOR YERBA do..while son muy similares a los bucles while.phpymysql. El siguiente fragmento de código demuestra esto: www. después de la primera iteración.. } while ($i>0). encapsulándolos con do. Los usuarios avanzados de C pueden estar familiarizados con un uso distinto del bucle do. para permitir parar la ejecución en medio de los bloques de código. cuando la condición se comprueba. Hay una sola sintaxis para los bucles do.com Página 59 . La principal diferencia frente a los bucles regulares while es que se garantiza la ejecución de la primera iteración de un bucle do. mientras que puede no ser necesariamente ejecutada con un bucle while regular (la condición se comprueba al principio de cada iteración.while: <?php $i = 0.. ?> El bucle de arriba se ejecutaría exactamente una sola vez.while Los bucles do.while (la condición se comprueba sólo al final de la iteración)..while(0).. do { print $i.

if ($i < $minimum_limit) { break.com Página 60 . } while(0). ?> Como resultado tendremos lo siguiente: www.phpymysql.PHP Y MYSQL NICANOR YERBA <?php do { if ($i < 5) { print "i no es lo suficientemente grande". } $i *= $factor. break. } print "i es correcto".

expr3) sentencia La primera expresión (expr1) se evalúa (ejecuta) incondicionalmente una vez al principio del bucle.PHP Y MYSQL NICANOR YERBA For Los bucles for son los bucles más complejos en PHP. $i <= 10. $i++) { print $i. al igual que C). La sintaxis de un bucle fores: for (expr1. se evalúa expr2 . Que expr2 esté vacía significa que el bucle debería correr indefinidamente (PHP implícitamente lo considera como TRUE. se evalúa (ejecuta) expr3. Todos ellos muestran números del 1 al 10: Ejemplo #1: <?php for ($i = 1. Si se evalúa como TRUE. Cada una de las expresiones puede estar vacía. Al comienzo de cada iteración. Esto puede que no sea tan inútil como se podría pensar. } ?> Como resultado tendremos lo siguiente: www. la ejecución del bucle finaliza. Si se evalúa como FALSE. puesto que a menudo se quiere salir de un bucle usando una sentencia break condicional en vez de usar la condición de for.phpymysql. el bucle continúa y las sentencias anidadas se ejecutan. Considera los siguientes ejemplos.com Página 61 . Se comportan como su contrapartida en C. Al final de cada iteración. expr2.

} print $i. } ?> Como resultado tendremos lo siguiente: Ejemplo #3: <?php $i = 1. } print $i.com Página 62 . } ?> Como resultado tendremos lo siguiente: www.$i++) { if ($i > 10) { break.PHP Y MYSQL NICANOR YERBA Ejemplo #2: <?php for ($i = 1. $i++. for (...phpymysql.) { if ($i > 10) { break.

?> Como resultado tendremos lo siguiente: www. print $i.com Página 63 .phpymysql. $i <= 10. $i++) .PHP Y MYSQL NICANOR YERBA Ejemplo #4: <?php for ($i = 1.

break. } ?> Como resultado tendremos lo siguiente: www. Esto es muy útil para salir del recorrido de un array. } print "$elemento<br>\n". 'Martes'. por ejemplo: <?php $count = 0. en el caso que no queramos seguir ejecutando el resto de las iteraciones de bucle. 'Lunes'. 'Sabado'). 'Viernes'.com Página 64 . foreach ($dias as $elemento) { if (++$count == 3) { print "Estos son los dos primeros dias de la semana<br>".phpymysql. 'Jueves'. $dias = array('Domingo'. 'Miercoles'.PHP Y MYSQL NICANOR YERBA break break nos sirve para detener el bucle. es decir.

$dias = array('Domingo'. <?php $count = 0. } print "$elemento<br>\n". 'Viernes'. 'Lunes'. el cual determina cuantos niveles (bluces) hay que saltar antes de continuar con la ejecución. continue accepta un parámetro opcional. } ?> Como resultado tendremos lo siguiente: www. 'Jueves'.PHP Y MYSQL NICANOR YERBA continue continue se usa dentro de la estructura del bucle para saltar el resto de la iteración actual del bucle y continuar la ejecución al comienzo de la siguiente iteración. 'Martes'.com Página 65 . foreach ($dias as $elemento) { if (++$count == 3) { print "Me estoy saltando el tercer dia de la semana<br>".phpymysql. continue. 'Sabado'). 'Miercoles'.

break.com Página 66 . switch(var int o char) { case const1: instruccion(es). capturar o asignar variable de condición. case 'b':case'B': echo "<br>burro". si no encuentra el valor de igualdad entre variable y constante. case 'c': echo "<br>caballo ". break. case const3: instruccion(es).PHP Y MYSQL NICANOR YERBA Switch También existen ocasiones o programas donde se exige evaluar muchas condiciones a la vez. donde el compilador prueba o busca el valor contenido en una variable contra una lista de constantes ints o chars.phpymysql. www. en estos casos o se usa una condición compuesta muy grande o se debe intentar convertir el problema a uno que se pueda resolver usando la instrucción switch(). }. break. aunque este ultimo es opcional. case const2: instruccion(es). Mejor un ejemplo practico: <form action="switch. break. ……………… default: instruccion(es). entonces ejecuta un grupo de instrucciones asociados a un default. break. cuando el computador encuentra el valor de igualdad entre variable y constante. La instrucción switch() es una instrucción de decisión múltiple.php" method="post" > DAME UNA LETRA:<input type="text" name="letra" value="<? echo $letra ?>" /><br /> <input type="submit" name="ok" value="evento1" /><br /> </form> <?php if ($ok == "evento1") { // area de switch() switch($letra) { case 'a': echo "<br>aguila". El formato de esta instrucción es el siguiente. echo "<br>camello ". break. entonces ejecuta el grupo de instrucciones asociados a dicha constante.

pero con un solo break..phpymysql.com Página 67 . 3. }. ?> Como resultado tendremos lo siguiente: Notas: 1. por eso se deben encerrar entre apostrofes ( '). es decir por ejemplo: case 5: instrucciones.Recordar que switch () que cuando se trabaje con constantes y variables de tipo entero.PHP Y MYSQL NICANOR YERBA default: echo" <br />no hay ".. observar que se usan dos case. 2. 6.Se pueden usar cualquier tipo de dato como variable de condición excepto decimales???. break. En particular.Las constantes que estamos buscando y comparando son de tipo char.. donde al usuario se le plantean dos o tres problemas distintos y el propio usuario seleccionaba cual de ellos se ejecuta www. instrucciones de tipo switch() se usan para construir programas de selección de menús.Si se quiere resolver el problema de mayúsculas o minúsculas en el teclado. en los case poner la constante numérica. }.. sin apostrofes.

PHP Y MYSQL NICANOR YERBA Require() La sentencia require() se sustituye a sí misma con el archivo especificado. Ejemplo: Creamos 2 páginas con el siguiente código: Require_1. $pais = "Chile". require() siempre leerá el archivo referenciado. Esto significa que no se puede poner una sentencia require() dentro de una estructura de bucle y esperar que incluya el contenido de un archivo distinto en cada iteración.com Página 68 . Aunque el código contenido en el archivo referenciado está todavía sujeto al bucle. el intérprete sale del modo PHP y entra en modo HTML al principio del archivo referenciado. Por ejemplo. intentar leer un valor de retorno de una llamada a un require() resulta en un error del intérprete. Para hacer esto. usa una sentencia include(). ?> www. De forma similar. incluso si la línea en que está no se ejecuta nunca. cualquier código dentro del archivo referenciado que debiera ser ejecutado como código PHP debe ser encerrado dentro de etiquetas válidas de comienzo y fin de PHP. las estructuras de bucle no afectan la conducta de require().phpymysql. y vuelve de nuevo al modo PHP al final. no devuelve ningún valor. Un punto importante sobre su funcionamiento es que cuando un archivo se incluye con include() o se requiere con require()). Por otro lado. Está sujeta a algunas reglas distintas de las de funciones. A diferencia de include(). require() no esta sujeto a ninguna estructura de control contenedora. tampoco se ejecutará el código del archivo referenciado. Si se quiere incluir condicionalmente un archivo. si la línea en la cual aparece el require() no se ejecuta. se usa include(). Por esta razón.php <?php $nombre = "Nicanor". es más una construcción del lenguaje. tal y como funciona la directiva #include de C. La sentencia conditional no afecta a require(). require() no es en realidad una función de PHP. el propio require() sólo ocurre una vez. No obstante.

php y Require.php <?php require("Require_1. Tu eres de $pais".phpymysql.PHP Y MYSQL NICANOR YERBA Require.php"). ?> Como resultado de Require_1. echo"Hola $nombre.com Página 69 .php tendremos lo siguiente: www.

todo el código contenido en el fichero incluido se comportará como si hubiese sido definido dentro de esta función. Ejemplo #1 Ejemplo básico de la función include() vars. Ejemplo #2 Incluyendo desde funciones include. echo "A $color $fruit". Cuando un fichero es incluido. include() produce un Warning mientras que require() produce un Error Fatal.php'. include() no se comporta de esta manera. no dude en utilizar require() si quiere que un fichero no encontrado cuelgue el procesamiento de la página.php'.phpymysql. el script seguirá funcionando de todas maneras.PHP Y MYSQL NICANOR YERBA include() La sentencia include() incluye y evalúa el archivo especificado. } /* vars.php <?php $color = 'amarillo'.php <?php echo "A $color $fruit".php is in the scope of foo() so www.php <?php function foo() { global $color. require() y include() son idénticas en todos los aspectos excepto en el modo de actuar ante un error. echo " A $color $fruit ". ?> test. // A include 'vars. $fruit = 'bueno'. include 'vars. En otras palabras. el código que contiene hereda la variable scope de la linea en donde el include ocurre. Cualquier variable disponible en esa linea en el fichero desde donde se hace la inclusión estará disponible en el fichero incluido a partir de ese momento. Asegurarse que include_path este configurado bien. Esta documentación también se aplica a la función require(). // A green apple ?> Si la inclusión ocurre dentro de una función en el fichero donde se incluye.com * Página 70 .

consultar Lista de Protocolos/Envolturas Soportadas) en vez de un fichero local. */ foo(). Esto no es lo mismo que incluir un fichero y que este fichero herede las variables del fichero padre. tal como se hace con HTTP GET. se puede especificar el fichero que se va a incluir usando una URL (via HTTP u otro mecanismo soportado.com Página 71 . // A green ?> Como resultado tendremos lo siguiente: Cuando un fichero es incluido. $color is because we declared it * * as global. // A green apple echo " A $color $fruit ". variables pueden ser mandadas al fichero incluido usando una cadena URL de petición.phpymysql. el intérprete sale del modo PHP y entra en modo HTML al principio del archivo referenciado. cualquier código dentro del archivo referenciado que debiera ser ejecutado como código PHP debe ser encerrado dentro de etiquetas válidas de comienzo y fin de PHP. Por esta razón. www. el script es ejecutado en el servidor remoto y el resultado es incluido en script local.PHP Y MYSQL NICANOR YERBA * $fruit is NOT available outside of this * * scope. y vuelve de nuevo al modo PHP al final. Si el servidor destino interpreta el fichero destino como código PHP. Si "URL fopen wrappers" esta activada en PHP (como está en la configuración inicial).

date(formato. Si no le pasamos la variable timestamp nos devuelve la cadena formateada para la fecha y la hora actual.timestamp) La función date devuelve una cadena formateada según los códigos de formato.phpymysql. así como algunos ejemplos prácticos.com Página 72 . A esta forma de expresar fecha y hora se le denomina timestamp.PHP Y MYSQL NICANOR YERBA Tiempo y fecha En esta lección vamos a ver como algunas funciones relacionadas con el tiempo y la fecha. time Devuelve el número de segundos transcurridos desde el 1 de Enero de 1970. Los códigos de formato para la función date son: Código Descripción a am o pm A AM o PM d Día del mes con ceros D Abreviatura del día de la semana (Inglés) F Nombre del mes (Inglés) h Hora en formato 1-12 H Hora en formato 0-23 i Minutos j Día del mes sin ceros l Día de la semana m Número del mes (1-12) M Abreviatura del mes (Inglés) s Segundos y Año con 2 dígitos Y Año con 4 dígitos z Día del año (1-365) www.

// 2009 ?> <br /> <?php echo date("YmdHis"). // 21:1351 ?> <br /> <?php echo date("Y"). time()). // 05/12/09 21:31 pm ?> <br /> <?php echo date("d-m-Y H:i".phpymysql. // el momento actual ?> Como resultado tendremos lo siguiente: www. // 05-12-2009 ?> <br /> <?php echo date("H:i:s").com Página 73 . // 20091205213151 ?> <br /> <?php echo date("d/m/y H:i a").PHP Y MYSQL NICANOR YERBA Para ver algunos ejemplos supongamos que ahora es 5 de diciembre de 2009 <?php echo date("d-m-Y").

return $fecha."<br>". $seg. $d = $día . } echo restar_dias(25.com Página 74 . $min. } list($hora. $anno)). $mes.$numdias. dia. $día. $d. date("d-m-Y")). seg.phpymysql. Ejemplo: <?php function restar_dias($numdias. año) La función mktime devuelve una variable de tipo timestamp a partir de las coordenadas dadas. $date) { if(isset($date)) { $date = time(). $seg. La principal utilidad de esta función es la de añadir o quitar una determinada cantidad de fecha u horas a una dada. $anno)= explode(" ". $fecha = date("d-m-Y". $mes. mktime($hora. ?> Como resultado tendremos lo siguiente: www.PHP Y MYSQL NICANOR YERBA mktime(hora. date("H i s d m Y")). $min. mes. min.

2006)) { echo "la fecha es correcta". año) La función checkdate compraba si una fecha es válida. el mes entre 1 y 12 y el día es menor o igual que el número de días total del mes en cuestión. Una fecha se considera válida si el año esta entre 1900 y 32767. }else{ echo "la fecha es incorrecta". si es así devuelve True y si no lo es False. 2.PHP Y MYSQL NICANOR YERBA checkdate(mes.phpymysql.com Página 75 . } ?> www. Dia. Ejemplo: <?php if(checkdate(31.

php Ejemplo ilustrativo del uso de clases en PHP.php <?php /* Circulo. Por ejemplo. 2009 */ class Circulo { // Atributos de la clase private $radio. Pero. $matricula y habrá una serie de funciones que actuarán sobre la clase automóvil como Precio(). $color. reutilizable. Girar()y Reparar(). pero implementa las características que permiten definir las clases. PHP no es un lenguaje orientad a objeto. vamos a crear la claseautomóvil.com Página 76 . Frenar(). ¿qué son las Clases y para que sirven?. empecemos por los segundo. $marca. Circulo. } // Otros métodos de la clase public function diametro() { return (2 * $this->radio). y lo que es más importante.PHP Y MYSQL NICANOR YERBA Las clases Las Clases son máximo exponente de la Programación Orientada a Objetos (POO). la cual tendrá diversas variables. // Métodos de acceso public function setRadio($radio) { $this->radio = $radio. } public function longitud() { return (2 * pi() * $this->radio). } public function getRadio() { return ($this->radio). Las Clases no son más que una serie de variables y funciones que describen y actúan sobre algo. (c) Carlos Castillo Peralta. $modelo. sirven hacer el código más legible. Acelerar(). } www. El siguiente ejemplo muestra como definir una clase en PHP y luego crea algunos objetos de esa clase. pero a la larga es más rentable por su portabilidad a otras aplicaciones y su mantenimiento. Escribir una Clase es sin duda más largo que escribir el código directamente.phpymysql.$potencia.

PHP Y MYSQL

NICANOR YERBA

public function area()
{
return (pi() * $this->radio * $this->radio);
}
}
?>
En el código mostrado se define la clase Circulo, que puede ser utilizada dentro de un programa
PHP para crear objetos de esa clase. Un objeto de la clase Circulo tendrá el atributo radio y los
métodos setRadio(), getRadio(), diametro(), longitud() yarea().
La forma de utilizar la clase Circulo es:

Clases.php
<?php
/*
Clases.php
Forma de utilizar la clase Circulo en PHP.
(c) Carlos Castillo Peralta, 2008
*/
// Incluimos el archivo de la clase
include ("Circulo.php");
// Se instancia un objeto de la clase Circulo
$objCirculo = new Circulo();
// Para asignar valores a los atributos del objeto se usa el
método set()
$objCirculo->setRadio(1);
// Para obtener el valor del atributo de un objeto se usa el
método get()
$radio = $objCirculo->getRadio();
// Acceso a otros métodos públicos del objeto
$diametro = $objCirculo->diametro();
$longitud = $objCirculo->longitud();
$area = $objCirculo->area();
// Impresión de resultados
echo "Radio: "
. $radio
echo "Diámetro: " . $diametro
echo "Longitud: " . $longitud
echo "Área: "
. $area
?>

www.phpymysql.com

.
.
.
.

"<br
"<br
"<br
"<br

/>";
/>";
/>";
/>";

Página 77

PHP Y MYSQL

NICANOR YERBA

Como resultado tendremos de Circulo.php y Clases.php lo siguiente:

Por simplicidad no estamos consustanciando los valores que puede tomar el atributo
radio. Por ejemplo, es posible asignar números negativos al radio lo que producirá
resultados erróneos. En todo caso se deja esto como tarea para el lector.

www.phpymysql.com

Página 78

PHP Y MYSQL

NICANOR YERBA

Sessiones
Las sesiones son las mejores formas de almacenar la información de los visitantes. Ya
que con las cookis aparte de tener mala fama por ser “inseguras”, el usuario puede
desactivarlas de su navegador, mientras que las sesiones no se pueden desactivadas.
Además las cookies son almacenadas en el PC del visitante, mientras que las sesiones
son guardadas en nuestro servidor, lo que nos permite almacenar mucha mayor
información y tener un acceso mas fácil a ellas.
Nota: Para que las sesiones funcionen, todas las paginas por las que queramos que corra
deben tener la extensión.php, si hacemos que corra por otra pagina que no sea php las
sesiones se perderán al abandonar el archivo php.
session_start()
Con esta función, lo que aremos es comprobar si existe alguna sesión abierta, y si no
hay ninguna, se abrirá una.
Es una buena idea incluir esta línea en cada script ya que si la sesion ya existe no abrirá
otra nueva, sino que se limitará a abrir toda la información asociada a dicha sesión.
session_register()
Esta función nos servirá para registrar una variable de sesión
Ejemplo:
$nombre = “Giss”;
Sessión_register(“nombre”);

Nota: No es necesario poner el símbolo $ a la hora de registrar la variable de sesión
Cuando las variables están registradas, son enviadas a través de las páginas .php hasta
que se termine la sesión o nosotros programemos manualmente el cierre de la sesión.
Se puede registrar mas de una variable a la vez, separándolo por comas, por ejemplo:
Session_register(“nombre”,”apellido”,”direccion”);
Otra cosa a tener en cuenta es que este tipo de variables no pueden pasarse por el
método POST ni GET.

session_is_register()
Esta función nos servirá para saber si una variable esta registrada o no.
Su sintaxis es así:

$registro=session_is_register(“nombre”);

En caso de que sea verdadero devolverá true y de lo contrario devolverá false.
www.phpymysql.com

Página 79

session_register("nombre").php">siguiente pagina</a>'. Una vez desregistradas las variables solo nos falta terminar la sesión con la función session_destroy().com Página 80 . Para des registrar todas las variables de una sola vez podemos utilizar la función session_unset().phpymysql.php <? session_start().PHP Y MYSQL NICANOR YERBA Cómo cerrar las sesiones Cerrar una sesión equivale a “des registrar” todas las variables que contiene. Vamos a realizar un ejemplo con todo lo visto hasta ahora sobre las sesiones: Crearemos una sesión. lo malo de esta sentencia es que solo se puede desregistrar una sola variable por cada vez. sesion1. registraremos una variable y la pasaremos a través de tres páginas distintas. Para des registrar una variable usamos la sentencia session_unregister(). echo " Bienvenido a mi web. echo '<a href="sesion2. $nombre ". ?> Como resultado tendremos lo siguiente: www. $nombre= "Jaime".

echo '<a href = "sesion3.php <? session_start().com Página 81 . $nombre". echo " Bienvenido a mi web de nuevo. session_unregister("$nombre").PHP Y MYSQL NICANOR YERBA sesion2. ?> Como resultado tendremos lo siguiente: www.php"> siguiente pagina </a>'.phpymysql.

com Página 82 . $nombre". y finalmente cerramos la sesion con session_destroy(). www. session_destroy().PHP Y MYSQL NICANOR YERBA sesion3. ?> Explicación: Tenemos 3 archivos con una sesion En el archivo 1: creamos la sesión y registramos la variable nombre con session_register() y lo pasamos al archivo 2 mediante un enlace En el archivo 2: usamos la variable creada en el archivo 1 y después desregistramos la variable con session_unregister() En el archivo 3: vemos que a pesar de que la sesion sigue abierta no le llega la variable nombre ya que la desregistremos en el archivo2.phpymysql.php <? session_start(). echo " Bienvenido a mi web de nuevo otra vez.

Ejemplo: <?php $a = array('verde'. 'manzana'. $b = array('aguacate'. array_combine Crea una nueva matriz. es recomendable apreciar algunos ejemplos netamente en PHP5 y de esta manera apreciar su funcionamiento.PHP Y MYSQL NICANOR YERBA Ejemplos php5 A continuación se explicaran algunos ejemplos en PHP5 dado que la mayoría de ejemplos que se han explicado anteriormente pueden ser explicados en PHP4 y PHP3 sin problemas. print_r($c).phpymysql. $c = array_combine($a. $b). ?> Como resultado tendremos lo siguiente: www. usando una matriz para las claves y otra para sus valores array_combine ( array claves. 'rojo'. 'amarillo'). Devuelve FALSE si el numero de elementos de cada matriz no es equivalente o si las matrices están vacías.com Página 83 . y los valores de la matriz valores como los valores correspondientes. array valores ) Devuelve un array usando los valores de la matriz claves como claves. 'banano').

"B" => "tren". "b" => "tren". "strcasecmp")). "strcasecmp". Ejemplo: <?php $array1 = array("a" => "avion".phpymysql. $array2 = array("a" => "AVION". "yellow". compara los datos y los índices por una función del usuario. print_r(array_uintersect_uassoc($array1.com Página 84 .PHP Y MYSQL NICANOR YERBA array_uintersect_uassoc Calcula la intersección de matrices con chequeo adicional de índices. $array2. ?> Como resultado tendremos lo siguiente: www. "red"). "red"). "c" => "blue".

0. "ISO-8859-1").com Página 85 .PHP Y MYSQL NICANOR YERBA iconv_mime_decode() Decodifica un campo de cabecera MIME. <?php echo iconv_mime_decode("Subject: =?UTF8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=". ?> Como resultado tendremos lo siguiente: www.phpymysql.

?> Como resultado tendremos lo siguiente: www.com Página 86 .phpymysql. $preferences). "line-break-chars" => "\n" ). $preferences). "Prüfung Prüfung". <?php $preferences = array( "input-charset" => "ISO-8859-1". "output-charset" => "UTF-8". // This yields "Subject: =?UTF-8?Q?Pr=C3=BCfung_Pr=C3=BCfung?=" echo iconv_mime_encode("Subject".PHP Y MYSQL NICANOR YERBA iconv_mime_encode Compone un campo de cabecera MIME. "line-length" => 76. $preferences["scheme"] = "B". "Prüfung Prüfung". // This yields "Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=" echo iconv_mime_encode("Subject". $preferences["scheme"] = "Q".

PHP Y MYSQL NICANOR YERBA stream_copy_to_stream Copia datos de una secuencia a otra.com Página 87 .phpymysql. 'r'). $dest1. ?> Como resultado tendremos lo siguiente: www.calichin.com'. 'w'). <?php $fuente = fopen('http://www.txt'.txt\n". 1024) . $dest2) . $dest2 = fopen('resto. echo stream_copy_to_stream($fuente.txt'.txt\n". 'w'). echo stream_copy_to_stream($fuente. $dest1 = fopen('primer1k. " bytes copiados a resto. " bytes copiados a primer1k.

echo fread($da. Ejemplo: <?php $da = stream_socket_client("udp://127.phpymysql.0. "\n").PHP Y MYSQL NICANOR YERBA stream_socket_client El siguiente ejemplo muestra como recuperar la fecha y hora desde el servicio UDP <<DAYTIME>> (puerto 13) en su maquina local. fclose($da). $errstr).com Página 88 . $errno.0. } else { fwrite($da. } ?> www.1:13". 26). if (!$da) { echo "ERROR: $errno .$errstr<br />\n".

phpymysql. <?php /* Abrir un socket de servidor en el puerto 1234 en localhost */ $servidor = stream_socket_server('tcp://127. "'\n". STREAM_OOB) . stream_socket_recvfrom($socket.0. /* Echar un vistazo a los datos en banda normales. pero eliminarlo del * bufer esta vez. stream_socket_recvfrom($socket. pero no consumirlos. STREAM_PEEK) . /* Aceptar una conexion */ $socket = stream_socket_accept($servidor). */ echo "Datos: '" . ?> www.0.PHP Y MYSQL NICANOR YERBA stream_socket_recvfrom Recibe datos desde un socket. 1500) . "'\n". 1500. fclose($servidor).com Página 89 . 1500. /* Cerrarlo */ fclose($socket). */ echo "Datos: '" . stream_socket_recvfrom($socket. conectado o no.1:1234'). /* Recibir exactamente el mismo paquete de nuevo. /* Tomar un paquete (1500 es un tamanyo tipico) de datos OOB */ echo "Recibidos Out-Of-Band: '" . "'\n".

0. */ fwrite($socket.com Página 90 .0. /* Enviar mas datos fuera de banda. */ stream_socket_sendto($socket."). <?php /* Abrir un socket en el puerto 1234 en localhost */ $socket = stream_socket_client('tcp://127. "Datos Out of Band. "Transmision normal de datos.".phpymysql. /* Enviar datos ordinarios mediante los canales ordinarios. STREAM_OOB). /* Cerrarlo */ fclose($socket).1:1234'). sin importar si esta conectado o no. ?> www.PHP Y MYSQL NICANOR YERBA stream_socket_sendto Envía un mensaje a un socket.

0:8000".0. } fclose($socket). if (!$socket) { echo "$errstr ($errno)<br />\n". $errstr). } ?> www. } else { while ($con = stream_socket_accept($socket)) { fwrite($con.com Página 91 . fclose($con).PHP Y MYSQL NICANOR YERBA stream_socket_server Crear un socket de servidor de dominio de internet o Unix.phpymysql. <?php $socket = stream_socket_server("tcp://0. 'La hora local es ' . $errno.0. date('n/j/Y g:i a') . "\n").

phpymysql. que no solemos utilizar habitualmente.php" method="post" enctype="multipart/form-data"> <b>Campo de tipo texto:</b> <br> <input type="text" name="cadenatexto" size="20" maxlength="100"> <input type="hidden" name="MAX_FILE_SIZE" value="100000"> <br> <br> <b>Enviar un nuevo archivo: </b> <br> <input name="userfile" type="file"> <br> <input type="submit" value="Enviar"> </form> Como resultado tendremos lo siguiente: www.php. realizando un par de comprobaciones al subir el fichero y combinando en el mismo formulario campos de tipo file y tipo text.php. donde se permite seleccionar el archivo que queremos cargar de nuestro disco duro.net/manual/es/features.file-upload.PHP Y MYSQL NICANOR YERBA Upload de archivos con PHP En PHP tenemos muchas funcionalidades desarrolladas desde el principio y sin necesidad de instalar ningún añadido en nuestro servidor. cargar. El formulario para subir seleccionar los archivos Es un formulario cualquiera.html <form action="subearchivo. pero tiene una serie de particularidades y campos file. Es el caso de subir archivos a un servidor web por HTTP y a través de una página con un formulario. sin ir más lejos en la página de la propia tecnología: http://www. Nosotros en este caso vamos a intentar ir un poco más allá.com Página 92 . El ejemplo se encuentra bien documentado en un montón de páginas para desarrolladores.

Para hacer las comprobaciones.PHP Y MYSQL NICANOR YERBA Para empezar vemos que se ha colocado un nuevo atributo en el formulario: enctype="multipart/form-data". que sirve para indicar el tamaño en bytes de los archivos a subir. independientemente de la configuración. por lo que deberemos en las propias páginas PHP comprobar que el archivo tenga el tamaño que deseamos. $HTTP_POST_FILES['userfile']['size'] El tamaño en bytes del fichero recibido. $HTTP_POST_FILES['userfile']['name'] El nombre original del fichero en la máquina cliente.phpymysql. para subir datos por POST de tipo texto acompañados a los datos binarios del archivo. Por ejemplo. También tenemos el campo hidden MAX_FILE_SIZE. También hemos colocado un campo de tipo text. donde se seleccionará el archivo a subir. necesario para subir en un mismo formulario datos y archivos. pero en cualquier caso te recomendamos utilizar $_FILES para que tus scripts funcionen en cualquier servidor. En realidad es exactamente lo mismo. www.com Página 93 . Página que sube los archivos Esta página debe hacer las comprobaciones necesarias para saber si las características del archivo a subir son las que deseamos y realizar la copia del archivo en un directorio del servidor. con la diferencia que $_FILES es más corto de escribir. tenemos el campo tipo file. Un ejemplo podría ser "image/gif". usa $_FILES['userfile']['tmp_name'] en lugar de $HTTP_POST_FILES['userfile']['tmp_name']. $HTTP_POST_FILES['userfile']['type'] El tipo mime del fichero (si el navegador lo proporciona). Dependiendo de la configuración de tu PHP el nombre de variable antigua $HTTP_POST_FILES puede existir o no. $HTTP_POST_FILES['userfile']['tmp_name'] El nombre del fichero temporal que se utiliza para almacenar en el servidor el archivo recibido. es fácil saltarse esa protección. Este campo algunos navegadores no tienen porqué entenderlo o hacerle caso. Por último. Además. PHP nos crea una serie de variables que podemos acceder con la información del archivo enviado. Nota: En este momento (a partir de PHP 5) el array $HTTP_POST_FILES ha sido sustituido por el array $_FILES.

$cadenatexto . "gif") || strpos($tipo_archivo. $tipo_archivo = $HTTP_POST_FILES['userfile']['type'].phpymysql.PHP Y MYSQL NICANOR YERBA upload.com Página 94 .gif o . "<br><br>". echo "Escribió en el campo de texto: " . }else{ echo "Ocurrió algún error al subir el fichero. }else{ if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name' ]. No pudo guardarse.". $tamano_archivo = $HTTP_POST_FILES['userfile']['size']. "jpeg")) && ($tamano_archivo < 100000))) { echo "La extensión o el tamaño de los archivos no es correcta.". <br><br><table><tr><td><li>Se permiten archivos .</td></tr></table>". $nombre_archivo)){ echo "El archivo ha sido cargado correctamente. //datos del arhivo $nombre_archivo = $HTTP_POST_FILES['userfile']['name'].php <? //tomo el valor de un elemento de tipo texto del formulario $cadenatexto = $_POST["cadenatexto"]. //compruebo si las características del archivo son las que deseo if (!((strpos($tipo_archivo. } } ?> Como resultado tendremos lo siguiente: www.jpg<br><li>se permiten archivos de 100 Kb máximo.

por ello el fichero se subirá al mismo directorio donde están las páginas PHP que hacen el upload. Esta función devuelve un boleano que indica si hubo o no éxito al subir el archivo. comprobar que la extensión sea .jpg y que el tamaño menor que 100000 bytes. la ruta para llegar al directorio donde queremos guardarlo. es muy normal que en el mismo formulario deseemos mezclar varios tipos de información. Para ello se utiliza la función move_uploaded_file(). La función move_uploaded_file() se utiliza para mover el archivo a la posición definitiva. extensión y tamaño para. Aunque esto no tenga nada que ver con subir archivos. después de la ejecución de la página. Recibe por un lado el nombre temporal del fichero y por otro el nombre que deseamos colocarle definitivamente y. se borra de su localización temporal. Si el archivo tenía las características deseadas. Cuando se sube el archivo. el servidor lo copia en una localización temporal para que seamos nosotros los que elijamos la posición definitiva donde queremos que se almacene.phpymysql. de la forma habitual. En el caso del ejemplo sólo se indica el nombre del archivo. recogemos el campo de texto enviado por POST.PHP Y MYSQL NICANOR YERBA Para empezar. Luego se recogen los datos necesarios del archivo. se puede subir al servidor.gif o . que recibe el nombre del archivo temporal que se desea subir y el nombre del archivo que se desea dar. Si no lo copiamos a ningún sitio. si se desea. como su nombre.com Página 95 . www. en el siguiente if.

0. sin necesidad de instalar ningún añadido. en contra de lo que ocurría con ASP. Asunto: para indicar una cadena de caracteres que queremos que sea el asunto del correo electrónico a enviar. Ejemplo de envío de un mail sencillo <? mail("pepito@desarrolloweb. Cuerpo: el cuerpo del mensaje. Parámetros necesarios en todos los casos Destinatario: la dirección de correo o direcciones de correo que han de recibir el mensaje. Podemos obtener más información en la documentación de PHP para la función mail(). si el correo está en formato HTML. incluida en todas las versiones de PHP."asu ntillo". con copia a mariano@calichin.2.com".com.com Página 96 . además. las direcciones que recibirán copia oculta. etc. En concreto.com y juan@juan. sólo está disponible a partir de la versión PHP 4. www.com. Ejemplo complejo de envío de correo Vamos a enviar un correo con formato HTML a pepito@calichin. Si incluimos varias direcciones debemos separarlas por una coma.com."Este es el cuerpo del mensaje") ?> Parámetros opcionales del envío de correo Headers: Cabeceras del correo.com. La dirección de respuesta la configuraremos a maria@calichin.PHP Y MYSQL NICANOR YERBA Mandar mails desde PHP Para el envío de correos electrónicos utilizando PHP disponemos de una función bastante potente. La función se llama mail() y recibe tres parámetros de manera obligada y otros dos parámetros que podemos colocar opcionalmente.com y con copia oculta para pepe@pepe.5 y desde PHP 4.phpymysql. las posibles direcciones que recibirán copia del mensaje. en PHP disponemos de una función llamada mail() que permite configurar y enviar el mensaje de correo.3 está deshabilitado en modo seguro. Additional_parameters: esta opción no suele utilizarse y. Puede usarse para pasar parámetros adicionales al programa configurado para enviar el correo. Datos como la dirección de respuesta. Devuelve true si se envió el mensaje correctamente y false en caso contrario.maria@guiartemultimedia. lo que queremos que tenga escrito el correo. cuando se manda el mail usando la opción de configuración sendmail_path.

si queremos que sea distinta que la del remitente $headers . $headers .$asunto.calichin. $cuerpo = ' <html> <head> <title>Prueba de correo</title> </head> <body> <h1>Hola amigos!</h1> <p> <b>Bienvenidos a mi correo electrónico de prueba</b>. //ruta del mensaje desde origen a destino $headers . //dirección de respuesta.= "From: Nicanor Yerba <pepito@calichin.com\r\n".= "Return-path: holahola@calichin.com".juan@juan.com Página 97 .phpymysql.0\r\n".com>\r\n". //direcciones que recibirán copia oculta $headers .com. Este cuerpo del mensaje es del artículo de envío de mails por PHP. Por cierto. //direcciones que recibián copia $headers . //dirección del remitente $headers .= "Reply-To: mariano@desarrolloweb. mail($destinatario.PHP Y MYSQL NICANOR YERBA <? $destinatario = "nicanor_88@hotmail. //para el envío en formato HTML $headers = "MIME-Version: 1.= "Bcc: pepe@pepe. Estoy encantado de tener tantos lectores. cambia también las cabeceras del mensaje.$cuerpo.com</h1> </p> </body> </html> '. Habría que cambiarlo para poner tu propio cuerpo.com\r\n".com\r\n". charset=iso-8859-1\r\n".= "Cc: maria@calichin. $asunto = "Este mensaje es de prueba".com\r\n". <br> <h1>www.$headers) ?> www.= "Content-type: text/html.

En sistemas Windows encontraremos el php.com.com Página 98 . sí tendremos que configurar PHP. en el subdirectorio system32 o similar. se enviara automáticamente: Nota: Para el envío de correo mediante PHP es necesario que este disponga de una correcta configuración.PHP Y MYSQL NICANOR YERBA Como resultado tendremos lo siguiente después de subir y actualizar.ini. En este sistema deberemos indicar el dominio del servidor de smtp. PHP se configura en el archivo php. algo como smtp.midominio.ini. Si nuestro web está en un servidor de un proveedor de hosting seguramente ya hayan configurado PHP para el envío de mails. Dentro del php. Si estamos trabajando en un servidor propio. podremos poner "localhost" como máquina que enviará el correo. Dependiendo de nuestro sistema deberemos configurar de una manera u otra. www. debemos buscar el epígrafe [mail function].phpymysql. También podemos especificar la dirección desde donde queremos que parezca que se envía el mensaje en caso de que no se indique otra durante el envío. donde debemos especificar datos como el servidor de correo saliente que debe de utilizar PHP para transferir los mensajes. Si es el ordenador local el que hace de servidor.ini en el directorio windows o dentro de este.

En caso contrario -sí que había algo en $HTTP_POST_VARS.com Página 99 . $HTTP_POST_VARS["coment"] . "\n". compongo el cuerpo $cuerpo = "Formulario enviado\n". "\n". "\n". que si pasa por el caso positivo -no había nada en $HTTP_POST_VARS. $HTTP_POST_VARS["email"] . $cuerpo .quiere decir que estamos recibiendo datos por un formulario y en ese caso. $cuerpo . www.= "Nombre: " .0 Transitional//EN"> <html> <head> <title>Mándanos tus comentarios</title> </head> <body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060"> <? if (!$HTTP_POST_VARS){ ?> <form action="mail_formulario.PHP Y MYSQL NICANOR YERBA Enviar un formulario por mail con PHP El método para enviar un formulario con PHP resulta muy similar al utilizado en ASP. $HTTP_POST_VARS["nombre"] . Esquema de funcionamiento En este caso nos vamos a apoyar en la variable $HTTP_POST_VARS. Ejemplo: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. recibirlo y componer el cuerpo del mensaje que se va a enviar. $cuerpo . para saber si hemos recibido o no datos desde un formulario.php" method=post> Nombre: <input type=text name="nombre" size=16> <br> Email: <input type=text name=email size=16> <br> Comentarios: <textarea name=coment cols=32 rows=6></textarea> <br> <input type=submit value="Enviar"> </form> <? }else{ //Estoy recibiendo el formulario. que debería contener el formulario.significa que no se ha recibido nada desde un formulario. Varía tan sólo la sintaxis utilizada y las líneas de código que realizan el envío del correo electrónico.phpymysql. En ese caso. Veamos el código de la página para crear el formulario. En el mismo código podremos encontrar también la llamada a la función que envía el correo.= "Email: " . muestro el formulario de contacto. Dicha variable la utilizamos en un enunciado if (! $HTTP_POST_VARS). recogemos los datos y componemos el cuerpo del mensaje.= "Comentarios: " .

$cuerpo).. mail("ana@calichin..com".PHP Y MYSQL NICANOR YERBA //mando el correo. //doy las gracias por el envío echo "Gracias por rellenar el formulario. Se ha enviado correctamente.phpymysql. } ?> </body> </html> Como resultado tendremos lo siguiente: www.".com Página 100 ."Formulario recibido".

phpymysql.com NICANOR YERBA Página 101 .PHP Y MYSQL www.

Tras haber visto como funciona la lectura secuencial de un archivo. Por otra parte. 26).com Página 102 .PHP Y MYSQL NICANOR YERBA Escritura en archivos con PHP Siguiendo con la gestión de archivos por medio de PHP. podemos contentarnos con crear un script accesorio que ejecute una única vez el script principal y que almacene su resultado en forma de archivo HTML que será en realidad el que mostraremos a nuestros visitantes. Sin ir más lejos. y guardando las distancias.. Si el contenido que estamos mostrando es el mismo para todos los usuarios y no tiene necesidad de ser actualizado constantemente. podemos imaginar que escribir sobre éste no debe de resultar mucho más complicado."r"). fclose($fp). presupuesto. la cadena que deseamos incluir en nuestro archivo. conocimientos. evitamos por una parte la ejecución masiva de un mismo script con el consiguiente ahorro de recursos y por otra automatizamos la actualización de una determinada página o sección ejecutando periódicamente el script accesorio. en este artículo veremos los pasos elementales para la creación y escritura de un archivo texto por medio de esta tecnología de lado servidor.phpymysql. La escritura de archivos pasa. si por diversas razones (hosting. este método no tiene nada de seguro ni de versátil y sólo es valido para un sitio sin información confidencial y con poca cantidad de datos. siempre podremos solventar el inconveniente almacenando nuestros datos en archivos que luego podrán ser leídos. el paso siguiente será introducir por medio de la función fwrite. Por supuesto. Una vez abierto. Imaginemos que tenemos una página.) nos resulta difícil la puesta en marcha de una base de datos elemental. escribir y leer archivos puede en cierta manera sustituir muy primariamente a una base de datos. Podemos pensar también en crear documentos dinámicos a partir de datos introducidos en un formulario: cartas. fgets. páginas HTML y otros. Para ejemplificar esta nueva función de escritura y combinarla con la de lectura. $contador = fgets($fp. o su alias fputs. En efecto. o archivo.. www. en nuestro sitio que carga muy frecuentemente y que realiza constantemente llamadas a bases de datos o ejecuta scripts medianamente largos. os proponemos este contador inspirado en una nota de la página oficial de PHP: Ejemplo: <? function incremento_contador($archivo) { // $archivo contiene el numero que actualizamos $contador = 0. //Abrimos el archivo y leemos su contenido $fp = fopen($archivo. por la previa apertura de archivo en un modo apropiado. las posibilidades que estas dos operaciones nos pueden ofrecer conjuntamente son realmente sorprendentes. Otro ejemplo particularmente práctico es la creación dinámica de archivos que nos ahorren recursos de servidor. De esta forma. como es de esperar.

Las etapas que llevamos a cabo son verdaderamente cortas y comprensibles: • • • • Iniciamos nuestra variable contador. Abrimos el archivo y lo sobrescribimos (modo +w) con el valor contador modificado. $contador.com Página 103 . echo "Este script ha sido ejecutado $contador veces". 26). Aumentamos de una unidad el valor de contador. } ?> Como en otros ejemplos. Cerramos el archivo. fwrite($fp."w+"). fclose($fp). Abrimos el archivo en modo lectura y extraemos el valor actual del contador leyendo la primera y única línea.phpymysql. //Actualizamos el archivo con el nuevo valor $fp = fopen($archivo.PHP Y MYSQL NICANOR YERBA //Incrementamos el contador ++$contador. el script es expresado en forma de función para que sea más sencilla su reutilización. www.

","static_promo_banner_cta_url":"https://www.scribd.com/"},"eligible_for_exclusive_trial_roadblock":false,"eligible_for_seo_roadblock":false,"exclusive_free_trial_roadblock_props_path":"/doc-page/exclusive-free-trial-props/245775963","flashes":[],"footer_props":{"urls":{"about":"/about","press":"/press","blog":"http://literally.scribd.com/","careers":"/careers","contact":"/contact","plans_landing":"/subscribe","referrals":"/referrals?source=footer","giftcards":"/giftcards","faq":"/faq","accessibility":"/accessibility-policy","faq_paths":{"accounts":"https://support.scribd.com/hc/sections/202246346","announcements":"https://support.scribd.com/hc/sections/202246066","copyright":"https://support.scribd.com/hc/sections/202246086","downloading":"https://support.scribd.com/hc/articles/210135046","publishing":"https://support.scribd.com/hc/sections/202246366","reading":"https://support.scribd.com/hc/sections/202246406","selling":"https://support.scribd.com/hc/sections/202246326","store":"https://support.scribd.com/hc/sections/202246306","status":"https://support.scribd.com/hc/en-us/articles/360001202872","terms":"https://support.scribd.com/hc/sections/202246126","writing":"https://support.scribd.com/hc/sections/202246366","adchoices":"https://support.scribd.com/hc/articles/210129366","paid_features":"https://support.scribd.com/hc/sections/202246306","failed_uploads":"https://support.scribd.com/hc/en-us/articles/210134586-Troubleshooting-uploads-and-conversions","copyright_infringement":"https://support.scribd.com/hc/en-us/articles/210128946-DMCA-copyright-infringement-takedown-notification-policy","end_user_license":"https://support.scribd.com/hc/en-us/articles/210129486","terms_of_use":"https://support.scribd.com/hc/en-us/articles/210129326-General-Terms-of-Use"},"publishers":"/publishers","static_terms":"/terms","static_privacy":"/privacy","copyright":"/copyright","ios_app":"https://itunes.apple.com/us/app/scribd-worlds-largest-online/id542557212?mt=8&uo=4&at=11lGEE","android_app":"https://play.google.com/store/apps/details?id=com.scribd.app.reader0&hl=en","books":"/books","sitemap":"/directory"}},"global_nav_props":{"header_props":{"logo_src":"/images/landing/home2_landing/scribd_logo_horiz_small.svg","root_url":"https://www.scribd.com/","search_term":"","small_logo_src":"/images/logos/scribd_s_logo.png","uploads_url":"/upload-document","search_props":{"redirect_to_app":true,"search_url":"/search","query":"","search_page":false}},"user_menu_props":null,"sidebar_props":{"urls":{"bestsellers":"https://www.scribd.com/bestsellers","home":"https://www.scribd.com/","saved":"/saved","subscribe":"/archive/pmp_checkout?doc=245775963&metadata=%7B%22context%22%3A%22pmp%22%2C%22action%22%3A%22start_trial%22%2C%22logged_in%22%3Afalse%2C%22platform%22%3A%22web%22%7D","top_charts":"/bestsellers","upload":"https://www.scribd.com/upload-document"},"categories":{"book":{"icon":"icon-ic_book","icon_filled":"icon-ic_book_fill","url":"https://www.scribd.com/books","name":"Books","type":"book"},"news":{"icon":"icon-ic_articles","icon_filled":"icon-ic_articles_fill","url":"https://www.scribd.com/news","name":"News","type":"news"},"audiobook":{"icon":"icon-ic_audiobook","icon_filled":"icon-ic_audiobook_fill","url":"https://www.scribd.com/audiobooks","name":"Audiobooks","type":"audiobook"},"magazine":{"icon":"icon-ic_magazine","icon_filled":"icon-ic_magazine_fill","url":"https://www.scribd.com/magazines","name":"Magazines","type":"magazine"},"document":{"icon":"icon-ic_document","icon_filled":"icon-ic_document_fill","url":"https://www.scribd.com/docs","name":"Documents","type":"document"},"sheet_music":{"icon":"icon-ic_songbook","icon_filled":"icon-ic_songbook_fill","url":"https://www.scribd.com/sheetmusic","name":"Sheet Music","type":"sheet_music"},"summary":{"icon":"icon-ic_globalnav_snapshot","icon_filled":"icon-ic_globalnav_snapshot_fill","url":"https://www.scribd.com/snapshots","name":"Snapshots","type":"summary"}},"nav_categories":["mixed","book","audiobook","magazine","document","sheet_music"],"selected_content_type":"mixed","username":"","search_overlay_props":{"search_input_props":{"focused":false,"keep_suggestions_on_blur":false}}}},"recommenders":{"related_titles_recommender":{"ids":[118447058,217269373,323783721,137399910,224357259,389258116,92644884,334144806,131984397,324730417,130239853,38972740,180048488,220821291,370352491,20072021,256491368,337871147,40353317,217372864,216871048,315116644,244289819,366705007,96720019,389325815,383689616,284094570,167189406,7109787,378763305,245775635,273735633,322207275,378761915,247034440,244810091,257669222,346151738,378761972,245775558,246173121,313747492,378762029,244810161,167730951,167730825,159883013,167732399,167734456,159881561,233370805,159954850,231863483,231862924,231864310,244810060,159882268,231866672],"title_link":null,"title":null,"track_opts":{"compilation_id":"VCthd7avUMFTHWZ1+/OGGWVlHDc=","module_id":"s+pnAkB4AD1sHW7wQok3s9Jyv2w=","widget_name":"right sidebar","track_id":"flattened_recommender"}},"footer_recommenders":{"recommenders":[{"ids":[118447058,217269373,323783721,137399910,224357259,389258116,92644884,334144806,131984397,324730417,130239853,38972740,180048488,220821291,370352491,20072021,256491368,337871147,40353317,217372864,216871048,315116644,244289819,366705007,96720019,389325815,383689616,284094570,167189406,7109787],"title_link":null,"title":"Documents Similar To php5","track_opts":{"compilation_id":"VCthd7avUMFTHWZ1+/OGGWVlHDc=","module_id":"Q1CCjhNpe+dT0E/y7+0cB2n2FfI=","widget_name":"document_carousel"}},{"ids":[378763305,245775635,273735633,322207275,378761915,247034440,244810091,257669222,346151738,378761972,245775558,246173121,313747492,378762029,244810161,167730951,167730825,159883013,167732399,167734456,159881561,233370805,159954850,231863483,231862924,231864310,244810060,159882268,231866672],"title_link":null,"title":"More From soy_nicanor","track_opts":{"compilation_id":"VCthd7avUMFTHWZ1+/OGGWVlHDc=","module_id":"dFR3FUYzJ9I4GgfTmp/K3PjrbAc=","widget_name":"document_carousel"}}]},"seo_new_docs_recommenders":{"recommenders":[]},"documents":{"7109787":{"type":"document","id":7109787,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/7109787/149x198/6c6aa98a83/1395169444?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/7109787/298x396/edc7fdc871/1395169444?v=1","title":"Triptico Ciclo a","short_title":"Triptico Ciclo a","author":"api-3821435","tracking":{"object_type":"document","object_id":7109787,"track":"flattened_recommender","doc_uuid":"Gs/b3Ht+e4TLLpEntZctOArXGYo="},"url":"https://www.scribd.com/document/7109787/Triptico-Ciclo-a","top_badge":null},"20072021":{"type":"document","id":20072021,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/20072021/149x198/3339b8c7aa/1384493710?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/20072021/298x396/2c10499f94/1384493710?v=1","title":"Smarty 2.6.5 Docs","short_title":"Smarty 2.6.5 Docs","author":"api-5812933","tracking":{"object_type":"document","object_id":20072021,"track":"flattened_recommender","doc_uuid":"DgGxX2oG4/83Wbu03An0Wssb4gI="},"url":"https://www.scribd.com/document/20072021/Smarty-2-6-5-Docs","top_badge":null},"38972740":{"type":"document","id":38972740,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/38972740/149x198/bc2d49c50b/1289344005?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/38972740/298x396/da3b8ca7ad/1289344005?v=1","title":"Doc Pagina Web","short_title":"Doc Pagina Web","author":"latigreeli_22","tracking":{"object_type":"document","object_id":38972740,"track":"flattened_recommender","doc_uuid":"3FbbTkwqztMYrOUkHeI8NuawwBk="},"url":"https://www.scribd.com/document/38972740/Doc-Pagina-Web","top_badge":null},"40353317":{"type":"document","id":40353317,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/40353317/149x198/b6dd8e06e0/1304974673?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/40353317/298x396/8e9847f84d/1304974673?v=1","title":"Manual PHP","short_title":"Manual PHP","author":"Christian Gracia Salazar","tracking":{"object_type":"document","object_id":40353317,"track":"flattened_recommender","doc_uuid":"mIprUhDBoSBVaAy4A9TDyOT4oDU="},"url":"https://www.scribd.com/document/40353317/Manual-PHP","top_badge":null},"92644884":{"type":"document","id":92644884,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/92644884/149x198/1759bb2e3c/1401928606?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/92644884/298x396/c6c3674b51/1401928606?v=1","title":"Servidor","short_title":"Servidor","author":"Ines Palacios Chero","tracking":{"object_type":"document","object_id":92644884,"track":"flattened_recommender","doc_uuid":"Remw8KR3NZibw/5LY/fqdJCuzPs="},"url":"https://www.scribd.com/document/92644884/Servidor","top_badge":null},"96720019":{"type":"document","id":96720019,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/96720019/149x198/8d81af251d/1387670611?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/96720019/298x396/97c3aaa984/1387670611?v=1","title":"Www Desarrolloweb Com","short_title":"Www Desarrolloweb Com","author":"Julio Cesar Vinachi","tracking":{"object_type":"document","object_id":96720019,"track":"flattened_recommender","doc_uuid":"ei0p90/PKK1jGrHHydw0NwJz5gE="},"url":"https://www.scribd.com/document/96720019/Www-Desarrolloweb-Com","top_badge":null},"118447058":{"type":"document","id":118447058,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/118447058/149x198/f3c63450ea/1397819472?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/118447058/298x396/58fdf12e9d/1397819472?v=1","title":"php","short_title":"php","author":"Ricardo Alberro","tracking":{"object_type":"document","object_id":118447058,"track":"flattened_recommender","doc_uuid":"cZuXavmSwDFbf0XYbbzIDzYCbyw="},"url":"https://www.scribd.com/document/118447058/php","top_badge":null},"130239853":{"type":"document","id":130239853,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/130239853/149x198/4d092f719a/1363211446?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/130239853/298x396/49d2791d7e/1363211446?v=1","title":"Bandwidth d","short_title":"Bandwidth d","author":"lukastoni","tracking":{"object_type":"document","object_id":130239853,"track":"flattened_recommender","doc_uuid":"/0XmM1ABOVjlCRGx3CrQL4hp/4M="},"url":"https://www.scribd.com/document/130239853/Bandwidth-d","top_badge":null},"131984397":{"type":"document","id":131984397,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/131984397/149x198/54a7fa4ce3/1376516401?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/131984397/298x396/07882374c0/1376516401?v=1","title":"manual_php_español.pdf","short_title":"manual_php_español.pdf","author":"Royer Quispe Flores","tracking":{"object_type":"document","object_id":131984397,"track":"flattened_recommender","doc_uuid":"5hxQNiAwOrfD5eB3tNgBAvjuJ5Y="},"url":"https://www.scribd.com/document/131984397/manual-php-espanol-pdf","top_badge":null},"137399910":{"type":"document","id":137399910,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/137399910/149x198/3b49e6e7dd/1377326254?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/137399910/298x396/91d379327a/1377326254?v=1","title":"Fundamentos de PHP","short_title":"Fundamentos de PHP","author":"Migxel Gajardo Cortés","tracking":{"object_type":"document","object_id":137399910,"track":"flattened_recommender","doc_uuid":"VfkvzcA+reka6Zr276eyxfqZ2D8="},"url":"https://www.scribd.com/document/137399910/Fundamentos-de-PHP","top_badge":null},"159881561":{"type":"document","id":159881561,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/159881561/149x198/f3f891dd9b/1376362343?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/159881561/298x396/f2df2faaaf/1376362343?v=1","title":"A Cordes","short_title":"A Cordes","author":"soy_nicanor","tracking":{"object_type":"document","object_id":159881561,"track":"flattened_recommender","doc_uuid":"dQHVM3nUqHF4z1YsHiYsYyW55nQ="},"url":"https://www.scribd.com/doc/159881561/A-Cordes","top_badge":null},"159882268":{"type":"document","id":159882268,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/159882268/149x198/e0223368c8/1437875535?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/159882268/298x396/8e557ca195/1437875535?v=1","title":"Facultad de Ingenieria de Sistemas Tesis","short_title":"Facultad de Ingenieria de Sistemas Tesis","author":"soy_nicanor","tracking":{"object_type":"document","object_id":159882268,"track":"flattened_recommender","doc_uuid":"Ec9c/LboVKJjjbIXf8akM1ZXz7w="},"url":"https://www.scribd.com/doc/159882268/Facultad-de-Ingenieria-de-Sistemas-Tesis","top_badge":null},"159883013":{"type":"document","id":159883013,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/159883013/149x198/5d1b7b7086/1400105575?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/159883013/298x396/ac35c2d7b2/1400105575?v=1","title":"Adobe Acrobat X Serial","short_title":"Adobe Acrobat X Serial","author":"soy_nicanor","tracking":{"object_type":"document","object_id":159883013,"track":"flattened_recommender","doc_uuid":"TB2MWQaw1+qz06oohqH1Byj/oxI="},"url":"https://www.scribd.com/doc/159883013/Adobe-Acrobat-X-Serial","top_badge":null},"159954850":{"type":"document","id":159954850,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/159954850/149x198/ee7fdc6a3d/1376395271?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/159954850/298x396/cf1a395daf/1376395271?v=1","title":"Juego de Bastas","short_title":"Juego de Bastas","author":"soy_nicanor","tracking":{"object_type":"document","object_id":159954850,"track":"flattened_recommender","doc_uuid":"+7NPdBsL5Afc7lMcP4KdIZhX3/c="},"url":"https://www.scribd.com/doc/159954850/Juego-de-Bastas","top_badge":null},"167189406":{"type":"document","id":167189406,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/167189406/149x198/3152b7e9aa/1378864743?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/167189406/298x396/670fa19186/1378864743?v=1","title":"1580936465","short_title":"1580936465","author":"Juanito Rojas","tracking":{"object_type":"document","object_id":167189406,"track":"flattened_recommender","doc_uuid":"ElK4DL3jdSsl+W9cxt3pB+Fft8o="},"url":"https://www.scribd.com/document/167189406/1580936465","top_badge":null},"167730825":{"type":"document","id":167730825,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/167730825/149x198/299a49951d/1379014346?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/167730825/298x396/feff43947c/1379014346?v=1","title":"SQL Lenguaje de Consulta Estructurado","short_title":"SQL Lenguaje de Consulta Estructurado","author":"soy_nicanor","tracking":{"object_type":"document","object_id":167730825,"track":"flattened_recommender","doc_uuid":"/jLq4CyTTvIjfg/zx5LFquFDld8="},"url":"https://www.scribd.com/doc/167730825/SQL-Lenguaje-de-Consulta-Estructurado","top_badge":null},"167730951":{"type":"document","id":167730951,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/167730951/149x198/494ead553f/1379014377?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/167730951/298x396/2791ef3af4/1379014377?v=1","title":"SQL Lenguaje de Consulta Estructurado","short_title":"SQL Lenguaje de Consulta Estructurado","author":"soy_nicanor","tracking":{"object_type":"document","object_id":167730951,"track":"flattened_recommender","doc_uuid":"ROuBW3+YaMWB6znOIRX6kF+GcDo="},"url":"https://www.scribd.com/doc/167730951/SQL-Lenguaje-de-Consulta-Estructurado","top_badge":null},"167732399":{"type":"document","id":167732399,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/167732399/149x198/dae2cfddbe/1379014765?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/167732399/298x396/0089155838/1379014765?v=1","title":"a1","short_title":"a1","author":"soy_nicanor","tracking":{"object_type":"document","object_id":167732399,"track":"flattened_recommender","doc_uuid":"+qgT3Jv+VxH23kZWNZbUSavv6d0="},"url":"https://www.scribd.com/doc/167732399/a1","top_badge":null},"167734456":{"type":"document","id":167734456,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/167734456/149x198/0418a01d5d/1379015253?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/167734456/298x396/642da8248c/1379015253?v=1","title":"a1","short_title":"a1","author":"soy_nicanor","tracking":{"object_type":"document","object_id":167734456,"track":"flattened_recommender","doc_uuid":"zbr71cJ04bRvwJ6QkwEAscj4lNU="},"url":"https://www.scribd.com/doc/167734456/a1","top_badge":null},"180048488":{"type":"document","id":180048488,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/180048488/149x198/f68bcd4ef7/1396046219?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/180048488/298x396/e6e7f28de4/1396046219?v=1","title":"Fundamentos de PHP - Vikram Vaswani","short_title":"Fundamentos de PHP - Vikram Vaswani","author":"Luis Miguel Hernandez Santos","tracking":{"object_type":"document","object_id":180048488,"track":"flattened_recommender","doc_uuid":"7Qad+sSDFYDmI/zz8EtrjR55vI4="},"url":"https://www.scribd.com/document/180048488/Fundamentos-de-PHP-Vikram-Vaswani","top_badge":null},"216871048":{"type":"document","id":216871048,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/216871048/149x198/e8139c120c/1447513770?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/216871048/298x396/eef69bfca9/1447513770?v=1","title":"Manual de PHP 5.0","short_title":"Manual de PHP 5.0","author":"DNETwarrior","tracking":{"object_type":"document","object_id":216871048,"track":"flattened_recommender","doc_uuid":"JkIcXjvda/b4XyImzVYRhK3KS84="},"url":"https://www.scribd.com/document/216871048/Manual-de-PHP-5-0","top_badge":null},"217269373":{"type":"document","id":217269373,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/217269373/149x198/58bdda2ba5/1413521888?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/217269373/298x396/fc060ed288/1413521888?v=1","title":"Fundamentos de PHP","short_title":"Fundamentos de PHP","author":"Marlon Rodriguez","tracking":{"object_type":"document","object_id":217269373,"track":"flattened_recommender","doc_uuid":"mo8t0wt/VtWyUWGayaytZV5Fo4U="},"url":"https://www.scribd.com/document/217269373/Fundamentos-de-PHP","top_badge":null},"217372864":{"type":"document","id":217372864,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/217372864/149x198/05b6891ca4/1397098217?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/217372864/298x396/4c2c1197fa/1397098217?v=1","title":"Lengua Je","short_title":"Lengua Je","author":"Abdiel Bautista","tracking":{"object_type":"document","object_id":217372864,"track":"flattened_recommender","doc_uuid":"G34glSzkiN1xCGAPxjq8dn7xO8o="},"url":"https://www.scribd.com/document/217372864/Lengua-Je","top_badge":null},"220821291":{"type":"document","id":220821291,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/220821291/149x198/9e071cbbea/1398721957?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/220821291/298x396/e54aa817d1/1398721957?v=1","title":"Temario Lenguaje de Programación Php","short_title":"Temario Lenguaje de Programación Php","author":"jaferet27","tracking":{"object_type":"document","object_id":220821291,"track":"flattened_recommender","doc_uuid":"HOM4rP0ovtmTG7P2AikmGg0FC+o="},"url":"https://www.scribd.com/document/220821291/Temario-Lenguaje-de-Programacion-Php","top_badge":null},"224357259":{"type":"document","id":224357259,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/224357259/149x198/282cea00b9/1400173006?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/224357259/298x396/23b84c26ff/1400173006?v=1","title":"Manual de Php","short_title":"Manual de Php","author":"Michael Joao Gonzalez","tracking":{"object_type":"document","object_id":224357259,"track":"flattened_recommender","doc_uuid":"LcfWkZF4CZIVE1cmKO6g4zqTdNQ="},"url":"https://www.scribd.com/document/224357259/Manual-de-Php","top_badge":null},"231862924":{"type":"document","id":231862924,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/231862924/149x198/1ca35c6ab9/1404080717?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/231862924/298x396/16b60df539/1404080717?v=1","title":"PAG 11 - 13","short_title":"PAG 11 - 13","author":"soy_nicanor","tracking":{"object_type":"document","object_id":231862924,"track":"flattened_recommender","doc_uuid":"z1IiicSy2gqxXOF4kECaKTdWLNI="},"url":"https://www.scribd.com/doc/231862924/PAG-11-13","top_badge":null},"231863483":{"type":"document","id":231863483,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/231863483/149x198/1ca757501d/1404081111?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/231863483/298x396/a646b3d1e5/1404081111?v=1","title":"Pag. 15 - 16","short_title":"Pag. 15 - 16","author":"soy_nicanor","tracking":{"object_type":"document","object_id":231863483,"track":"flattened_recommender","doc_uuid":"YWju9ADeiLgD4OJ34dGyzoknvrY="},"url":"https://www.scribd.com/document/231863483/Pag-15-16","top_badge":null},"231864310":{"type":"document","id":231864310,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/231864310/149x198/4cf603899c/1404081667?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/231864310/298x396/9a964ce59b/1404081667?v=1","title":"Pag. 18 - 19","short_title":"Pag. 18 - 19","author":"soy_nicanor","tracking":{"object_type":"document","object_id":231864310,"track":"flattened_recommender","doc_uuid":"quhv+gLtJL+qb86iP49OxZkEK9o="},"url":"https://www.scribd.com/doc/231864310/Pag-18-19","top_badge":null},"231866672":{"type":"document","id":231866672,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/231866672/149x198/67ddf3c4d2/1404083149?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/231866672/298x396/91b3573ebf/1404083149?v=1","title":"Trabajo de Ingles","short_title":"Trabajo de Ingles","author":"soy_nicanor","tracking":{"object_type":"document","object_id":231866672,"track":"flattened_recommender","doc_uuid":"Fmd9r/PVllbsRzjxF486ztpb9UQ="},"url":"https://www.scribd.com/document/231866672/Trabajo-de-Ingles","top_badge":null},"233370805":{"type":"document","id":233370805,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/233370805/149x198/0f74d12d6d/1405008637?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/233370805/298x396/6d56185197/1405008637?v=1","title":"Doc1","short_title":"Doc1","author":"soy_nicanor","tracking":{"object_type":"document","object_id":233370805,"track":"flattened_recommender","doc_uuid":"WX0bOdlnYYnaWdyKOn5IOqtpKxw="},"url":"https://www.scribd.com/doc/233370805/Doc1","top_badge":null},"244289819":{"type":"document","id":244289819,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/244289819/149x198/82f27b7c9d/1414176010?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/244289819/298x396/7fc867919a/1414176010?v=1","title":"El Libro para Principiantes en Node.js» Un tutorial completo de node.pdf","short_title":"El Libro para Principiantes en Node.js» Un tutorial completo de node.pdf","author":"jtstone","tracking":{"object_type":"document","object_id":244289819,"track":"flattened_recommender","doc_uuid":"usmpASY2BFUUCMxkKRAibNjf0pI="},"url":"https://www.scribd.com/document/244289819/El-Libro-para-Principiantes-en-Node-js-Un-tutorial-completo-de-node-pdf","top_badge":null},"244810060":{"type":"document","id":244810060,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/244810060/149x198/e3badb1420/1414540701?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/244810060/298x396/09e97c819d/1414540701?v=1","title":"Comprobacion de Hipotesis 2","short_title":"Comprobacion de Hipotesis 2","author":"soy_nicanor","tracking":{"object_type":"document","object_id":244810060,"track":"flattened_recommender","doc_uuid":"0fPjNjPHb73MeJ42Wftrpyqf6Bc="},"url":"https://www.scribd.com/doc/244810060/Comprobacion-de-Hipotesis-2","top_badge":null},"244810091":{"type":"document","id":244810091,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/244810091/149x198/97fa354db6/1414540720?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/244810091/298x396/fdb4f9013e/1414540720?v=1","title":"Contrastes de Hipotesis","short_title":"Contrastes de Hipotesis","author":"soy_nicanor","tracking":{"object_type":"document","object_id":244810091,"track":"flattened_recommender","doc_uuid":"IuIynonmezxb1oBukE3rUWTLvJk="},"url":"https://www.scribd.com/doc/244810091/Contrastes-de-Hipotesis","top_badge":null},"244810161":{"type":"document","id":244810161,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/244810161/149x198/847a2e91b5/1414540794?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/244810161/298x396/7c5f3c8d4a/1414540794?v=1","title":"CÓMO+FORMULAR+HIPOTESIS+DE+TRABAJO","short_title":"CÓMO+FORMULAR+HIPOTESIS+DE+TRABAJO","author":"soy_nicanor","tracking":{"object_type":"document","object_id":244810161,"track":"flattened_recommender","doc_uuid":"ULvGOoTGXHpHSncH4ZGVLKYSmF0="},"url":"https://www.scribd.com/doc/244810161/COMO-FORMULAR-HIPOTESIS-DE-TRABAJO","top_badge":null},"245775558":{"type":"document","id":245775558,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/245775558/149x198/a0b8dd6568/1415335558?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/245775558/298x396/0b5756b2f8/1415335558?v=1","title":"El Tutorial Python","short_title":"El Tutorial Python","author":"soy_nicanor","tracking":{"object_type":"document","object_id":245775558,"track":"flattened_recommender","doc_uuid":"pl2cqGiWlhLtHCS6hL7zSJXYpJg="},"url":"https://www.scribd.com/doc/245775558/El-Tutorial-Python","top_badge":null},"245775635":{"type":"document","id":245775635,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/245775635/149x198/3c472853be/1434313508?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/245775635/298x396/aadcf437e9/1434313508?v=1","title":"Ingenieria Informatica Python","short_title":"Ingenieria Informatica Python","author":"soy_nicanor","tracking":{"object_type":"document","object_id":245775635,"track":"flattened_recommender","doc_uuid":"YM+Q8KWTOMOZHWPCMYSyus4Zd+k="},"url":"https://www.scribd.com/doc/245775635/Ingenieria-Informatica-Python","top_badge":null},"246173121":{"type":"document","id":246173121,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/246173121/149x198/15568c59e9/1415664894?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/246173121/298x396/1b550eff3f/1415664894?v=1","title":"Tema 4 Presentar","short_title":"Tema 4 Presentar","author":"soy_nicanor","tracking":{"object_type":"document","object_id":246173121,"track":"flattened_recommender","doc_uuid":"EsGnSBgQvo6E5VDZFW5GRx4rh3o="},"url":"https://www.scribd.com/presentation/246173121/Tema-4-Presentar","top_badge":null},"247034440":{"type":"document","id":247034440,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/247034440/149x198/65f8da6497/1461171810?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/247034440/298x396/c839cc59ce/1461171810?v=1","title":"Anexo 1 - Especificación de Requerimientos Funcionales","short_title":"Anexo 1 - Especificación de Requerimientos Funcionales","author":"soy_nicanor","tracking":{"object_type":"document","object_id":247034440,"track":"flattened_recommender","doc_uuid":"o6RxjnQTfp8VTY1Dq73RyJZsGw8="},"url":"https://www.scribd.com/document/247034440/Anexo-1-Especificacion-de-Requerimientos-Funcionales","top_badge":null},"256491368":{"type":"document","id":256491368,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/256491368/149x198/bd8be9982b/1424551760?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/256491368/298x396/475a0a98fa/1424551760?v=1","title":"Trabajo","short_title":"Trabajo","author":"Jimz father","tracking":{"object_type":"document","object_id":256491368,"track":"flattened_recommender","doc_uuid":"TYzgyaJr4qGB4dfmziimJNwOIW0="},"url":"https://www.scribd.com/document/256491368/Trabajo","top_badge":null},"257669222":{"type":"document","id":257669222,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/257669222/149x198/f248436676/1425491670?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/257669222/298x396/9489ae5f65/1425491670?v=1","title":"Curri","short_title":"Curri","author":"soy_nicanor","tracking":{"object_type":"document","object_id":257669222,"track":"flattened_recommender","doc_uuid":"r6OTFfwPZ7mzJA2KHEphsE3XLYE="},"url":"https://www.scribd.com/document/257669222/Curri","top_badge":null},"273735633":{"type":"document","id":273735633,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/273735633/149x198/f0051503c9/1489889661?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/273735633/298x396/c4b9812a76/1489889661?v=1","title":"Desarrollo de la mini distribución GNU/Linux Live CD a partir del código fuente para el funcionamiento en arquitecturas PC x86.","short_title":"Desarrollo de la mini distribución GNU/Linux Live CD a partir del código fuente para el funcionamiento en arquitecturas PC x86.","author":"soy_nicanor","tracking":{"object_type":"document","object_id":273735633,"track":"flattened_recommender","doc_uuid":"uNB+esj72qUyZNcPazkFsOEvn7s="},"url":"https://www.scribd.com/document/273735633/Desarrollo-de-la-mini-distribucion-GNU-Linux-Live-CD-a-partir-del-codigo-fuente-para-el-funcionamiento-en-arquitecturas-PC-x86","top_badge":null},"284094570":{"type":"document","id":284094570,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/284094570/149x198/3a1d6225db/1444330493?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/284094570/298x396/ee34763b79/1444330493?v=1","title":"Introducción Al PHP","short_title":"Introducción Al PHP","author":"richarth flores","tracking":{"object_type":"document","object_id":284094570,"track":"flattened_recommender","doc_uuid":"1WUXtCs+2oyFOwNqUpjuzJ1ZZd4="},"url":"https://www.scribd.com/document/284094570/Introduccion-Al-PHP","top_badge":null},"313747492":{"type":"document","id":313747492,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/313747492/149x198/1955da7a72/1467243920?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/313747492/298x396/6abc2789e5/1467243920?v=1","title":"Sistema de Red Social Para La Comunidad de Network Marketing","short_title":"Sistema de Red Social Para La Comunidad de Network Marketing","author":"soy_nicanor","tracking":{"object_type":"document","object_id":313747492,"track":"flattened_recommender","doc_uuid":"WEtiqRHWx/3xJNN7r600jirxpHo="},"url":"https://www.scribd.com/document/313747492/Sistema-de-Red-Social-Para-La-Comunidad-de-Network-Marketing","top_badge":null},"315116644":{"type":"document","id":315116644,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/315116644/149x198/043313fc44/1465351689?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/315116644/298x396/291323aa85/1465351689?v=1","title":"Sitio web","short_title":"Sitio web","author":"Joseph Graterol","tracking":{"object_type":"document","object_id":315116644,"track":"flattened_recommender","doc_uuid":"HuK5XI5WgfwXlosrtN3rhflQMI8="},"url":"https://www.scribd.com/document/315116644/Sitio-web","top_badge":null},"322207275":{"type":"document","id":322207275,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/322207275/149x198/7c549b341b/1472185584?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/322207275/298x396/1d933b7e25/1472185584?v=1","title":"Sistema de red social para la comunidad de Network Marketing”","short_title":"Sistema de red social para la comunidad de Network Marketing”","author":"soy_nicanor","tracking":{"object_type":"document","object_id":322207275,"track":"flattened_recommender","doc_uuid":"IDvgCmougPitpaGHImIP7raRlKM="},"url":"https://www.scribd.com/document/322207275/Sistema-de-red-social-para-la-comunidad-de-Network-Marketing","top_badge":null},"323783721":{"type":"document","id":323783721,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/323783721/149x198/7c84191483/1473722420?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/323783721/298x396/c06c4c91e8/1473722420?v=1","title":"Trabajo PHP","short_title":"Trabajo PHP","author":"maria","tracking":{"object_type":"document","object_id":323783721,"track":"flattened_recommender","doc_uuid":"sCM3UCAkPhZmBh5+y8BXUBmTKyU="},"url":"https://www.scribd.com/document/323783721/Trabajo-PHP","top_badge":null},"324730417":{"type":"document","id":324730417,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/324730417/149x198/6a49b1df31/1474429500?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/324730417/298x396/c26d425770/1474429500?v=1","title":"Guia_aprendizaje_1.pdf","short_title":"Guia_aprendizaje_1.pdf","author":"Andrés Gutierrez","tracking":{"object_type":"document","object_id":324730417,"track":"flattened_recommender","doc_uuid":"KTBgt98vNoRDTrOUPrdlMWVXId8="},"url":"https://www.scribd.com/document/324730417/Guia-aprendizaje-1-pdf","top_badge":null},"334144806":{"type":"document","id":334144806,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/334144806/149x198/fa7ae4d450/1481686443?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/334144806/298x396/3293cd00b9/1481686443?v=1","title":"Aplicación Linux","short_title":"Aplicación Linux","author":"monica isabel","tracking":{"object_type":"document","object_id":334144806,"track":"flattened_recommender","doc_uuid":"el10AgV+dBbRO+r6t4cEb123RKE="},"url":"https://www.scribd.com/document/334144806/Aplicacion-Linux","top_badge":null},"337871147":{"type":"document","id":337871147,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/337871147/149x198/ca93ee4e3a/1485739634?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/337871147/298x396/b36480ec17/1485739634?v=1","title":"Sistema de Ventas en PHP y Mysql (Código de Barras) - Bootstrap 3, Programacion Capas - POO","short_title":"Sistema de Ventas en PHP y Mysql (Código de Barras) - Bootstrap 3, Programacion Capas - POO","author":"Hermelindo Samuel Rabanales Cifuentes","tracking":{"object_type":"document","object_id":337871147,"track":"flattened_recommender","doc_uuid":"WP+iT6rCqfRpDFGl6PBhCn3X9PI="},"url":"https://www.scribd.com/document/337871147/Sistema-de-Ventas-en-PHP-y-Mysql-Codigo-de-Barras-Bootstrap-3-Programacion-Capas-POO","top_badge":null},"346151738":{"type":"document","id":346151738,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/346151738/149x198/266a34aacb/1493041105?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/346151738/298x396/f1caed342c/1493041105?v=1","title":"Pachamanca a La Olla","short_title":"Pachamanca a La Olla","author":"soy_nicanor","tracking":{"object_type":"document","object_id":346151738,"track":"flattened_recommender","doc_uuid":"8Q1teMGkcDoEHhvLpFefxXsYXqw="},"url":"https://www.scribd.com/document/346151738/Pachamanca-a-La-Olla","top_badge":null},"366705007":{"type":"document","id":366705007,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/366705007/149x198/4da86d58cd/1512786941?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/366705007/298x396/10afba58f0/1512786941?v=1","title":"Guia de Actividades y Rúbrica de Evaluación Fase 5 Evaluación Nacional POA","short_title":"Guia de Actividades y Rúbrica de Evaluación Fase 5 Evaluación Nacional POA","author":"Hernan VEGA VARGAS","tracking":{"object_type":"document","object_id":366705007,"track":"flattened_recommender","doc_uuid":"VrzjpeIQK9p5iDCXzP5cuaVhFT0="},"url":"https://www.scribd.com/document/366705007/Guia-de-Actividades-y-Rubrica-de-Evaluacion-Fase-5-Evaluacion-Nacional-POA","top_badge":null},"370352491":{"type":"document","id":370352491,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/370352491/149x198/2956d7195a/1517336155?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/370352491/298x396/0188ee5455/1517336155?v=1","title":"0119 Php y Mysql","short_title":"0119 Php y Mysql","author":"carlos","tracking":{"object_type":"document","object_id":370352491,"track":"flattened_recommender","doc_uuid":"tjjS0hF1XoC+srEbzpf2VxhWTxQ="},"url":"https://www.scribd.com/document/370352491/0119-Php-y-Mysql","top_badge":null},"378761915":{"type":"document","id":378761915,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/378761915/149x198/589f1a8840/1525913603?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/378761915/298x396/c9c20a473d/1525913603?v=1","title":"Dialnet-EducacionParaLaPazYCulturaDePazEnDocumentosInterna-201070.pdf","short_title":"Dialnet-EducacionParaLaPazYCulturaDePazEnDocumentosInterna-201070.pdf","author":"soy_nicanor","tracking":{"object_type":"document","object_id":378761915,"track":"flattened_recommender","doc_uuid":"Gluk7dI1Kcf2AvZLxBiNMh20/G8="},"url":"https://www.scribd.com/document/378761915/Dialnet-EducacionParaLaPazYCulturaDePazEnDocumentosInterna-201070-pdf","top_badge":null},"378761972":{"type":"document","id":378761972,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/378761972/149x198/b6cbbc5974/1525913641?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/378761972/298x396/0e42974db2/1525913641?v=1","title":"DIEEEA08-2017_CulturaDefensa_Eurobarometro_IJGS.pdf","short_title":"DIEEEA08-2017_CulturaDefensa_Eurobarometro_IJGS.pdf","author":"soy_nicanor","tracking":{"object_type":"document","object_id":378761972,"track":"flattened_recommender","doc_uuid":"nx35WEv4uf1rhWzCYRMyccntReo="},"url":"https://www.scribd.com/document/378761972/DIEEEA08-2017-CulturaDefensa-Eurobarometro-IJGS-pdf","top_badge":null},"378762029":{"type":"document","id":378762029,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/378762029/149x198/32a9914e33/1525913713?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/378762029/298x396/e92e501314/1525913713?v=1","title":"Cultura.pdf","short_title":"Cultura.pdf","author":"soy_nicanor","tracking":{"object_type":"document","object_id":378762029,"track":"flattened_recommender","doc_uuid":"F+3nlLeaRS6zCKQJAqjmQwlQ4+k="},"url":"https://www.scribd.com/document/378762029/Cultura-pdf","top_badge":null},"378763305":{"type":"document","id":378763305,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/378763305/149x198/a5533a9a50/1525915469?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/378763305/298x396/7cbb2383bc/1525915469?v=1","title":"Cocina","short_title":"Cocina","author":"soy_nicanor","tracking":{"object_type":"document","object_id":378763305,"track":"flattened_recommender","doc_uuid":"KbYDXA9yBxUhgjr39vGR/NhsWlo="},"url":"https://www.scribd.com/document/378763305/Cocina","top_badge":null},"383689616":{"type":"document","id":383689616,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/383689616/149x198/b122ed452d/1531362757?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/383689616/298x396/8bb4731754/1531362757?v=1","title":"EL tigre 1","short_title":"EL tigre 1","author":"Derf Crz","tracking":{"object_type":"document","object_id":383689616,"track":"flattened_recommender","doc_uuid":"1hsImUzdtuiiSMOTam9PLfK/8YI="},"url":"https://www.scribd.com/document/383689616/EL-tigre-1","top_badge":null},"389258116":{"type":"document","id":389258116,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/389258116/149x198/8f946b3bed/1537723550?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/389258116/298x396/86b675e02c/1537723550?v=1","title":"PHP completo.docx","short_title":"PHP completo.docx","author":"manule","tracking":{"object_type":"document","object_id":389258116,"track":"flattened_recommender","doc_uuid":"x0dtaqNwUgQ0pHRMOpuGsKpoP6k="},"url":"https://www.scribd.com/document/389258116/PHP-completo-docx","top_badge":null},"389325815":{"type":"document","id":389325815,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/389325815/149x198/d2e5d6554c/1537798609?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/389325815/298x396/55934f41ea/1537798609?v=1","title":"Aclaración tarea 3","short_title":"Aclaración tarea 3","author":"Jorge Parra","tracking":{"object_type":"document","object_id":389325815,"track":"flattened_recommender","doc_uuid":"MsF8Rqlz9LD75KLVJRDWZJNXO34="},"url":"https://www.scribd.com/document/389325815/Aclaracion-tarea-3","top_badge":null}}},"seo_roadblock_props_path":"/doc-page/seo-roadblock-props/245775963","signup_context":null,"toolbar":{"search_path":"/search-4gen?allowed_pages=1%2C2%2C3%2C11%2C12%2C13%2C77%2C78%2C79&auth_token=zXzb4shrzXrH9yhUynEwY%2Fe%2B9gg%3D&authenticity_token=VimaDluoKXc9EXu%2Fl4A4ogmOZzDy7DfBrdGOietz2p9yINu7IV%2Bc4f4W0H%2FG4B5UuVu54Uk4J9v4yHDYQp%2FKWQ%3D%3D&expires=1540753855&wordDocumentId=245775963&wordUploadId=250336020"},"renewal_nag_props":null}-->