<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>programacion &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/programacion/</link>
	<description>Feed of posts on WordPress.com tagged "programacion"</description>
	<pubDate>Sat, 28 Nov 2009 04:29:30 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Eclipse - Instalar ant4eclipse y ant-contrib]]></title>
<link>http://cirovladimir.wordpress.com/2009/11/27/eclipse-instalar-ant4eclipse-y-ant-contrib/</link>
<pubDate>Fri, 27 Nov 2009 21:23:16 +0000</pubDate>
<dc:creator>cirovladimir</dc:creator>
<guid>http://cirovladimir.wordpress.com/2009/11/27/eclipse-instalar-ant4eclipse-y-ant-contrib/</guid>
<description><![CDATA[Primero vamos a instalar ant4eclipse como un plugin. Cierra el eclipse si lo tienes abierto. Descarg]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Primero vamos a instalar <a target="_blank" href="http://ant4eclipse.sourceforge.net/">ant4eclipse</a> como un plugin. <br />Cierra el eclipse si lo tienes abierto. Descarga el archivo<b> zip</b> de <a target="_blank" href="http://sourceforge.net/projects/ant4eclipse/files/">esta pagina</a> (el tar.gz siempre me decia que estaba corrupto) y luego descomprimelo en la carpeta donde instalaste el eclipse con el comando<br />
<blockquote>sudo unzip ~/Downloads/ant4eclipse-plugin-0.5.0.rc1a.zip</p></blockquote>
<p>Verifica que se halla instalado abriendo el eclipse y dando clic en el menu Windows-&#62;Preferences y luego seleccionando Ant-&#62;Runtime en el arbol de la izquierda. Si en el listado de &#8220;Contributed Entries&#8221; se encuentra algo que diga ant4eclipse ya se ha instalado.<br />Ahora solo nos queda instalar <a target="_blank" href="http://ant-contrib.sourceforge.net/">ant-contrib</a>. Descarga de <a target="_blank" href="http://sourceforge.net/projects/ant-contrib/files/">esta pagina</a> el archivo ant-contrib-[version] y descomprimelo en la carpeta de tu eleccion (yo tengo una llamada &#8220;librerias&#8221;). Luego desde el Eclipse en el mismo menu donde verificamos la instalacion de ant4eclipse, selecciona &#8220;Ant Home Entries (Default)&#8221; y da clic en el boton de agregar un jar externo. Seleccionamos el archivo ant-contrib.jar que debe estar en <i>~/librerias/ant-contrib/lib</i> y damos clic en OK.</p>
<p>Listo, ya deberiamos tener instalado el ant4eclipse y el ant-contrib. <a target="_blank" href="http://es.wikipedia.org/wiki/Byte">byte!</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=0979be8e-9277-834b-96d6-3b0664966892" /></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Atributos alt y title en imagenes]]></title>
<link>http://vikerweb.wordpress.com/2009/11/27/atributos-alt-y-title-en-imagenes/</link>
<pubDate>Fri, 27 Nov 2009 20:32:52 +0000</pubDate>
<dc:creator>vikerweb</dc:creator>
<guid>http://vikerweb.wordpress.com/2009/11/27/atributos-alt-y-title-en-imagenes/</guid>
<description><![CDATA[Una de las cosas que mas puede perjudicarnos a la hora de diseñar una pagina web es que esta no sea ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Una de las cosas que <strong>mas puede perjudicarnos a la hora de diseñar una pagina web</strong> es que esta <strong>no sea accesible</strong>.</p>
<p>Se entiende por accesible que todo el mundo tenga derecho y <strong>ACCESO</strong> a poder entrar en la web y en <strong>sus contenidos</strong>.</p>
<p>Y este termino hay que tenerlo siempre ligado que vayamos a crear una pagina web. De nada nos sirve que sepamos muy bien la teoria <strong>si luego en la practica fallamos</strong>.</p>
<p>Uno de los aspectos de la accesibilidad es el tema de <strong>las imagenes</strong>. Una imagen en un navegador de tipo texto no sera vista y necesitara de unos atributos. Estos atributos son :<strong> alt </strong>y <strong>title</strong>.</p>
<p>Alt -&#62; <strong>Texto alternativo</strong>. En caso de que la imagen en un navegador visual no se pudiera mostrar, tendria que ir acompañado de un texto alternativo.</p>
<p><img src="loquesea.gif" /></p>
<p>Esta imagen que no se muestra, no nos dice nada tampoco. Carece de texto alternativo. Algo que debe de ser obligatorio. </p>
<p>Imaginemos lo siguiente:</p>
<p><img src="loquesea.gif" alt="Yo y pepe haciendo el gamba" /></p>
<p>Perfecto. Ya tengo resuelto <strong>una parte del problema</strong>. En caso de que no se pueda mostrar mi imagen, acompañarlo <strong>OBLIGATORIAMENTE</strong> con un texto alternativo que servira de referencia.</p>
<p>Aun asi, quiero que cuando el raton este encima de la imagen aparezca <strong>un titulo identificativo para dar mayor accesibilidad a mi contenido</strong>.</p>
<p><img src="loquesea.gif" alt="Yo y pepe haciendo el gamba" title="Imagen de mis vacaciones" /></p>
<p>Ahora cuando este el raton encima de la imagen (se muestre o no) aparte del texto alternativo , aparecera un titulo identificativo a la foto.</p>
<p>Pero cuidado. No nos excedamos con el texto alternativo y el titulo. El texto alternativo es obligatorio , pero tampoco escribamos 1000 caracteres por cada imagen y que el texto sea acorde a la imagen. Nada de poner cosas que no vienen al caso.</p>
<p>No obstante en el atributo title <strong>si que podemos ser mas precisos con la descripcion de nuestras imagenes</strong>, pero tambien sin pasarnos. Todo en su justa medida.</p>
<p>Por tanto y concluimos, un breve esquema que siempre nos vendra bien: </p>
<p>alt -&#62; Texto alternativo en caso de que no se muestre la imagen y que tiene que ser <strong>OBLIGATORIO</strong>.<br />
title-&#62;Un pequeño titulo (tooltip) para mostrar informacion adicional. No es obligatorio pero si<strong> recomendable</strong>.</p>
<p>Saludos!.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SCRATH al curriculum escolar]]></title>
<link>http://luissubiabre.wordpress.com/2009/11/27/scrath-al-curriculum-escolar/</link>
<pubDate>Fri, 27 Nov 2009 11:38:57 +0000</pubDate>
<dc:creator>Luis Subiabre</dc:creator>
<guid>http://luissubiabre.wordpress.com/2009/11/27/scrath-al-curriculum-escolar/</guid>
<description><![CDATA[En el sitio web de Eduteka se encuntra disponibles dos documentos realmente valiosos para todos los ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><span style="color:#000000;"><span style="font-family:Georgia,&#38;"><a href="http://luissubiabre.wordpress.com/files/2009/11/scrat.gif"><img class="alignleft size-full wp-image-91" title="scrat" src="http://luissubiabre.wordpress.com/files/2009/11/scrat.gif" alt="" width="73" height="88" /></a>En el sitio web de <a href="http://www.eduteka.org" target="_blank">Eduteka</a> se encuntra disponibles dos documentos realmente valiosos para todos los que enseñamos informática.</span></span></p>
<p><span style="color:#000000;"><span style="font-family:Georgia,&#38;">1.- <a href="http://www.eduteka.org/pdfdir/AlgoritmosProgramacion.pdf" target="_blank">El primero trata sobre los algoritmos de programación</a></span></span></p>
<p>2.- <a href="http://www.scribd.com/doc/23236815/AlgoritmosProgramacionCuaderno1">Cuaderno de trabajo para la programación en SCRATCH</a></p>
<p>3.- <a href="http://www.eduteka.org/modulos/9/280/937/1" target="_blank">Módulo de programación para SCRATCH</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Búsquedas con caracteres especiales]]></title>
<link>http://avanzodts.wordpress.com/2009/11/27/busquedas-con-caracteres-especiales/</link>
<pubDate>Fri, 27 Nov 2009 10:17:22 +0000</pubDate>
<dc:creator>José Manuel Martín Márquez</dc:creator>
<guid>http://avanzodts.wordpress.com/2009/11/27/busquedas-con-caracteres-especiales/</guid>
<description><![CDATA[A la hora de crear campos en una tabla, se puede definir el collation (cotejamiento) a nivel de tabl]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>A la hora de crear campos en una tabla, se puede definir el collation (cotejamiento) a nivel de tabla o al nivel de campo. Debemos tener en cuenta el collate que elegimos, ya que básicamente, de esto depende el juego de caracteres utilizado y más importante aún, como realizará las búsquedas tanto con LIKE, como en comparación exacta de cadenas (con “=”).</p>
<p><!--more--></p>
<p>Por defecto, el sistema creará tablas y campos de tipo de cadena con un collation utf8_general_ci, puesto que es el que se ha definido en el servidor por defecto. El ci, significa “Case Insensitive”, es decir que le da igual mayúsculas que minúsculas.</p>
<p>Si el collation es utf8_general_ci al buscar, será menos restrictivo. Es decir, <strong>no</strong> diferenciará una n de una ñ.</p>
<p>Si el collation es utf8_spanish_ci al buscar, será un poco más restrictivo. Es decir, <strong>si</strong> diferenciará una n de una ñ, pero <strong>no</strong> entre á y a o a de A.</p>
<p>Si el collation es utf_bin al buscar, será estricto. Es decir, si diferenciará una á de a o a de A.</p>
<p>Si a pesar de todo, la tabla ya tiene un campo definido con un collation y queremos realizar una búsqueda, pero de modo <strong>más</strong> o <strong>menos</strong> restrictivo, podemos emplear una clausula collate en la búsqueda, independientemente de cómo esté definida:</p>
<p>“Select * from tabla where apellido like ‘%Caño%’ collate Utf8_general_ci”,</p>
<p>Nos devolverá ñ, n, Ñ y N</p>
<p>            Fernando Caño</p>
<p>            JOSE CAÑO</p>
<p>            Jose Luis Cano</p>
<p>            ANTONIO LIZCANO</p>
<p>“Select * from tabla where apellido like ‘%Caño%’ collate Utf8_spanish_ci”,</p>
<p>Nos devolverá Ñ y ñ</p>
<p>            Fernando Caño</p>
<p>            JOSE CAÑO</p>
<p>“Select * from tabla where apellido like ‘%Caño%’ collate Utf8_bin”,</p>
<p>Nos devolverá</p>
<p>            Fernando Caño</p>
<p>Mediante este método no hará caso al collation que tenga definido el campo. Ahora bien, si no añadimos el collate en la cláusula sql, en la búsqueda se aplicará el collation con el que esté definido el campo, y no tiene ninguno, el que tenga definida la tabla.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Actualizar a Fedora 12]]></title>
<link>http://elidiaz.wordpress.com/2009/11/26/actualizar-a-fedora-12/</link>
<pubDate>Fri, 27 Nov 2009 03:08:03 +0000</pubDate>
<dc:creator>elidiaz</dc:creator>
<guid>http://elidiaz.wordpress.com/2009/11/26/actualizar-a-fedora-12/</guid>
<description><![CDATA[Puedes actualizar de fedora 11 a fedora 12 de la manera mas facil.. solo te logueas por la consola c]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://elidiaz.wordpress.com/files/2009/11/f12launch.png"></a><a href="http://elidiaz.wordpress.com/files/2009/11/f12launch.png"><img class="alignleft size-full wp-image-116" title="f12launch" src="http://elidiaz.wordpress.com/files/2009/11/f12launch.png" alt="" width="600" height="200" /></a></p>
<p>Puedes actualizar de fedora 11 a fedora 12 de la manera mas facil.. solo te logueas por la consola como superusuario y escribes <span style="color:#0000ff;"><strong>preupgrade</strong></span>..</p>
<p>Ejemplo:</p>
<blockquote><p>[usuario@www ~]$ su<br />
Contraseña:<br />
[root@www usuario]# preupgrade</p></blockquote>
<p>Luego que tengas esto sigues los pasos para la instalacion escogiendo Fedora 12 Leonidas.. al finalizar reiniciaras tu maquina y listo..</p>
<p>Facil no?? bueno eso esperamos de Fedora..</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Programacion de Videojuegos]]></title>
<link>http://tutorex.wordpress.com/2009/11/27/programacion-de-videojuegos/</link>
<pubDate>Fri, 27 Nov 2009 01:22:24 +0000</pubDate>
<dc:creator>tutorex</dc:creator>
<guid>http://tutorex.wordpress.com/2009/11/27/programacion-de-videojuegos/</guid>
<description><![CDATA[Programacion de VidejoJuegos Manual de programación de videojuegos con Allegro y C++. Se incluyen te]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h1>Programacion de VidejoJuegos</h1>
<p><img class="aligncenter" src="http://3.bp.blogspot.com/_QcADEK6HYak/SCqSVGW-PbI/AAAAAAAACuk/I6P1vKpdPHI/s320/Box.Programacion.Videojuegos.png" alt="Programacion de Juegos" width="305" height="320" /></p>
<h3><!--more-->Manual de programación de videojuegos con Allegro y C++.</h3>
<h2>Se incluyen temas como:</h2>
<h4>
<li>El lenguaje C++</li>
<li>Creando el primer juego</li>
<li>Coordenadas de la Pantalla</li>
<li>Análisis y Diseño orientado a objetos</li>
<li>Etc</li>
</h4>
<div><strong>Ademas esta ilustrado y vienen ejemplos de códigos.</strong></div>
<div></div>
<div><strong><a title="Descargar Ya!" href="http://www.mediafire.com/?mvzimztgv03" target="_blank">Descargar el Curso Ya!</a></strong></div>
<div></div>
<div><strong>Formatp Pdf  y son 109 hojas</strong></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SUPERNATURAL "I believe the children are our future"]]></title>
<link>http://laguiadetv.wordpress.com/2009/11/26/supernatural-i-believe-the-children-are-our-future/</link>
<pubDate>Fri, 27 Nov 2009 00:24:46 +0000</pubDate>
<dc:creator>motley1981</dc:creator>
<guid>http://laguiadetv.wordpress.com/2009/11/26/supernatural-i-believe-the-children-are-our-future/</guid>
<description><![CDATA[JUEVES 26 DE NOVIEMBRE WARNER CHANNEL 22:00 hrs SKY 205 / CABLEVISIÓN 210 &nbsp; Supernatural / The ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h2><span style="color:#008080;">JUEVES 26 DE NOVIEMBRE</span></h2>
<h2><span style="color:#008080;">WARNER CHANNEL 22:00 hrs</span></h2>
<h2><span style="color:#008080;">SKY 205 / CABLEVISIÓN 210</span></h2>
<p>&#160;</p>
<div class="wp-caption alignnone" style="width: 510px"><img title="Supernatural / The CW / Warner Channel / 2009" src="http://images1.sfuniverse.com/files/2009/10/Supernatural_Children_1.jpg" alt="Supernatural / The CW / Warner Channel / 2009" width="500" height="333" /><p class="wp-caption-text">Supernatural / The CW / Warner Channel / 2009</p></div>
<p>Sam y Dean investigan un caso de personajes de cuentos de hadas que se convierten en verdaderos. En su búsqueda encuentran al responsable y su sorpresa es mayor al descubrir que se trata de un niño que crea creaturas reales de la fantasía. Los hermanos no están de acuerdo cuando Castiel les dice que tienen que matar al niño por los poderes que posee.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[34 hojas de trucos para diseñadores y desarrolladores web]]></title>
<link>http://ubuntulife.wordpress.com/2009/11/27/34-hojas-de-trucos-para-disenadores-y-desarrolladores-web/</link>
<pubDate>Fri, 27 Nov 2009 00:18:57 +0000</pubDate>
<dc:creator>superpiwi</dc:creator>
<guid>http://ubuntulife.wordpress.com/2009/11/27/34-hojas-de-trucos-para-disenadores-y-desarrolladores-web/</guid>
<description><![CDATA[Pues eso&#8230; 34 hojas de trucos (poco mas que contar ^^) Enlace | Xyberneticos]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://ubuntulife.wordpress.com/files/2009/11/34hojasdetrucos.jpg"><img src="http://ubuntulife.wordpress.com/files/2009/11/34hojasdetrucos.jpg?w=300" alt="" title="34hojasdetrucos" width="300" height="92" class="alignnone size-medium wp-image-10570" /></a></p>
<p>Pues eso&#8230; 34 hojas de trucos (poco mas que contar ^^)</p>
<p>Enlace &#124; <a href="http://xyberneticos.com/index.php/2009/11/23/34-hojas-de-trucos-para-disenadores-y-desarrolladores-web/">Xyberneticos</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Programación Barcelona]]></title>
<link>http://cursoinformaticagratis.wordpress.com/2009/11/26/programacion-barcelona-5/</link>
<pubDate>Thu, 26 Nov 2009 21:38:06 +0000</pubDate>
<dc:creator>New Horizons Barcelona</dc:creator>
<guid>http://cursoinformaticagratis.wordpress.com/2009/11/26/programacion-barcelona-5/</guid>
<description><![CDATA[  Más información o reserva de plazas: Formulario de solicitud online Teléfono: 93 602 55 00 New Hor]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;"><strong> </strong></p>
<p><strong>Más información o reserva de plazas:<br />
</strong><span style="text-decoration:underline;"><a href="http://www.nhbarcelona.com/mk/g/programacion-wordpress-form.htm">Formulario de solicitud online</a></span><br />
Teléfono: 93 602 55 00<br />
<strong>New Horizons Barcelona</strong> </p>
<p>Realice un curso gratis de Java de 12 horas de duración.</p>
<p>&#160;</p>
<p>Nuestro curso esta dirigido a profesionales interesados en aprender el lenguaje de multiplataforma más extendido. Entre otras cosas este curso te prepara para la realización de applets para paginas web. No son necesarios conocimientos previos.</p>
<p>&#160;</p>
<p><strong>Temario</strong></p>
<p>&#160;</p>
<p><strong>Introducción</strong><br />
- Breve Historia y Evolución de Java<br />
- La Java Virtual Machine (JVM)<br />
- Instalación de las Herramientas de Desarrollo de Java<br />
- Primer Programa en Java<br />
- Ciclo de Vida del Código Java. Compilación Just In Time</p>
<p lang="en-GB"> </p>
<p><strong>Sintaxis del Lenguaje Java</strong><br />
- Uso de Variables, Operadores, Expresiones y Comentarios<br />
- Tipos de Variables (Primitivas, de Objeto)<br />
- Conversiones Explicitas e Implícitas (Casting) de Variables<br />
- Gestión del Flujo de Programación. (If, else, while, for&#8230;)<br />
- Arrays<br />
- La clase String</p>
<p lang="en-GB"> </p>
<p><strong>Programación Orientada a Objetos I</strong><br />
- Descripción del Modelo de Programación Orientada a Objetos<br />
- La Clase y el Objeto<br />
- Métodos y Variables de Objeto<br />
- Constructores y Destructores de Objeto<br />
- Sobrecarga de Métodos y de Constructores</p>
<p>&#160;</p>
<p><strong>Programación Orientada a Objetos II</strong><br />
- Métodos y Variables de Clase (Static)<br />
- Herencia de Clases<br />
- Concepto de Encapsulación<br />
- Sobreescritura de Métodos</p>
<p>&#160;</p>
<p><strong>Programación Orientada a Objetos III</strong><br />
- Interfaces<br />
- Concepto de Polimorfismo<br />
- Clases Abstractas</p>
<p>&#160;</p>
<p><strong>Gestión de Excepciones</strong><br />
- Instrucciones Try..Catch..End Try<br />
- Excepciones Definidas por el Usuario (Throw)<br />
- Desvío de Excepciones (Throws)</p>
<p>&#160;</p>
<p><strong>Organización de los Componentes Java</strong><br />
- Uso y Creación de Namespaces<br />
- Empaquetado de Clases Utilizando JAR</p>
<p><strong>Clases del Namespace java.io</strong><br />
- Gestión del Sistema de Archivos<br />
- Lectura y Escritura de Archivos del Disco</p>
<p>&#160;</p>
<p><strong>Clases del Namespace java.util</strong><br />
- Uso de Colecciones<br />
- Gestión de Fechas</p>
<p><strong><br />
</strong><strong>Más información o reserva de plazas:<br />
</strong><span style="text-decoration:underline;"><a href="http://www.nhbarcelona.com/mk/g/programacion-wordpress-form.htm">Formulario de solicitud online</a></span><br />
Teléfono: 93 602 55 00<br />
<strong>New Horizons Barcelona</strong></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[conexion rapida en pgadmin]]></title>
<link>http://cumbredigital.wordpress.com/2009/11/26/conexion-rapida-en-pgadmin/</link>
<pubDate>Thu, 26 Nov 2009 19:58:01 +0000</pubDate>
<dc:creator>jonathanorlando</dc:creator>
<guid>http://cumbredigital.wordpress.com/2009/11/26/conexion-rapida-en-pgadmin/</guid>
<description><![CDATA[Conectemos nuestro pgadmin con postgresql localmente, hey hey en 4 paso: Paso Uno Así se ve pgadmin ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Conectemos nuestro pgadmin con postgresql localmente, hey hey en 4 paso:</p>
<p><strong>Paso Uno</strong></p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/pantallazo3.png"><img class="aligncenter size-full wp-image-178" title="Pantallazo" src="http://cumbredigital.wordpress.com/files/2009/11/pantallazo3.png" alt="" width="480" height="300" /></a></p>
<p><!--more--></p>
<p>Así se ve pgadmin apenas lo instalemos, nos dirigimos donde se ecuentra como un símbolo de cable de plancha jajaja y damos clic <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> , nos aparece una ventana de configuración:</p>
<p><strong>Paso Dos</strong></p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/newconection.png"><img class="aligncenter size-full wp-image-179" title="newconection" src="http://cumbredigital.wordpress.com/files/2009/11/newconection.png" alt="" width="480" height="300" /></a></p>
<p>en la ventana anterior digitados los datos correspondiente a una conexión local como sigue acontinuación:</p>
<p><strong>Paso Tres</strong></p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/dataconection.png"><img class="aligncenter size-full wp-image-180" title="dataconection" src="http://cumbredigital.wordpress.com/files/2009/11/dataconection.png" alt="" width="480" height="300" /></a></p>
<p>le quitamos donde dice guardar el password !!! por proteccion de nuestros datos.</p>
<p><strong>Paso Cuarto</strong></p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/queryconection.png"><img class="aligncenter size-full wp-image-181" title="queryconection" src="http://cumbredigital.wordpress.com/files/2009/11/queryconection.png" alt="" width="480" height="300" /></a></p>
<p>Listo ya tenemos nuestras base de datos a la vista <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Configurar Postgresql con Django]]></title>
<link>http://cumbredigital.wordpress.com/2009/11/26/configurar-postgresql-con-django/</link>
<pubDate>Thu, 26 Nov 2009 19:25:38 +0000</pubDate>
<dc:creator>jonathanorlando</dc:creator>
<guid>http://cumbredigital.wordpress.com/2009/11/26/configurar-postgresql-con-django/</guid>
<description><![CDATA[En esta entrada tratare de tocar como activar el administrador de contenido de django, esto requiere]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>En esta entrada tratare de tocar como activar el administrador de contenido de django, esto requiere activar la aplicación en el archivo de configuración del proyecto de django y crear la base de datos para esta. Después de seguir los pasos de <a href="http://cumbredigital.wordpress.com/2009/11/02/entrando-en-onda-con-django-desde-mi-ubuntu/" target="_self">entrando en onda con django</a> y <a href="http://cumbredigital.wordpress.com/2009/11/04/como-llevar-un-proyecto-creado-en-django-ha-eclipse/" target="_self">llevando un proyecto de django a  eclipse</a>, vamos a activar la aplicacion de administrador de nuestro proyecto y a configurar algunas variables de nuestro proyecto pero sin antes mirar como <a href="http://cumbredigital.wordpress.com/2009/11/26/instalar-django-en-ubuntu/" target="_self">instalar django</a>.</p>
<p>Dentro de la estructura de archivos creados con el comando:</p>
<p>django-admin startproject proyecto</p>
<p>se editan los modulos, urls y settings, dentro de urls este modulo representa una tabla de contenido de todas la paginas que generamos con python:</p>
<p>http://midominio.com/blog/</p>
<p>en nuestro urla se declara que /blog/ representa una aplicación dentro de nuestro proyecto o puede ser una vista que muestre algo de información, por ahora activamos la función de administración :</p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/urls.png"><img class="aligncenter size-full wp-image-165" title="urls" src="http://cumbredigital.wordpress.com/files/2009/11/urls.png" alt="" width="480" height="300" /></a><!--more--></p>
<p>en la linea 4 y 5 descomentamos y en la  linea 16 descomentamos la url para nuestro adminstrador. Listo ahora vamos a nuestro settings en donde configuramos algunas variables.</p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/settings.png"><img class="aligncenter size-full wp-image-167" title="settings" src="http://cumbredigital.wordpress.com/files/2009/11/settings.png" alt="" width="480" height="300" /></a></p>
<p>en la linea 7 de settings descomentamos y colocamos el administrador del proyecto o administradores, de la linea 12 a la 17 se habla del gestor de base de datos, que en esta oportunidad colocamos postgresql_psycopg2, luego el nombre de la base de datos que en mi ejemplo se llama blog, el usuario de la bd que es postgres, el password que en mi caso por prueba he colocado desarrollo, el host sera local es por eso que se coloca localhost y el puerto que es 5432 para postgresql.</p>
<p>En la linea 24 colocamos donde esta ubicada la aplicación que en nuestro caso es America/Bogota, en la linea 28 se coloca el idioma que es espaniol, es-CO, si se quiere ver mas opciones puedes seguir los enlaces que hay en la linea 20 que es la zona horaria y en la linea el unicode.</p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/pantallazo1.png"><img class="aligncenter size-full wp-image-168" title="Pantallazo" src="http://cumbredigital.wordpress.com/files/2009/11/pantallazo1.png" alt="" width="480" height="300" /></a></p>
<p>de la linea 74 a la 80 se habla de las aplicaciones que se crean para nuestro proyecto, si creamos una blog hay debe estar incluido, se dice instalado, bueno bueno instalamos es decir escribimos la aplicación de administrador al final de la lista, que en este caso es la linea 79.</p>
<p>Luego queda cuadrar la base de datos, nos dirigimos a nuestra terminal y entramos lo siguiente:</p>
<p>jonathanorlando@jonathanorlando-laptop:~/produccion$ sudo su<br />
[sudo] password for jonathanorlando:<br />
root@jonathanorlando-laptop:/home/jonathanorlando/produccion# nano /etc/postgresql/8.4/main/pg_hba.conf</p>
<p>en la lineas anteriores nos volvemos superusuario para administrar el sistema en este caso editar el archivo de postgresql.</p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/postgresql.png"><img class="aligncenter size-full wp-image-171" title="postgresql" src="http://cumbredigital.wordpress.com/files/2009/11/postgresql.png" alt="" width="480" height="300" /></a></p>
<p>al final del archivo encontramos para decirle a postgresql si debe pedir o no password, bueno en donde dice md5 le colocamos <strong>trust , </strong>menos en la ultima linea<strong>, </strong>guardamos el archivo con control + x, y reiniciamos postgresql con el comando:</p>
<p>root@jonathanorlando-laptop:/home/jonathanorlando/produccion# /etc/init.d/postgresql-8.4 restart</p>
<p>ahora en modo usuario normal le damos en terminal:</p>
<p>jonathanorlando@jonathanorlando-laptop:~/produccion$ psql -U postgres<br />
psql (8.4.1)<br />
Digite «help» para obtener ayuda.</p>
<p>postgres=#</p>
<p>en donde queda el #, escribimos</p>
<p>postgres=# ALTER USER postgres with password &#8216;nuevo&#8217;;</p>
<p>en donde nuevo es el nuevo passwdor del usuario postgres. luego de cambiar el password creamos una base de datos llamada blog de la siguiente manera:</p>
<p>postgres=# CREATE DATABASE blog;</p>
<p>si ya terminamos damos con el teclado control + d, para salir de psql y volvemos al archivo de configuración y cambiamos a como esta la imagen de arriba y reiniciamos a postgresql.</p>
<p>root@jonathanorlando-laptop:/home/jonathanorlando/produccion# /etc/init.d/postgresql-8.4 restart</p>
<p>ahora con el comando jonathanorlando@jonathanorlando-laptop:~/produccion$ psql -U postgres -W</p>
<p>podremos adminstrar postgresql en terminal, esta parte de postgresql la he tomado de <a href="http://manuelinux.info/blog/view/147/instalar-y-configurar-postgresql" target="_self">url</a>.</p>
<p>Bueno es hora de probar que funciona postgresql con django, entramos por terminal a donde se encuentra nuestro proyecto de django, estando hay le damos el comando siguiente para sincronizar nuestro proyecto con postgresql:</p>
<p><strong>jonathanorlando@jonathanorlando-laptop:~/produccion/blog$ python manage.py syncdb</strong><br />
Creating table auth_permission<br />
Creating table auth_group<br />
Creating table auth_user<br />
Creating table auth_message<br />
Creating table django_content_type<br />
Creating table django_session<br />
Creating table django_site<br />
Creating table django_admin_log</p>
<p>You just installed Django&#8217;s auth system, which means you don&#8217;t have any superusers defined.<br />
<span style="color:#ff0000;">Would you like to create one now? (yes/no): yes</span><br />
Username (Leave blank to use &#8216;jonathanorlando&#8217;): admin<br />
E-mail address: solosekenadase@gmail.com<br />
Password:<br />
Password (again):<br />
Superuser created successfully.<br />
Installing index for auth.Permission model<br />
Installing index for auth.Message model<br />
Installing index for admin.LogEntry model</p>
<p>listo las anteriores lineas deben aparecer la linea que aparece en rojo debes contestar que si para crear el usuario administrador, después de crear esto digitamos lo siguiente para correr la aplicación:</p>
<p><strong><span style="color:#ff0000;">jonathanorlando@jonathanorlando-laptop:~/produccion/blog$ python manage.py runserver 8080</span></strong><br />
Validating models&#8230;<br />
0 errors found</p>
<p>Django version 1.1.1, using settings &#8216;blog.settings&#8217;<br />
Development server is running at http://127.0.0.1:8080/<br />
Quit the server with CONTROL-C.</p>
<p>hay veces que cuando arrancamos la aplicacion nos dice el servidor de desarrollo de django que el puerto por defecto que es el 8000 se esta utilizando pues le pasamos el 8080 y tolis. Entramos a la url <strong><span style="color:#ff0000;">http://127.0.0.1:8080/ </span></strong><span style="color:#ff0000;"><span style="color:#000000;">nos aparece lo siguiente:</span></span></p>
<p><span style="color:#ff0000;"><span style="color:#000000;"><a href="http://cumbredigital.wordpress.com/files/2009/11/pantallazo2.png"><img class="aligncenter size-full wp-image-173" title="Pantallazo" src="http://cumbredigital.wordpress.com/files/2009/11/pantallazo2.png" alt="" width="480" height="300" /></a></span></span></p>
<p><span style="color:#ff0000;"><span style="color:#000000;">nos marca un erro de url, en cual se muestra que hay disponible la url ^admin/ en la cual esta corriendo el administrador de nuestra aplicacion.</span></span></p>
<p><span style="color:#ff0000;"><span style="color:#000000;"><a href="http://cumbredigital.wordpress.com/files/2009/11/admin.png"><img class="aligncenter size-full wp-image-174" title="admin" src="http://cumbredigital.wordpress.com/files/2009/11/admin.png" alt="" width="480" height="300" /></a></span></span></p>
<p><span style="color:#ff0000;"><span style="color:#000000;">que bonita esta el login <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Bueno entramos el usuario admin en mi caso y el password correspondiente, despues del login aparece lo siguiente:</span></span></p>
<p><span style="color:#ff0000;"><span style="color:#000000;"><a href="http://cumbredigital.wordpress.com/files/2009/11/admi-django.png"><img class="aligncenter size-full wp-image-175" title="admi-django" src="http://cumbredigital.wordpress.com/files/2009/11/admi-django.png" alt="" width="480" height="300" /></a></span></span></p>
<p><span style="color:#ff0000;"><span style="color:#000000;">esta herramienta es muy poderosa ya que podremos mesclar nuestras aplicaciones a esta herramienta con tan solo poco codigo, y lo mejor es que solo en python cool <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</span></span></p>
<p><span style="color:#ff0000;"><span style="color:#000000;"><br />
</span></span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Google Go vs Python vs Genie]]></title>
<link>http://charlieman.wordpress.com/2009/11/26/google-go-vs-python-vs-genie/</link>
<pubDate>Thu, 26 Nov 2009 17:40:26 +0000</pubDate>
<dc:creator>carlosz</dc:creator>
<guid>http://charlieman.wordpress.com/2009/11/26/google-go-vs-python-vs-genie/</guid>
<description><![CDATA[Un simple benchmark utilizando los 3 lenguajes para resolver un problema de números palindromes: Go ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Un simple benchmark utilizando los 3 lenguajes para resolver <a href="http://www.topcoder.com/wiki/display/tc/Sample+Problem+Statements">un problema de números palindromes</a>:</p>
<p><strong>Go</strong></p>
<pre class="brush: plain;">
package main

import (
    &#34;flag&#34;;
    &#34;fmt&#34;;
    &#34;strconv&#34;;
)

func main() {
    s := flag.Arg(0);
    n, _ := strconv.Atoi(s);

    fmt.Printf(&#34;%v\n&#34;, palindrome(n));
}

func is_palindrome(n int) bool { return n == reverse(n) }

func reverse(n int) int {
    var l int = 0;
    for n != 0 {
        l = l * 10 + n % 10;
        n = n / 10;
    }
    return l;
}

func palindrome(n int) int {
    if n &#60; 1 &#124;&#124; n &#62; 10000 {
        return -1
    }
    for !is_palindrome(n) {
        rn := reverse(n);
        n += rn;
        if n &#62; 1000000 {
            return -1
        }
    }
    return n;
}
</pre>
<p><strong>Genie</strong></p>
<pre class="brush: plain;">
[indent=4]
init
    if args.length &#60; 2
        print (&#34;Usage: %s [number]&#34;, args[0])
        return
    var i = args[1].to_int()
    print &#34;%d&#34;, palindrome(i)

def is_palindrome(n : int) : bool
    return n == reverse(n)

def reverse(n : int) : int
    var l = 0
    while n is not 0
        l = l * 10 + n % 10;
        n = n / 10;

    return l

def palindrome(n : int) : int
    if n &#60; 1 or n &#62; 10000
        return -1
    while not is_palindrome(n)
        var rn = reverse(n)
        n += rn
        if n &#62; 1000000
            return -1
    return n
</pre>
<p><strong>Python</strong></p>
<pre class="brush: python;">
#!/usr/bin/env python
import sys

def palindrome(number):
    if not 1 &#60;= number &#60;= 10000:
        return -1
    while not is_palindrome(number):
        rn = reverse(number)
        number += rn
        if number &#62; 1000000000:
            return -1
    return number

def is_palindrome(n):
    return n == reverse(str(n))

def reverse(n):
    return int(str(n)[::-1])

if __name__ == '__main__':
    if len(sys.argv) &#60; 2:
        print &#34;needs a number as argument&#34;
    else:
        print palindrome(int(sys.argv[1]))
</pre>
<p><strong>Resultados:</strong><br />
<strong>Go:</strong></p>
<pre class="brush: bash;">time ./palindrome 145
686

real    0m0.021s
user    0m0.020s
sys     0m0.004s
</pre>
<p><strong>Python</strong></p>
<pre class="brush: bash;">time ./palindrome.py 145
686

real    0m0.052s
user    0m0.048s
sys     0m0.016s
</pre>
<p><strong>Genie</strong></p>
<pre class="brush: bash;">time ./palindrome 145
686

real    0m0.004s
user    0m0.004s
sys     0m0.000s
</pre>
<p>Un claro ganador? <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Instalar django en Ubuntu ]]></title>
<link>http://cumbredigital.wordpress.com/2009/11/26/instalar-django-en-ubuntu/</link>
<pubDate>Thu, 26 Nov 2009 17:08:17 +0000</pubDate>
<dc:creator>jonathanorlando</dc:creator>
<guid>http://cumbredigital.wordpress.com/2009/11/26/instalar-django-en-ubuntu/</guid>
<description><![CDATA[El proyecto django se propone crear una herramienta para elaborar aplicaciones web de una manera rap]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>El proyecto django se propone crear una herramienta para elaborar aplicaciones web de una manera rapida codificando en python, esta herramienta se encuentra en nuestro repositorio de software dentro de Ubuntu. Procedo a instalar el software:</p>
<p>Entrar en nuestro gestor de paquetes synaptic y colocar en la búsqueda de paquetes django,  el paquete que nos interesa por ahora es python-django:</p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/django-synaptic.png"><img class="aligncenter size-full wp-image-150" title="django-synaptic" src="http://cumbredigital.wordpress.com/files/2009/11/django-synaptic.png" alt="" width="479" height="223" /></a></p>
<p><!--more--></p>
<p>seleccionamos el paquete con doble clic, luego lo otro es el gestor de base de datos postgresql lo buscamos también en nuestro synaptic:</p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/postgresql-synaptic.png"><img class="aligncenter size-full wp-image-152" title="postgresql-synaptic" src="http://cumbredigital.wordpress.com/files/2009/11/postgresql-synaptic.png" alt="" width="480" height="278" /></a></p>
<p>ahora necesitamos administrar a postgresql de modo gráfico, para esto utilizamos pgadmin:</p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/pantallazo.png"><img class="aligncenter size-full wp-image-153" title="Pantallazo" src="http://cumbredigital.wordpress.com/files/2009/11/pantallazo.png" alt="" width="480" height="300" /></a></p>
<p>en la imagen anterior se puede observar que tenemos en la parte superior pgadmin con la base de datos blog, y en la parte inferior de modo texto con psql que es la herramienta de adminstracion que viene con el paquete de postgresql, mostrando la misma base de datos. En la parte de la izquierda encontramos el paquete en nuestro gestor de paquetes synaptic.</p>
<p>Ahora queda el conector de base de datos para django, los conectores disponibles se muestran aqui:</p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/django-conector-bd.png"><img class="aligncenter size-full wp-image-157" title="django-conector-bd" src="http://cumbredigital.wordpress.com/files/2009/11/django-conector-bd.png" alt="" width="480" height="300" /></a></p>
<p>en la linea 12 encontramos los conectores de las bases de datos que soporta django. El que utilizamos en esta oportunidad sera  python-psycopg2 que veremos en synaptic de la siguiente manera:</p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/python-psycopg2.png"><img class="aligncenter size-full wp-image-158" title="python-psycopg2" src="http://cumbredigital.wordpress.com/files/2009/11/python-psycopg2.png" alt="" width="480" height="300" /></a></p>
<p>luego nos queda enviar a instalar los paquetes seleccionados. Ahora para saber si todo bien abrimos nuestra consola y escribimos lo siquiente :</p>
<p><a href="http://cumbredigital.wordpress.com/files/2009/11/prueba-django.png"><img class="aligncenter size-full wp-image-160" title="prueba-django" src="http://cumbredigital.wordpress.com/files/2009/11/prueba-django.png" alt="" width="480" height="300" /></a></p>
<p>Ahora estas listo para comenzar a tirar código.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Tutorial rápido de PHP]]></title>
<link>http://robysottini.wordpress.com/2009/11/26/tutorial-rapido-de-php/</link>
<pubDate>Thu, 26 Nov 2009 16:58:32 +0000</pubDate>
<dc:creator>robysottini</dc:creator>
<guid>http://robysottini.wordpress.com/2009/11/26/tutorial-rapido-de-php/</guid>
<description><![CDATA[Este artículo es un pequeño (relativamente) tutorial de PHP en el que intentaré explicar lo más impo]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Este artículo es un pequeño (relativamente) <strong>tutorial de PHP</strong> en el que intentaré explicar lo más importante del lenguaje de forma concisa.</p>
<h2>Introducción</h2>
<p>PHP es un lenguaje de script, multiplataforma, publicado bajo una licencia libre, que se suele utilizar del lado del servidor para crear páginas web dinámicas. A día de hoy es <a title="PHP es el tercer lenguaje más popular del mercado" href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">el tercer lenguaje más popular del mercado</a> según el índice TIOBE, sólo por detrás de Java y C.</p>
<p><!--more--></p>
<p>Creado por Rasmus Lerdorf en 1995, su nombre es (actualmente) un acrónimo recursivo de “PHP: Hypertext Preprocessor” (Preprocesador de Hipertexto PHP).</p>
<p>La última versión estable a la hora de escribir estas líneas, la cuál se puede descargar desde <a title="PHP" href="http://php.net/">su página web</a>, es la 5.3.1, de Noviembre de 2009.</p>
<p>Ya explicamos hace tiempo cómo <a title="Instalar Apache" href="http://mundogeek.net/archivos/2005/09/30/instalar-un-servidor-web-apache/">instalar Apache</a>, y cómo <a title="Instalar PHP y MySQL" href="http://mundogeek.net/archivos/2005/10/15/instalar-php-y-mysql/">instalar PHP y MySQL</a> en Windows. También es posible descargar aplicaciones que instalen las 3 herramientas rápida y fácilmente (no recomendado para entornos de producción), como <a title="Instalar Apache, PHP y MySQL en Windows" href="http://www.wampserver.com/en/">WampServer</a> o <a title="Instalar Apache, PHP y MySQL en Windows y Linux" href="http://www.apachefriends.org/es/xampp.html">XAMPP</a>.</p>
<h2>Primer programa en PHP</h2>
<p>Creemos una primera pequeña página web dinámica, que mostrará la fecha y hora actual.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>&#60;html&#62;</li>
<li>&#60;head&#62;&#60;title&#62;Fecha y hora&#60;/title&#62;&#60;/head&#62;</li>
<li>&#60;body&#62;</li>
<li>&#60;?php</li>
<li>// Esto imprime la fecha</li>
<li>echo &#8221;Hoy es &#8221;, date(&#8220;d/n/Y&#8221;);</li>
<li>echo &#8221;&#60;br/&#62;&#8221;;</li>
<li>// Y esto la hora</li>
<li>echo &#8221;Son las &#8221;, date(&#8220;h:m:s&#8221;);</li>
<li>?&#62;</li>
<li>&#60;/body&#62;</li>
</ol>
</div>
<pre>&#60;html&#62;
&#60;head&#62;&#60;title&#62;Fecha y hora&#60;/title&#62;&#60;/head&#62;
&#60;body&#62;
&#60;?php
// Esto imprime la fecha
echo "Hoy es ", date("d/n/Y");
echo "&#60;br/&#62;";
// Y esto la hora
echo "Son las ", date("h:m:s");
?&#62;
&#60;/body&#62;</pre>
<p>Además de usando la sintaxis anterior, <code>&#60;?php .... ?&#62;</code>, que es lo más común y recomendable, también se puede insertar código PHP en documentos HTML usando:</p>
<ul>
<li><code>&#60;script language="php"&#62; .... &#60;/script&#62;</code></li>
<li><code>&#60;? .... ?&#62;</code> si está activada la opción <code>short_open_tag</code> en php.ini</li>
<li><code>&#60;% .... %&#62;</code> si está activada la opción <code>asp_tags</code> en php.ini</li>
</ul>
<p>Esto no es <a title="Tutorial de Python" href="http://mundogeek.net/tutorial-python/">Python</a>: cada instrucción termina con ‘;’ (no es necesario si es la última instrucción).</p>
<p>Para los comentarios se puede utilizar:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>/* varias</li>
<li> lineas */</li>
<li></li>
<li>// una linea</li>
<li></li>
<li># una linea</li>
</ol>
</div>
<pre>/* varias
   lineas */

// una linea

# una linea</pre>
<p>Aunque no es una característica integrada en el lenguaje, para comentarios de documentación se suele utilizar <a title="phpDocumentor: The complete documentation solution for PHP" href="http://www.phpdoc.org/">PHPDoc</a>, el equivalente al JavaDoc de Java en PHP.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>/**</li>
<li> * Ejemplo de documentación de una función</li>
<li> * @param int $foo un entero cualquiera</li>
<li> */</li>
</ol>
</div>
<pre>/**
 * Ejemplo de documentación de una función
 * @param int $foo un entero cualquiera
 */</pre>
<p>Para imprimir datos por pantalla se puede usar, entre otros, <code>echo</code>, <code>print</code>, <code>printf</code> o <code>print_r</code>.</p>
<p>A <code>echo</code> se le pasa una cadena que imprimirá. No es necesario utilizar paréntesis porque no es una función. También se le puede pasar varias cadenas, separadas por comas, y este las imprimirá todas unas detrás de otra, sin dejar espacios entre ellas:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>echo &#8221;Hola &#8221;, &#8221;mundo &#8221;, &#8221;en PHP&#8221;;</li>
</ol>
</div>
<pre>echo "Hola ", "mundo ", "en PHP";</pre>
<p><code>print</code> funciona de forma similar a <code>echo</code>, pero no puede tomar varios argumentos, y devuelve un valor de retorno. Debido a esto es algo más lento que <code>echo</code>.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>print &#8221;Hola mundo&#8221;;</li>
</ol>
</div>
<pre>print "Hola mundo";</pre>
<p>A diferencia de <code>echo</code> y <code>print</code>, <code>printf</code> sí que es una función. Se comporta de manera similar a la función del mismo nombre de C, es decir, se pueden utilizar especificadores de formato. En el siguiente ejemplo <code>$nombre</code> y <code>$edad</code> serían variables con el nombre y la edad de una persona, y su valor se embebería en la cadena en las posiciones indicadas por <code>%s</code> (especificador de cadena) y <code>%d</code> (especificador de entero).</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>printf(&#8220;%s tiene %d años&#8221;, $nombre, $edad);</li>
</ol>
</div>
<pre>printf("%s tiene %d años", $nombre, $edad);</pre>
<p><code>print_r</code> es una función que podemos utilizar para la depuración. Su función es la de imprimir variables de forma legible para las personas. Por ejemplo, si le pasáramos una matriz, imprimiría sus claves y valores</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>print_r($matriz);</li>
</ol>
</div>
<pre>print_r($matriz);</pre>
<h2>Variables</h2>
<p>El nombre de las variables debe comenzar siempre con ‘$’.</p>
<p>PHP tiene tipado dinámico: al crear una variable no se especifica el tipo, sino que el intérprete de PHP lo determina en tiempo de ejecución según el contexto.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$texto = &#8221;Hola mundo&#8221;;</li>
</ol>
</div>
<pre>$texto = "Hola mundo";</pre>
<p>En PHP tenemos como tipos simples los booleanos (<code>boolean</code>), números enteros (<code>integer</code>), números en coma flotante (<code>float</code>) y cadenas (<code>string</code>). Como tipos compuestos tenemos matrices (<code>array</code>) y objetos (<code>object</code>). Además tenemos un par de tipos especiales: <code>resource</code>, enteros que se usan para referenciar recursos; y <code>NULL</code>, el tipo nulo.</p>
<p>Para obtener el tipo de una variable se puede utilizar <code>gettype($var)</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$texto = &#8221;Hola mundo&#8221;;</li>
<li>echo gettype($texto);</li>
</ol>
</div>
<pre>$texto = "Hola mundo";
echo gettype($texto);</pre>
<p>Para obtener el tipo y otra información sobre la variable, como los valores para un array o las propiedades de un objeto, se puede utilizar <code>var_dump($var)</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$texto = &#8221;Hola mundo&#8221;;</li>
<li>echo var_dump($texto);</li>
</ol>
</div>
<pre>$texto = "Hola mundo";
echo var_dump($texto);</pre>
<p>El tipo de una variable puede cambiar según el valor que almacenemos en ella.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$variable = &#8221;Hola mundo&#8221;;</li>
<li>echo gettype($variable), &#8221;&#60;br/&#62;&#8221;;</li>
<li>$variable = 22;</li>
<li>echo gettype($variable);</li>
</ol>
</div>
<pre>$variable = "Hola mundo";
echo gettype($variable), "&#60;br/&#62;";
$variable = 22;
echo gettype($variable);</pre>
<p>Además las variables tienen tipado débil, y su tipo puede cambiar según el uso que queramos hacer de ellas.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$variable = &#8221;22&#8243;;</li>
<li>echo $variable / 2;</li>
</ol>
</div>
<pre>$variable = "22";
echo $variable / 2;</pre>
<p>Para comprobar si una variable es de un cierto tipo se pueden utilizar las funciones <code>is_<em>tipo</em></code>, como <code>is_bool($var)</code>, <code>is_string($var)</code>, <code>is_object($var)</code>, <code>is_float($var)</code>…</p>
<p>Para comprobar si una variable tiene un valor asociado se puede utilizar la función <code>isset($var)</code>.</p>
<p>Para crear constantes se usa la función <code>define</code>. Al no ser variables propiamente dichas, no se utiliza el caracter $ al principio.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>define(&#8220;PI&#8221;, 3.14159);</li>
<li>echo &#8221;Pi es &#8221;, PI;</li>
</ol>
</div>
<pre>define("PI", 3.14159);
echo "Pi es ", PI;</pre>
<p>Como hay un carácter que identifica las variables, podemos introducirlas directamente en una cadena, y PHP la sustituirá por su valor. No tenemos por qué hacer algo como</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$usuario = &#8221;Juan&#8221;;</li>
<li>echo &#8221;Hola &#8221;, $usuario&#8221;;</li>
</ol>
</div>
<pre>$usuario = "Juan";
echo "Hola ", $usuario";</pre>
<p>sino que podríamos hacer simplemente</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$usuario = &#8221;Juan&#8221;;</li>
<li>echo &#8221;Hola $usuario&#8221;;</li>
</ol>
</div>
<pre>$usuario = "Juan";
echo "Hola $usuario";</pre>
<p>Si necesitamos indicar el final del nombre de la variable explícitamente se pueden utilizar llaves. En el siguiente código, por ejemplo, si no utilizáramos llaves el intérprete buscaría una variable de nombre <code>$productos</code>.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$producto = &#8221;Donut&#8221;;</li>
<li>echo &#8221;Le gustan los {$producto}s&#8221;;</li>
</ol>
</div>
<pre>$producto = "Donut";
echo "Le gustan los {$producto}s";</pre>
<p>También se puede utilizar la misma sintaxis para hacer cosas más complejas, como llamar a funciones dentro de la cadena:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>echo &#8221;Ha comprado {$objeto.contar()} platos&#8221;;</li>
</ol>
</div>
<pre>echo "Ha comprado {$objeto.contar()} platos";</pre>
<h3>Operadores</h3>
<p>Los operadores aritméticos son la suma (+), resta (-), multiplicación (*), división (/) y módulo (%).</p>
<p>Operadores de comparación</p>
<table border="1" cellspacing="0" width="100%">
<tbody>
<tr>
<th>Operador</th>
<th>Descripción</th>
</tr>
<tr>
<td>==</td>
<td>true si ambos operandos son iguales</td>
</tr>
<tr>
<td>!=</td>
<td>true si ambos operandos son distintos</td>
</tr>
<tr>
<td>===</td>
<td>true si ambos operandos son iguales, no sólo en valor, sino también en tipo</td>
</tr>
<tr>
<td>!==</td>
<td>true si ambos operandos son distintos, en valor o tipo</td>
</tr>
<tr>
<td>&#60;</td>
<td>true si el primer operando es menor que el segundo</td>
</tr>
<tr>
<td>&#62;</td>
<td>true si el primer operando es mayor que el segundo</td>
</tr>
<tr>
<td>&#60;=</td>
<td>true si el primer operando es menor o igual que el segundo</td>
</tr>
<tr>
<td>&#62;=</td>
<td>true si el primer operando es mayor o igual que el segundo</td>
</tr>
</tbody>
</table>
<p>Operadores lógicos</p>
<table border="1" cellspacing="0" width="100%">
<tbody>
<tr>
<th>Operador</th>
<th>Descripción</th>
</tr>
<tr>
<td>and / &#38;&#38;</td>
<td>true si se cumplen ambas condiciones</td>
</tr>
<tr>
<td>or / &#124;&#124;</td>
<td>true si se cumple una de las condiciones</td>
</tr>
<tr>
<td>xor</td>
<td>true si se cumple sólo una de las condiciones</td>
</tr>
<tr>
<td>!</td>
<td>true si no se cumple la condición</td>
</tr>
</tbody>
</table>
<h3>Booleanos</h3>
<p>Las variables de tipo booleano pueden tener como valor <code>true</code> o <code>false</code>. Son equivalentes a <code>false</code> el 0, una cadena vacía, un array vacío y <code>NULL</code>.</p>
<h3>Arrays</h3>
<p>Para crear un array se utiliza la función del mismo nombre.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$codigos = array(0 =&#62; &#8221;España&#8221;, 1 =&#62; &#8221;Italia&#8221;);</li>
</ol>
</div>
<pre>$codigos = array(0 =&#62; "España", 1 =&#62; "Italia");</pre>
<p>Como clave se pueden usar números, como una matriz normal, o cadenas, para crear un diccionario o array asociativo.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$codigos = array(&#8220;ES&#8221; =&#62; &#8221;España&#8221;, &#8221;IT&#8221; =&#62; &#8221;Italia&#8221;);</li>
</ol>
</div>
<pre>$codigos = array("ES" =&#62; "España", "IT" =&#62; "Italia");</pre>
<p>Si no se especifica una clave se usa el último índice + 1, o bien 0 si no se ha especificado ningún índice aún:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$codigos = array(&#8220;España&#8221;, &#8221;Italia&#8221;);</li>
<li>$dias = array(1 =&#62; &#8221;Lunes&#8221;, &#8221;Martes&#8221;, &#8221;Miércoles&#8221;);</li>
</ol>
</div>
<pre>$codigos = array("España", "Italia");
$dias = array(1 =&#62; "Lunes", "Martes", "Miércoles");</pre>
<p>También se puede crear una matriz usando los corchetes, elemento por elemento:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$matriz[0] = &#8221;Hola &#8221;;</li>
<li>$matriz[1] = &#8221;mundo&#8221;;</li>
</ol>
</div>
<pre>$matriz[0] = "Hola ";
$matriz[1] = "mundo";</pre>
<p>Si no se especifica la clave ocurre lo mismo que con la función <code>array</code>; se usa el último índice + 1, o 0 si no se ha especificado ningún índice todavía:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$matriz[] = &#8221;Hola &#8221;;</li>
<li>$matriz[] = &#8221;mundo&#8221;;</li>
</ol>
</div>
<pre>$matriz[] = "Hola ";
$matriz[] = "mundo";</pre>
<p>Para modificar un valor, también se usan los corchetes:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$matriz[0] = &#8221;Hello &#8221;;</li>
</ol>
</div>
<pre>$matriz[0] = "Hello ";</pre>
<p>Para eliminar un par clave-valor se puede usar la función <code>unset($var)</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>unset($matriz[0]);</li>
</ol>
</div>
<pre>unset($matriz[0]);</pre>
<p><code>unset</code> es una función que sirve para eliminar una variable dada, así que podríamos eliminar la propia matriz haciendo</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>unset($matriz);</li>
</ol>
</div>
<pre>unset($matriz);</pre>
<p>Para contar el número de elementos en el array se puede usar la función <code>count($var)</code>, que también se puede usar con los objetos para contar el número de propiedades que tiene.</p>
<p>Para ordenar los elementos de la matriz se puede usar</p>
<ul>
<li><code>sort($array)</code></li>
<li><code>rsort($array)</code>, ordena en orden inverso</li>
<li><code>array_multisort($array)</code>, para arrays multidimensionales</li>
<li><code>asort($array)</code>, ordena manteniendo la asociación de índices</li>
<li><code>arsort($array)</code>, ordena en orden inverso, manteniendo la asociación de índices</li>
<li><code>ksort($array)</code>, ordena por clave</li>
<li><code>krsort($array)</code>, ordena por clave en orden inverso</li>
<li><code>natsort($array)</code>, ordena usando un algoritmo de “orden natural”</li>
<li><code>uasort($array)</code>, ordena usando una función definida por el usuario, mateniendo la asociación de índices</li>
<li><code>uksort($array)</code>, ordena usando una función definida por el usuario usando las claves</li>
<li><code>usort($array)</code>, ordena usando una función definida por el usuario</li>
</ul>
<p>Para comprobar si un determinado elemento está dentro de un array se usa <code>in_array</code>. PHP indexa todos los valores de los arrays, así que es mucho más rápido usar esta función que un bucle que compruebe uno por uno.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>in_array(&#8220;pepe&#8221;, $usuarios);</li>
</ol>
</div>
<pre>in_array("pepe", $usuarios);</pre>
<h3>Cadenas</h3>
<p>Las cadenas se pueden delimitar de 4 formas. Con dobles comillas, en cuyo caso se pueden utilizar caracteres especiales, como \n o \t, y se sustituyen las variables por sus valores:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$usuario = &#8221;Juan&#8221;;</li>
<li>$mensaje = &#8221;&#60;pre&#62;Hola\n$usuario&#60;/pre&#62;&#8221;;</li>
<li>echo $mensaje;</li>
</ol>
</div>
<pre>$usuario = "Juan";
$mensaje = "&#60;pre&#62;Hola\n$usuario&#60;/pre&#62;";
echo $mensaje;</pre>
<p>comillas simples, en las que se NO se pueden utilizar caracteres especiales, ni se sustituyen las variables por sus valores. Debido a esto dan un rendimiento marginalmente mejor que las dobles comillas:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$usuario = &#8221;Juan&#8221;;</li>
<li>$mensaje = &#8217;&#60;pre&#62;Hola\n$usuario&#60;/pre&#62;&#8217;;</li>
<li>echo $mensaje;</li>
</ol>
</div>
<pre>$usuario = "Juan";
$mensaje = '&#60;pre&#62;Hola\n$usuario&#60;/pre&#62;';
echo $mensaje;</pre>
<p>sintaxis heredoc, en las que, como en las dobles comillas, se pueden utilizar caracteres especiales y se sustituyen las variables por sus valores. No se necesitan escapar las comillas si queremos imprimirlas, y se puede escribir el texto en varias líneas:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$mensaje = &#60;&#60;&#60; IDENTIFICADOR</li>
<li>Ejemplo de cadena</li>
<li>que ocupa</li>
<li>varias líneas</li>
<li>IDENTIFICADOR;</li>
<li>echo $mensaje;</li>
</ol>
</div>
<pre>$mensaje = &#60;&#60;&#60; IDENTIFICADOR
Ejemplo de cadena
que ocupa
varias líneas
IDENTIFICADOR;
echo $mensaje;</pre>
<p>sintaxis nowdoc, similar a heredoc, pero no se sustituyen las variables por sus valores:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$mensaje = &#60;&#60;&#60; &#8217;IDENTIFICADOR&#8217;</li>
<li>Ejemplo de cadena</li>
<li>que ocupa</li>
<li>varias líneas</li>
<li>IDENTIFICADOR;</li>
<li>echo $mensaje;</li>
</ol>
</div>
<pre>$mensaje = &#60;&#60;&#60; 'IDENTIFICADOR'
Ejemplo de cadena
que ocupa
varias líneas
IDENTIFICADOR;
echo $mensaje;</pre>
<p>Una vez creada se puede acceder a posiciones de la cadena como si de una matriz se tratara</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$cadena = &#8221;Hola mundo&#8221;;</li>
<li>echo $cadena[5];</li>
</ol>
</div>
<pre>$cadena = "Hola mundo";
echo $cadena[5];</pre>
<p>e incluso modificar posiciones de igual forma</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$cadena = &#8221;Hola amigo&#8221;;</li>
<li>$cadena[9] = &#8221;a&#8221;;</li>
<li>echo $cadena;</li>
</ol>
</div>
<pre>$cadena = "Hola amigo";
$cadena[9] = "a";
echo $cadena;</pre>
<p>Se pueden concatenar cadenas con el operador ‘.’:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$conc = &#8221;Hola &#8221; . &#8221;mundo&#8221;;</li>
<li>echo $conc;</li>
</ol>
</div>
<pre>$conc = "Hola " . "mundo";
echo $conc;</pre>
<p>Para obtener el número de caracteres que tiene una cadena se utiliza la función <code>strlen($cadena)</code>.</p>
<p>Para obtener parte de una cadena se utiliza la función <code>substr($cadena, $inicio<em>, $tamanyo</em>)</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$cadena = &#8221;Hola mundo&#8221;;</li>
<li>echo substr($cadena, 5, 3);</li>
</ol>
</div>
<pre>$cadena = "Hola mundo";
echo substr($cadena, 5, 3);</pre>
<p>Para reemplazar una subcadena por otra se puede utilizar <code>substr_replace($cadena, $reemplazo, $inicio<em>, $tamanyo</em>)</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$cadena = &#8221;Hola mundo&#8221;;</li>
<li>echo substr_replace($cadena, &#8221;Arman&#8221;, 5, 3);</li>
</ol>
</div>
<pre>$cadena = "Hola mundo";
echo substr_replace($cadena, "Arman", 5, 3);</pre>
<p>Para reemplazar todas las ocurrencias de una cadena por otra se puede utilizar la función <code>str_replace($subcadena, $reemplazo, $cadena<em>, &#38;$ocurrencias</em>)</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$cadena = &#8221;Hola mundo&#8221;;</li>
<li>echo str_replace(&#8220;o&#8221;, &#8221;a&#8221;, $cadena);</li>
</ol>
</div>
<pre>$cadena = "Hola mundo";
echo str_replace("o", "a", $cadena);</pre>
<p>Se puede dividir una cadena en partes utilizando un cierto delimitador con la función <code>explode($delimitador, $cadena<em>, $limite</em>)</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$cadena = &#8221;Hola mundo&#8221;;</li>
<li>$palabras = explode(&#8220; &#8221;, $cadena);</li>
<li>print_r($palabras);</li>
</ol>
</div>
<pre>$cadena = "Hola mundo";
$palabras = explode(" ", $cadena);
print_r($palabras);</pre>
<p>Para buscar una subcadena dentro de la cadena se puede utilizar la función <code>strpos($cadena, $subcadena<em>, $offset</em>)</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$cadena = &#8221;Hola mundo&#8221;;</li>
<li>$subcadena = &#8221;m&#8221;;</li>
<li>$posicion = strpos($cadena, $subcadena);</li>
</ol>
</div>
<pre>$cadena = "Hola mundo";
$subcadena = "m";
$posicion = strpos($cadena, $subcadena);</pre>
<h2>Control de flujo</h2>
<h3>Condicionales</h3>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>if ($condicion) {</li>
<li> echo &#8221;Se cumple la primera condición&#8221;;</li>
<li>} elseif ($condicion2) {</li>
<li> echo &#8221;No se cumple la primera condición, pero sí la segunda&#8221;;</li>
<li>else {</li>
<li> echo &#8221;No se cumple ninguna de las 2 condiciones&#8221;;</li>
<li>}</li>
</ol>
</div>
<pre>if ($condicion) {
    echo "Se cumple la primera condición";
} elseif ($condicion2) {
    echo "No se cumple la primera condición, pero sí la segunda";
else {
    echo "No se cumple ninguna de las 2 condiciones";
}</pre>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>switch($usuario) {</li>
<li> case &#8221;admin&#8221;:</li>
<li> echo &#8221;Bienvenido Dr. Falken&#8221;;</li>
<li> break;</li>
<li> case &#8221;zootropo&#8221;:</li>
<li> echo &#8221;Hola Raúl&#8221;;</li>
<li> break;</li>
<li> default:</li>
<li> echo &#8221;Lo siento Dave, me temo que no puedo hacer eso&#8221;;</li>
<li> break;</li>
<li>}</li>
</ol>
</div>
<pre>switch($usuario) {
    case "admin":
        echo "Bienvenido Dr. Falken";
        break;
    case "zootropo":
        echo "Hola Raúl";
        break;
    default:
        echo "Lo siento Dave, me temo que no puedo hacer eso";
        break;
}</pre>
<h3>Bucles</h3>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>for ($contador = 0; $contador &#60; 10; $contador++) {</li>
<li> echo &#8221;Contador vale $contador&#60;br/&#62;&#8221;;</li>
<li>}</li>
</ol>
</div>
<pre>for ($contador = 0; $contador &#60; 10; $contador++) {
    echo "Contador vale $contador&#60;br/&#62;";
}</pre>
<p>Para recorrer los valores de un array es útil la construcción <code>foreach</code>, que recorre cada valor de la matriz uno por uno, incluidos los valores cuya clave asociada no es un número</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>foreach ($_SERVER as $var){</li>
<li> echo &#8221;$var&#60;br/&#62;&#60;br/&#62;&#8221;;</li>
<li>}</li>
</ol>
</div>
<pre>foreach ($_SERVER as $var){
    echo "$var&#60;br/&#62;&#60;br/&#62;";
}</pre>
<p>También se puede hacer que nos de tanto la clave como el valor:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>foreach ($_SERVER as $key =&#62; $var){</li>
<li> echo &#8221;&#60;strong&#62;$key&#60;/strong&#62; = $var&#60;br/&#62;&#60;br/&#62;&#8221;;</li>
<li>}</li>
</ol>
</div>
<pre>foreach ($_SERVER as $key =&#62; $var){
    echo "&#60;strong&#62;$key&#60;/strong&#62; = $var&#60;br/&#62;&#60;br/&#62;";
}</pre>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$contador = 0;</li>
<li>while ($contador &#60;= 10) {</li>
<li> echo &#8221;Contador vale $contador&#60;br/&#62;&#8221;;</li>
<li> $contador++;</li>
<li>}</li>
</ol>
</div>
<pre>$contador = 0;
while ($contador &#60;= 10) {
    echo "Contador vale $contador&#60;br/&#62;";
    $contador++;
}</pre>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$contador = -1;</li>
<li>do {</li>
<li> echo &#8221;Contador vale $contador&#60;br/&#62;&#8221;;</li>
<li> $contador++;</li>
<li>} while ($contador &#60;= 10);</li>
</ol>
</div>
<pre>$contador = -1;
do {
    echo "Contador vale $contador&#60;br/&#62;";
    $contador++;
} while ($contador &#60;= 10);</pre>
<p>Se puede usar <code>continue</code> para continuar con la próxima iteración del bucle y <code>break</code> para salir del bucle. Una curiosidad es que se puede usar <code>break 2</code>, por ejemplo, y eso haría que se saliera de dos bucles que estuvieran uno dentro del otro.</p>
<h2>Funciones</h2>
<p>La palabra clave para definir una función en PHP es <code>function</code>.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>function saludar() {</li>
<li> echo &#8221;Hola&#8221;;</li>
<li>}</li>
</ol>
</div>
<pre>function saludar() {
  echo "Hola";
}</pre>
<p>Para devolver un valor se utiliza <code>return</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>function obtenerCuadrado($numero) {</li>
<li> return $numero * $numero;</li>
<li>}</li>
</ol>
</div>
<pre>function obtenerCuadrado($numero) {
  return $numero * $numero;
}</pre>
<p>Por defecto los parámetros de la función se pasan por valor. Para pasarlos por referencia se añade &#38; antes del nombre de la variable en la lista de argumentos:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>function obtenerCuadrado(&#38;$numero) {</li>
<li> $numero = $numero * $numero;</li>
<li>}</li>
<li></li>
<li>$valor = 4;</li>
<li>obtenerCuadrado($valor);</li>
<li>echo $valor;</li>
</ol>
</div>
<pre>function obtenerCuadrado(&#38;$numero) {
    $numero = $numero * $numero;
}

$valor = 4;
obtenerCuadrado($valor);
echo $valor;</pre>
<p>Se puede especificar valores por defecto para argumentos con la sintaxis:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>function saludar($nombre=&#8221;Raul&#8221;) {</li>
<li> echo &#8221;Hola $nombre&#8221;;</li>
<li>}</li>
</ol>
</div>
<pre>function saludar($nombre="Raul") {
    echo "Hola $nombre";
}</pre>
<p>Para crear funciones con un número de parámetros variable se deja la lista de argumentos vacía y se usan las funciones <code>func_get_args()</code> para obtener una lista de los parámetros pasados, <code>func_num_args()</code> para obtener el número de parámetros y <code>func_get_arg($num_argumento)</code> para obtener un parámetro a partir de su índice.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>function sumar() {</li>
<li> $suma = 0;</li>
<li> foreach(func_get_args() as $param)</li>
<li> $suma += $param;</li>
<li> return $suma;</li>
<li>}</li>
</ol>
</div>
<pre>function sumar() {
    $suma = 0;
    foreach(func_get_args() as $param)
        $suma += $param;
    return $suma;
}</pre>
<p>PHP posee características de los lenguajes funcionales: se puede utilizar las funciones como si de otro tipo de variable cualquiera se tratara.</p>
<p>También se pueden crear funciones anónimas:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$lambda = function($num1, $num2){ return $num1 + $num2;};</li>
<li>echo $lambda(1, 2);</li>
</ol>
</div>
<pre>$lambda = function($num1, $num2){ return $num1 + $num2;};
echo $lambda(1, 2);</pre>
<h2>Orientación a objetos</h2>
<p>Una clase se declara con la palabra clave <code>class</code> seguida del nombre de la clase.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>class MiClase {</li>
<li>}</li>
</ol>
</div>
<pre>class MiClase {
}</pre>
<p>El constructor es una función con nombre <code>__construct()</code>, y el destructor, <code>__destruct</code>.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>class MiClase {</li>
<li> function __construct() {</li>
<li> echo &#8221;Estamos creando un objeto de tipo MiClase&#60;br/&#62;&#8221;;</li>
<li> }</li>
<li>}</li>
</ol>
</div>
<pre>class MiClase {
  function __construct() {
    echo "Estamos creando un objeto de tipo MiClase&#60;br/&#62;";
  }
}</pre>
<p>Para instanciar un nuevo objeto a partir de una clase se usa la sentencia <code>new</code>.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$objeto = new MiClase();</li>
<li>$objeto2 = new MiClase;</li>
</ol>
</div>
<pre>$objeto = new MiClase();
$objeto2 = new MiClase;</pre>
<p>Para acceder a las propiedades y métodos se usa “-&#62;” en lugar del típico “.”</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>class MiClase {</li>
<li> function __construct() {</li>
<li> echo &#8221;Dentro del constructor&#60;br/&#62;&#8221;;</li>
<li> }</li>
<li></li>
<li> function saludar() {</li>
<li> echo &#8221;Hola&#60;br/&#62;&#8221;;</li>
<li> }</li>
<li>}</li>
<li>$objeto = new MiClase();</li>
<li>$objeto-&#62;saludar();</li>
</ol>
</div>
<pre>class MiClase {
  function __construct() {
    echo "Dentro del constructor&#60;br/&#62;";
  }

  function saludar() {
    echo "Hola&#60;br/&#62;";
  }
}
$objeto = new MiClase();
$objeto-&#62;saludar();</pre>
<p>Hay 3 modificadores de acceso: <code>public</code> (por defecto), <code>protected</code> y <code>private</code>.</p>
<p><code>$this</code> es el equivalente al <code>this</code> de Java o el <code>self</code> de Python.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>class Persona {</li>
<li> function __construct($nombre) {</li>
<li> $this-&#62;nombre = $nombre;</li>
<li> }</li>
<li>}</li>
<li></li>
<li>$persona = new Persona(&#8220;Juan&#8221;);</li>
<li>echo $persona-&#62;nombre;</li>
</ol>
</div>
<pre>class Persona {
    function __construct($nombre) {
        $this-&#62;nombre = $nombre;
    }
}

$persona = new Persona("Juan");
echo $persona-&#62;nombre;</pre>
<p>Las propiedades y métodos estáticos se crean con la palabra clave <code>static</code>. Una peculiaridad es que para acceder a los miembros estáticos se utiliza la sintaxis <code>$objeto::$miembro</code>, y no <code>$objeto-&#62;miembro</code>. Además se utiliza <code>self</code> en lugar de <code>$this</code>.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>class Persona {</li>
<li> public static $contador = 0;</li>
<li></li>
<li> function __construct($nombre) {</li>
<li> $this-&#62;nombre = $nombre;</li>
<li> self::$contador++;</li>
<li> }</li>
<li>}</li>
<li>$persona = new Persona(&#8220;Juan&#8221;);</li>
<li>echo $persona::$contador, &#8221;&#60;br/&#62;&#8221;;</li>
<li></li>
<li>$persona = new Persona(&#8220;Pepe&#8221;);</li>
<li>echo $persona::$contador, &#8221;&#60;br/&#62;&#8221;;</li>
<li></li>
<li>echo Persona::$contador, &#8221;&#60;br/&#62;&#8221;;</li>
</ol>
</div>
<pre>class Persona {
  public static $contador = 0;

  function __construct($nombre) {
      $this-&#62;nombre = $nombre;
      self::$contador++;
  }
}
$persona = new Persona("Juan");
echo $persona::$contador, "&#60;br/&#62;";

$persona = new Persona("Pepe");
echo $persona::$contador, "&#60;br/&#62;";

echo Persona::$contador, "&#60;br/&#62;";</pre>
<p>Para heredar de otra clase se usa la palabra clave <code>extends</code>. PHP no soporta la herencia múltiple.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>class Empleado extends Persona {</li>
<li>}</li>
</ol>
</div>
<pre>class Empleado extends Persona {
}</pre>
<h2>Tratamiento de errores</h2>
<p>En PHP hay dos sistemas de notificación de errores: excepciones, como en Java o Python, y el sistema de reporte de errores del lenguaje. No es muy común ver el uso de excepciones en el codigo PHP, sólo se utiliza en el código más moderno que hace uso de la orientación a objetos.</p>
<p>La captura de excepciones tiene este aspecto:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>function dividir($num1, $num2) {</li>
<li> if($num2 == 0)</li>
<li> throw new Exception(&#8216;No se puede dividir entre 0&#8242;);</li>
<li> else</li>
<li> return $num1 / $num2;</li>
<li>}</li>
<li></li>
<li>try {</li>
<li> dividir(5, 0);</li>
<li>} catch (Exception $e) {</li>
<li> echo &#8217;Ocurrió una excepción: &#8217;,  $e-&#62;getMessage(), &#8221;\n&#8221;;</li>
<li>}</li>
</ol>
</div>
<pre>function dividir($num1, $num2) {
  if($num2 == 0)
    throw new Exception('No se puede dividir entre 0');
  else
    return $num1 / $num2;
}

try {
    dividir(5, 0);
} catch (Exception $e) {
    echo 'Ocurrió una excepción: ',  $e-&#62;getMessage(), "\n";
}</pre>
<p>En el caso de los errores, podemos lanzar los nuestros propios usando la función <code>trigger_error($mensaje, $tipo)</code>. El tipo de error puede ser <code>E_USER_ERROR</code>, <code>E_USER_WARNING</code> o <code>E_USER_NOTICE</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>trigger_error(&#8220;No se pudo conectar a la base de datos&#8221;, E_USER_ERROR);</li>
</ol>
</div>
<pre>trigger_error("No se pudo conectar a la base de datos", E_USER_ERROR);</pre>
<p>También podemos definir nuestro propio manejador para tratar nosotros mismos los errores, en lugar de PHP, utilizando la función <code>set_error_handler</code>.</p>
<p>En desarrollo nos interesa mostrar los errores y avisos de PHP en pantalla. En producción se debería modificar la opción <code>display_errors</code> de php.ini y ponerla a <code>Off</code> para deshabilitarlo. La opción <code>error_reporting</code> permite configurar qué tipo de errores queremos mostrar.</p>
<p>Existe un operador que permite que una cierta sentencia de código no genere errores, <code>@</code>, aunque su uso no está aconsejado.</p>
<h2>PHP y MySQL</h2>
<p>La mejor forma de utilizar MySQL desde PHP es mediante la interfaz orientada a objetos de la extensión mysqli. Si no estamos seguros de si vamos a tener que cambiar de base de datos también podemos utilizar la extensión PDO (PHP Data Objects), una capa de abstracción incluida por defecto desde PHP 5.1</p>
<p>Primero creamos el objeto correspondiente con <code>new mysqli($host, $usuario, $password, $bbdd)</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$mysqli = new mysqli(&#8220;localhost&#8221;, &#8221;root&#8221;, &#8221;mipassword&#8221;, &#8221;mibbdd&#8221;);</li>
</ol>
</div>
<pre>$mysqli = new mysqli("localhost", "root", "mipassword", "mibbdd");</pre>
<p>Una vez hecho esto podemos comprobar si ha habido algún error mediante la propiedad <code>connect_error</code>. Este propiedad contiene una cadena describiendo el error que se ha producido, o una cadena vacía si no hubo ningún error.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>if (mysqli_connect_errno())</li>
<li> exit(&#8220;Se produjo un error: &#8221;, mysqli_connect_error());</li>
</ol>
</div>
<pre>if (mysqli_connect_errno())
    exit("Se produjo un error: ", mysqli_connect_error());</pre>
<p>Una vez abierta la conexión podemos comenzar a realizar consultas utilizando el método <code>query</code>. Este devuelve <code>true</code> si se llevó a cabo la consulta correctamente.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>if ($mysqli-&#62;query(&#8220;CREATE TABLE Personas(id int, nombre varchar(30))&#8221;)) {</li>
<li> echo &#8221;Tabla personas creada&#8221;;</li>
<li>} else {</li>
<li> echo &#8221;Error al crear la tabla personas&#8221;;</li>
<li>}</li>
</ol>
</div>
<pre>if ($mysqli-&#62;query("CREATE TABLE Personas(id int, nombre varchar(30))")) {
    echo "Tabla personas creada";
} else {
  echo "Error al crear la tabla personas";
}</pre>
<p>En las consultas que modifican tuplas el número de tuplas afectadas se almacena en la propiedad <code>affected_rows</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$mysqli-&#62;query(&#8220;UPDATE Empleados SET prima=2000 WHERE ventas &#62; 5000&#8243;);</li>
<li>echo &#8221;Primas modificadas: &#8221;, $mysqli-&#62;affected_rows;</li>
</ol>
</div>
<pre>$mysqli-&#62;query("UPDATE Empleados SET prima=2000 WHERE ventas &#62; 5000");
echo "Primas modificadas: ", $mysqli-&#62;affected_rows;</pre>
<p>Para recorrer las tuplas devueltas por un <code>SELECT</code> haríamos algo así</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>if ($resultado = $mysqli-&#62;query(&#8220;SELECT * FROM Empleados&#8221;)) {</li>
<li> while($empleado = $resultado-&#62;fetch_object()) {</li>
<li> printf(&#8220;%s %s&#60;br/&#62;&#8221;, $empleado-&#62;Nombre, $empleado-&#62;Apellidos);</li>
<li> }</li>
<li>}</li>
</ol>
</div>
<pre>if ($resultado = $mysqli-&#62;query("SELECT * FROM Empleados")) {
  while($empleado = $resultado-&#62;fetch_object()) {
    printf("%s %s&#60;br/&#62;", $empleado-&#62;Nombre, $empleado-&#62;Apellidos);
  }
}</pre>
<p>Al finalizar se debe cerrar la conexión utilizando el método <code>close()</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$mysqli-&#62;close()</li>
</ol>
</div>
<pre>$mysqli-&#62;close()</pre>
<p>Para evitar ciertos ataques de SQL injection es conveniente pasar las cadenas que vengan del usuario por el método <code>mysqli::escape_string($cadena)</code>, para escapar los caracteres especiales, o bien utilizar prepared staments.</p>
<p>Para crear prepared staments se utilizar el método <code>mysqli-&#62;prepare($consulta)</code>, después se llama al método <code>bind_param</code> del objeto stament creado, para introducir los valores correspondientes en los placeholders y, después, <code>execute()</code> para ejecutar la consulta. Por último se llama al método <code>close</code> para cerar el stament</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>if ($consulta = $mysqli-&#62;prepare(&#8220;SELECT a FROM b&#8221;)) {</li>
<li> $consulta-&#62;bind_param($campo, $tabla);</li>
<li> $consulta-&#62;execute();</li>
<li> $consulta-&#62;close();</li>
<li>}</li>
</ol>
</div>
<pre>if ($consulta = $mysqli-&#62;prepare("SELECT a FROM b")) {
  $consulta-&#62;bind_param($campo, $tabla);
  $consulta-&#62;execute();
  $consulta-&#62;close();
}</pre>
<p>Si necesitas más información sobre MySQL en sí, puedes consultar nuestro <a title="Tutorial de MySQL" href="http://mundogeek.net/archivos/2009/02/16/mysql/">Tutorial de MySQL</a>.</p>
<h2>Formularios</h2>
<p>Al enviar un formulario, si se utiliza el método POST, el valor de cada campo rellenado por el usuario se guardará en una matriz asociativa de nombre <code>$_POST</code>. Si se utiliza GET, se almacenará en la matriz <code>$_GET</code>. Las claves de esta matriz asociativa se tomarán del atributo <code>name</code> de cada campo del formulario.</p>
<p>Si no nos importa el origen de la petición, también se puede usar <code>$_REQUEST["nombre"]</code>, que es una mezcla de la información de <code>$_GET</code>, <code>$_POST</code> y <code>$_COOKIE</code> (efectivamente, un array con los valores de las cookies)</p>
<p>Para un select, que tiene varios valores, el valor del atributo <code>name</code> debe acabar con [], como una matriz. PHP creará una matriz con este nombre, que contendrá los valores de los atributos <code>name</code> de las opciones seleccionadas.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>&#60;select name=&#8221;languages[]&#8220;&#62;</li>
<li> &#60;input name=&#8221;c&#8221;&#62;C&#60;/input&#62;</li>
<li> &#60;input name=&#8221;c++&#8221;&#62;C++&#60;/input&#62;</li>
<li> &#60;input name=&#8221;php&#8221;&#62;PHP&#60;/input&#62;</li>
<li> &#60;input name=&#8221;perl&#8221;&#62;Perl&#60;/input&#62;</li>
<li>&#60;/select&#62;</li>
</ol>
</div>
<pre>&#60;select name="languages[]"&#62;
    &#60;input name="c"&#62;C&#60;/input&#62;
    &#60;input name="c++"&#62;C++&#60;/input&#62;
    &#60;input name="php"&#62;PHP&#60;/input&#62;
    &#60;input name="perl"&#62;Perl&#60;/input&#62;
&#60;/select&#62;</pre>
<p><code>$_SERVER['PHP_SELF']</code> contiene la URL del script actual. Puede ser útil como valor para el atributo <code>action</code> del formulario.</p>
<p>Si la entrada del usuario se va a mostrar en algún lugar del sitio, para evitar vulnerabilidades de XSS, este texto debería pasar antes por la función <code>htmlspecialchars($cadena)</code>, que convierte a sus entidades HTML correspondientes los caracteres especiales “, &#60;, &#62;, &#38; y, opcionalmente, ‘, si pasamos como segundo argumento a la función la constante <code>ENT_QUOTES</code>.</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>echo &#8217;Hola &#8217;, htmlspecialchars($_POST['usuario']);</li>
</ol>
</div>
<pre>echo 'Hola ', htmlspecialchars($_POST['usuario']);</pre>
<p>Si el texto se va a utilizar en un atributo de una etiqueta HTML hay que asegurarse de que los valores de los atributos estén entre comillas, y que el tipo de comillas utilizado esté codificado como entidades HTML en la cadena.</p>
<p>También hay que tener cuidado con la codificación de caracteres. Si el atacante utilizara un texto codificado en UTF-7, <code>htmlspecialchars</code> no reemplazaría nada, y si no especificamos la codificación del documento, y el atacante engaña al navegador para hacerle pensar que UTF-7 es la verdadera codificación del archivo, nuestro filtrado no habrá servido de nada. Podemos especificar la codificación de caracteres con una etiqueta meta o usando la cabecera Content-Type:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>header(&#8216;Content-Type: text/html; charset=UTF-8&#8242;);</li>
</ol>
</div>
<pre>header('Content-Type: text/html; charset=UTF-8');</pre>
<h2>Cookies</h2>
<p>Para crear cookies usamos <code>setcookie($nombre, $valor<em>, $expiracion, $ruta, $host, $https</em>)</code></p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>// Expira 3600 segundos después de haberse creado</li>
<li>setcookie(&#8216;usuario&#8217;, &#8217;raul&#8217;, time() + 3600);</li>
<li>setcookie(&#8216;fondo&#8217;, &#8217;#000000&#8242;);</li>
</ol>
</div>
<pre>// Expira 3600 segundos después de haberse creado
setcookie('usuario', 'raul', time() + 3600);
setcookie('fondo', '#000000');</pre>
<p>A las cookies se accede a través de la matriz superglobal <code>$_COOKIE</code>:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>echo &#8217;Bienvenido &#8217;, $_COOKIE['usuario'];</li>
</ol>
</div>
<pre>echo 'Bienvenido ', $_COOKIE['usuario'];</pre>
<h2>Sesiones</h2>
<p>Para crear una sesión se llama a la función <code>session_start()</code>, que debe ser la primera sentencia PHP de la página.</p>
<p>Para almacenar datos en la sesión se puede utilizar la matriz superglobal <code>$_SESSION</code> directamente:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>$_SESSION['usuario'] = &#8217;raul&#8217;;</li>
</ol>
</div>
<pre>$_SESSION['usuario'] = 'raul';</pre>
<p>Para acceder a los datos que hemos guardado en la sesión se utiliza el mismo array asociativo:</p>
<div>
<div>
<div><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">view plain</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">copy to clipboard</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">print</a><a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+%28Mundo+Geek%29#">?</a></div>
</div>
<ol>
<li>echo &#8217;Bienvenido &#8217;, $_SESSION['usuario'];</li>
</ol>
</div>
<pre>echo 'Bienvenido ', $_SESSION['usuario'];

Fuente: <a href="http://mundogeek.net/archivos/2009/11/26/tutorial-rapido-de-php/?utm_source=feedburner&#38;utm_medium=feed&#38;utm_campaign=Feed%3A+mundogeekfeed+(Mundo+Geek)" target="_blank">Mundo Geek</a>
</pre>
<div></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SQL Oracle: funciones sobre filas – Parte 3 ]]></title>
<link>http://drocco.wordpress.com/2009/11/26/sql-oracle-funciones-sobre-filas-%e2%80%93-parte-3/</link>
<pubDate>Thu, 26 Nov 2009 16:33:50 +0000</pubDate>
<dc:creator>Rocco</dc:creator>
<guid>http://drocco.wordpress.com/2009/11/26/sql-oracle-funciones-sobre-filas-%e2%80%93-parte-3/</guid>
<description><![CDATA[Funciones de caracter que manipulan el estado lower valores en minúscula upper valores en mayúscula ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Funciones de caracter que manipulan el estado</strong></p>
<table border="1">
<tbody>
<tr>
<td width="50" align="center">lower</td>
<td>valores en minúscula</td>
</tr>
<tr>
<td width="50" align="center">upper</td>
<td>valores en mayúscula</td>
</tr>
<tr>
<td width="50" align="center">initcap</td>
<td>primera letra mayúscula y el resto minúsculas</td>
</tr>
</tbody>
</table>
<p>ejemplo: formatear el nombre en minúscula</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select lower(nombre)
from personas</code></pre>
<p>consulta: PABLO &#8211;&#62; pablo</p>
<ul>
<li>CONCAT</li>
</ul>
<p>Concatena los valores de dos columnas</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select concat(nombre, apellido)
from personas</code></pre>
<p>consulta: nombre: PABLO, apellido: PEREZ &#8211;&#62;PABLOPEREZ</p>
<ul>
<li>SUBSTR</li>
</ul>
<p>Devuelve los caracteres que se encuentran dentro del rango definido por la función</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select substr(nombre,2,3)
from personas</code></pre>
<p>consulta: PABLO &#8211;&#62; ABL</p>
<ul>
<li>LENGTH</li>
</ul>
<p>Retorna el número de caracteres del string</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select length(nombre)
from personas</code></pre>
<p>consulta: PABLO &#8211;&#62; 5</p>
<ul>
<li>INSTR</li>
</ul>
<p>Retorna la posición del caracter dentro del string</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select instr(nombre, 'B')
from personas</code></pre>
<p>consulta: PABLO &#8211;&#62; 3</p>
<ul>
<li>LPAD</li>
</ul>
<p>Acorta o añade caracteres (a nuestra elección) dependiendo del largo que se le asigne de izquierda a derecha hasta cumplir ese valor</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select lpad(nombre,3)
from personas</code></pre>
<p>consulta: PABLO &#8211;&#62; PAB</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select lpad(nombre,15,'*')
from personas</code></pre>
<p>consulta: PABLO &#8211;&#62; **********PABLO</p>
<ul>
<li>RPAD</li>
</ul>
<p>Acorta o añade caracteres (a nuestra elección) dependiendo del largo que se le asigne de derecha a izquierda hasta cumplir ese valor</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select rpad(nombre,3)
from personas</code></pre>
<p>consulta: PABLO &#8211;&#62; PAB</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select rpad(nombre,15,'*')
from personas</code></pre>
<p>consulta: PABLO &#8211;&#62;PABLO**********</p>
<ul>
<li>TRIM</li>
</ul>
<p>No muestra el caracter inicado</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select trim('P' from nombre)
from personas</code></pre>
<p>consulta: PABLO &#8211;&#62; ABLO</p>
<ul>
<li>REPLACE</li>
</ul>
<p>Busca un string y lo reemplaza</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select replace(nombre,'B','*')
from personas</code></pre>
<p>consulta: PABLO &#8211;&#62; PA*LO</p>
<p><!--more--></p>
<p><strong>Funciones numéricas</strong></p>
<ul>
<li>ROUND</li>
</ul>
<p>Redondea el valor hasta con N decimales</p>
<p>round (125.315,1) &#8211;&#62; 125.3</p>
<ul>
<li>TRUNC</li>
</ul>
<p>Trunca el valor hasta con N decimales</p>
<p>trunc (to_date(&#8216;22-AUG-03&#8242;),&#8217;MONTH&#8217;) &#8211;&#62; &#8216;01-AUG-03&#8242;</p>
<ul>
<li>MOD</li>
</ul>
<p>Retorna el resto de la división</p>
<p>mod (15, 4) &#8211;&#62; 3</p>
<p><strong>Fechas</strong></p>
<p>formato: DD-MM-YY</p>
<p>Para entregar el valor de la fecha y hora actual:</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select sysdate
from dual</code></pre>
<p>dual: tabla imaginaria</p>
<p><strong>Operadores aritméticos con fechas</strong></p>
<p>Mostrar el número de semanas transcurridas entre los periodos:</p>
<pre style="background:#F4F5F7;border:1px dashed #CCC;margin:5px 0;padding:5px 12px 5px 10px;"><code>select(sysdate-fecha)/7
from dual</code></pre>
<p><strong>Funciones sobre fechas</strong></p>
<ul>
<li>MONTHS_BETWEEN(fecha1, fecha2):  número de meses entre dos fechas</li>
<li>ADD_MONTH(fecha, n): agrega meses calendarios a una fecha específica</li>
<li>NEXT_DAY(fecha, &#8216;dia&#8217;): próximo día de una fecha especifica</li>
<li>LAST_DAY(fecha): último día del mes</li>
<li>ROUND(fecha, &#8216;formato_fecha&#8217;): redondea fechas</li>
<li>TRUNC(fecha, &#8216;formato_fecha&#8217;): trunca fechas</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[La vuelta de CR 9]]></title>
<link>http://expresartve.wordpress.com/2009/11/26/la-vuelta-de-cr-9/</link>
<pubDate>Thu, 26 Nov 2009 14:58:16 +0000</pubDate>
<dc:creator>Administrador</dc:creator>
<guid>http://expresartve.wordpress.com/2009/11/26/la-vuelta-de-cr-9/</guid>
<description><![CDATA[No es nada nuevo decir a estas alturas que las estrellas del fútbol son ante todo productos mediátic]]></description>
<content:encoded><![CDATA[No es nada nuevo decir a estas alturas que las estrellas del fútbol son ante todo productos mediátic]]></content:encoded>
</item>
<item>
<title><![CDATA[Estela Gamero presenta su libro “Amor con Espinas” en "Todo Depende..." Martes 8 de diciembre]]></title>
<link>http://tododependelige.wordpress.com/2009/11/26/estela-gamero-presenta-su-libro-%e2%80%9camor-con-espinas%e2%80%9d-en-todo-depende-martes-8-de-diciembre/</link>
<pubDate>Thu, 26 Nov 2009 12:43:14 +0000</pubDate>
<dc:creator>Silvia L. Paglioni</dc:creator>
<guid>http://tododependelige.wordpress.com/2009/11/26/estela-gamero-presenta-su-libro-%e2%80%9camor-con-espinas%e2%80%9d-en-todo-depende-martes-8-de-diciembre/</guid>
<description><![CDATA[Bahianoticias.com – Por Silvia Paglioni – Se presenta el libro “Amor con Espinas” de publicaciones A]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;"><img class="alignnone" src="http://bahianoticias.com/wp-content/uploads/2009/11/AMOR-CON-ESPINAS-1023x629.jpg" alt="" width="468" height="534" /></p>
<p><strong>Bahianoticias.com – Por Silvia Paglioni –</strong> Se presenta el libro “Amor con Espinas” de publicaciones Altair, el sábado 5 de diciembre a las 19.30 hs, en la Biblioteca Popular “José Hernández” de General Daniel Cerri. <strong>Una historia de vida donde su autora, Estela Gamero, relata un caso real</strong>.</p>
<p>En el mes de agosto de 2009 fui invitada por vecinos de General Daniel Cerri a realizar diversas notas y reportajes a distintos ciudadanos que dejaron huellas. Estaba pactado a quienes iba a entrevistar, excepto a una persona. Cuando llego a la Biblioteca me presentan a alguien a quien no conocía. Era la Sra. Estela Gamero. Me la presentaron como Psicóloga, Bombero Voluntario y Escritora.</p>
<p>Hubo una actitud que me conmovió, y fue observar como tenía fuertemente abrazado y apoyado contra su pecho una carpeta donde estaba fotocopiado el libro que había escrito. Ese gesto, me condujo a preguntarle si quería que le hiciera un reportaje a lo cual gustosa accedió. Lo comenzamos ahí y lo terminamos unos días después por falta de tiempo.</p>
<p>El reportaje, <a href="http://bahianoticias.com/estela-gamero-el-corazon-solo-tiene-manija-por-dentro-hay-que-aprender-a-cultivar-la-interioridad/16036/">Estela Gamero: “El corazón sólo tiene manija por dentro. Hay que aprender a cultivar la interioridad” </a>se publicó en Bahianoticias el 15 de agosto y fue el más comentado de todos los realizados.</p>
<p>A casi tres meses y días donde contaba al mundo su sueño, su realidad y la imposibilidad de publicar su amado libro, puede cumplir su anhelo. Estela, a partir del 5 de diciembre extiende sus brazos para ofrecernos a todos  lo que personalmente considero un libro de autoayuda ya que siempre que escribimos y compartimos sobre las piedras que se nos interpusieron en el camino de la vida, como las fuimos, no esquivando, sino enfrentándolas y transmutándolas en experiencias para Ser y estar amigados con la vida y con uno mismo, es inevitable que esas palabras constructivas y vivencias que comparte de auto-renacimiento nos ayuden a mejorar nuestra propia calidad de vida mental, emocional y espiritual.</p>
<blockquote><p>“Amor con Espinas”, es la misión que tengo en la vida. Es un mensaje para expresarle al mundo que a pesar de los problemas, y me refiero a cualquier cosa que te pueda pasar en la vida, hay una solución, aun en la muerte, porque yo tengo esperanza. Si te matan la esperanza no te queda nada”, expresa Estela.</p></blockquote>
<p>Además de la alegría que me embarga el saber que un ser humano al que quiero por su esencia de mujer de flor de loto, haya tenido la generosidad que en la contratapa de su libro “Amor con Espinas”, figure la introducción del reportaje que le hiciera, me lo dedique y me conceda la posibilidad de presentarlo el 5 de diciembre, junto a otros seres queridos de Estela, sólo me resta decir: Gracias a la vida por esta posibilidad que me otorga a través de Estela y gracias a la vida y a nobles personas por brindarle la posibilidad a ella, que su sueño, su misión en la vida hoy se haga realidad.</p>
<blockquote><p><strong>El día martes 8 de diciembre a las 20 hs., Estela Gamero en “Todo Depende…” por FM 89.5 de Las Américas.<br />
</strong></p>
<p style="text-align:center;"><strong><img class="alignnone" src="http://bahianoticias.com/wp-content/uploads/2009/08/estela5-289x300.jpg" alt="" width="289" height="300" /><br />
</strong></p>
</blockquote>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CreateInstall 5.5.1 portable]]></title>
<link>http://aplicacionesportatiles.wordpress.com/2009/11/26/createinstall-5-5-1-portable/</link>
<pubDate>Thu, 26 Nov 2009 06:00:00 +0000</pubDate>
<dc:creator>Tony Montana</dc:creator>
<guid>http://aplicacionesportatiles.wordpress.com/2009/11/26/createinstall-5-5-1-portable/</guid>
<description><![CDATA[CreateInstall es una aplicación completa y versátil para crear el archivo de instalación de tus apli]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.supershareware.com/images/screenshot/CreateInstall-1851.png" target="_blank"><img height="161" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://www.supershareware.com/images/screenshot/CreateInstall-1851.png" width="214" align="left" /></a>
<p>CreateInstall es una aplicación completa y versátil para crear el archivo de instalación de tus aplicaciones.</p>
<p>Crea instalaciones a medida de lo más completas que puedas imaginar, y no es nada complicado de usar ya que, entre otras cosas, se encuentra en español y contiene un cómodo y claro asistente.</p>
<p>Algunas características de CreateInstall: </p>
<ul>
<li>Instalaciones multilingües </li>
<li>Posibilidad de crear instalaciones basadas en CD </li>
<li>Gran compresión gracias a diversos algoritmos </li>
<li>Pequeño módulo añadido (aprox. 50/55 KB con desinstalador) </li>
<li>Posibilidad de actualización de tu aplicación a través de Internet </li>
</ul>
<ul>
<li><strong>IDIOMA</strong>: Varios idiomas incluido el Español </li>
<li><strong>TAMAÑO</strong>: 2.610 KB </li>
</ul>
<p> <a><img height="29" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/megauploadlogo.jpg" width="250" border="0" /></a>
<p align="center"><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.megaupload.com/?d=WSG1Y6UC" target="_blank"><img alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/plantilla/download_info.gif" /> </a></p>
<p> <a><img height="54" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/mediafire.PNG" width="150" border="0" /></a>
</p>
<p align="center"><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.mediafire.com/?zz0ho04znmg" target="_blank"><img alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/plantilla/download_info.gif" /> </a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CreateInstall 5.5.1 portable]]></title>
<link>http://appzportablez.wordpress.com/2009/11/26/createinstall-5-5-1-portable/</link>
<pubDate>Thu, 26 Nov 2009 06:00:00 +0000</pubDate>
<dc:creator>Tony Montana</dc:creator>
<guid>http://appzportablez.wordpress.com/2009/11/26/createinstall-5-5-1-portable/</guid>
<description><![CDATA[CreateInstall es una aplicación completa y versátil para crear el archivo de instalación de tus apli]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.supershareware.com/images/screenshot/CreateInstall-1851.png" target="_blank"><img height="161" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://www.supershareware.com/images/screenshot/CreateInstall-1851.png" width="214" align="left" /></a>
<p>CreateInstall es una aplicación completa y versátil para crear el archivo de instalación de tus aplicaciones.</p>
<p>Crea instalaciones a medida de lo más completas que puedas imaginar, y no es nada complicado de usar ya que, entre otras cosas, se encuentra en español y contiene un cómodo y claro asistente.</p>
<p>Algunas características de CreateInstall: </p>
<ul>
<li>Instalaciones multilingües </li>
<li>Posibilidad de crear instalaciones basadas en CD </li>
<li>Gran compresión gracias a diversos algoritmos </li>
<li>Pequeño módulo añadido (aprox. 50/55 KB con desinstalador) </li>
<li>Posibilidad de actualización de tu aplicación a través de Internet </li>
</ul>
<ul>
<li><strong>IDIOMA</strong>: Varios idiomas incluido el Español </li>
<li><strong>TAMAÑO</strong>: 2.610 KB </li>
</ul>
<p> <a><img height="29" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/megauploadlogo.jpg" width="250" border="0" /></a>
<p align="center"><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.megaupload.com/?d=WSG1Y6UC" target="_blank"><img alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/plantilla/download_info.gif" /> </a></p>
<p> <a><img height="54" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/mediafire.PNG" width="150" border="0" /></a>
</p>
<p align="center"><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.mediafire.com/?zz0ho04znmg" target="_blank"><img alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/plantilla/download_info.gif" /> </a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CreateInstall 5.5.1 portable]]></title>
<link>http://appzportables.wordpress.com/2009/11/26/createinstall-5-5-1-portable/</link>
<pubDate>Thu, 26 Nov 2009 06:00:00 +0000</pubDate>
<dc:creator>Tony Montana</dc:creator>
<guid>http://appzportables.wordpress.com/2009/11/26/createinstall-5-5-1-portable/</guid>
<description><![CDATA[CreateInstall es una aplicación completa y versátil para crear el archivo de instalación de tus apli]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.supershareware.com/images/screenshot/CreateInstall-1851.png" target="_blank"><img height="161" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://www.supershareware.com/images/screenshot/CreateInstall-1851.png" width="214" align="left" /></a>
<p>CreateInstall es una aplicación completa y versátil para crear el archivo de instalación de tus aplicaciones.</p>
<p>Crea instalaciones a medida de lo más completas que puedas imaginar, y no es nada complicado de usar ya que, entre otras cosas, se encuentra en español y contiene un cómodo y claro asistente.</p>
<p>Algunas características de CreateInstall: </p>
<ul>
<li>Instalaciones multilingües </li>
<li>Posibilidad de crear instalaciones basadas en CD </li>
<li>Gran compresión gracias a diversos algoritmos </li>
<li>Pequeño módulo añadido (aprox. 50/55 KB con desinstalador) </li>
<li>Posibilidad de actualización de tu aplicación a través de Internet </li>
</ul>
<ul>
<li><strong>IDIOMA</strong>: Varios idiomas incluido el Español </li>
<li><strong>TAMAÑO</strong>: 2.610 KB </li>
</ul>
<p> <a><img height="29" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/megauploadlogo.jpg" width="250" border="0" /></a>
<p align="center"><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.megaupload.com/?d=WSG1Y6UC" target="_blank"><img alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/plantilla/download_info.gif" /> </a></p>
<p> <a><img height="54" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/mediafire.PNG" width="150" border="0" /></a>
</p>
<p align="center"><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.mediafire.com/?zz0ho04znmg" target="_blank"><img alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/plantilla/download_info.gif" /> </a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[CreateInstall 5.5.1 portable]]></title>
<link>http://portableaplication.wordpress.com/2009/11/26/createinstall-5-5-1-portable/</link>
<pubDate>Thu, 26 Nov 2009 06:00:00 +0000</pubDate>
<dc:creator>Tony Montana</dc:creator>
<guid>http://portableaplication.wordpress.com/2009/11/26/createinstall-5-5-1-portable/</guid>
<description><![CDATA[CreateInstall es una aplicación completa y versátil para crear el archivo de instalación de tus apli]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.supershareware.com/images/screenshot/CreateInstall-1851.png" target="_blank"><img height="161" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://www.supershareware.com/images/screenshot/CreateInstall-1851.png" width="214" align="left" /></a>
<p>CreateInstall es una aplicación completa y versátil para crear el archivo de instalación de tus aplicaciones.</p>
<p>Crea instalaciones a medida de lo más completas que puedas imaginar, y no es nada complicado de usar ya que, entre otras cosas, se encuentra en español y contiene un cómodo y claro asistente.</p>
<p>Algunas características de CreateInstall: </p>
<ul>
<li>Instalaciones multilingües </li>
<li>Posibilidad de crear instalaciones basadas en CD </li>
<li>Gran compresión gracias a diversos algoritmos </li>
<li>Pequeño módulo añadido (aprox. 50/55 KB con desinstalador) </li>
<li>Posibilidad de actualización de tu aplicación a través de Internet </li>
</ul>
<ul>
<li><strong>IDIOMA</strong>: Varios idiomas incluido el Español </li>
<li><strong>TAMAÑO</strong>: 2.610 KB </li>
</ul>
<p> <a><img height="29" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/megauploadlogo.jpg" width="250" border="0" /></a>
<p align="center"><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.megaupload.com/?d=WSG1Y6UC" target="_blank"><img alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/plantilla/download_info.gif" /> </a></p>
<p> <a><img height="54" alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/mediafire.PNG" width="150" border="0" /></a>
</p>
<p align="center"><a title="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" href="http://www.mediafire.com/?zz0ho04znmg" target="_blank"><img alt="Aplicaciones Portables, Aplicaciones USB, Software USB, Juegos Portables" src="http://appsportables.iespana.es/images/plantilla/download_info.gif" /> </a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Bienvenidos]]></title>
<link>http://quieroprogramar.wordpress.com/2009/11/26/bienvenidos/</link>
<pubDate>Thu, 26 Nov 2009 04:54:05 +0000</pubDate>
<dc:creator>chrisadan</dc:creator>
<guid>http://quieroprogramar.wordpress.com/2009/11/26/bienvenidos/</guid>
<description><![CDATA[Hola. Simplemente para empezar quisiera que sepan para qué está hecho este blog y qué es lo que enco]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Hola. Simplemente para empezar quisiera que sepan para qué está hecho este blog y qué es lo que encontrarás en él.<br />
Primeramente, creé este blog pensando en mi Tesis. Tesis? perdón, tengo que presentarme primero. Mi nombre es <em>Christian Olaya</em>, tengo 24 años (ya casi 25), soy bachiller de Ingeniería Industrial y de Sistemas, actualmente trabajo en el área de operaciones de la empresa petrolera nacional peruana, Petroperú S.A. bajo la modalidad de una empresa tercerizadora.<br />
Bien, retomando, el motivo número 1 es que ya tengo que hacer mi tesis, y estoy buscando un tema para presentarle a un profesor de mi Universidad y así avanzar, voy a cumplir dos años desde que egresé y ya es hora no?</p>
<p>Leí en un blog que para hacer una tesis tenías que elegir un tema que te guste, porque sino a la larga se convertiría en un suplicio, en cambio si es algo que te gusta y que realmente te apasiona (y eso es muy importante, que te apasione), entonces adelante!; otro aspecto importante es que el tema tiene que ser algo realizable, no tiene que necesariamente&#8221; cambiar al mundo&#8221;.</p>
<p>Entonces, para mí, no fue difícil elegir en qué area lo desarrollaría: me apasiona muchísimo la programación, es un gusto que no he podido satisfacer desde que salí de mi universidad. Era muy bueno programando las cosillas que nos dejaban, pero de allí sólo conseguí trabajos de planeamiento o de operaciones, más no de programación. Hay otra cosa que me atrae mucho, es la navegación por internet. A veces paso horas navegando, pero a diferencia de muchos de mis amigos, no la paso chateando, buscando imágenes, o viendo videos. La paso buscando mejras para mi navegador (Firefox porsupuesto), mejoras para mi computadora, noticias sobre sftware, informática, hacking Google, distribuciones GNU/Linux, etc, etc etc;  de esta forma he aprendido muchísimo, domino a mi compu, no ella a mí.</p>
<p>Bien, ese fue mi primer motivo, obtener un tema. El segundo motivo fue motivado por alguien más: la envidia. Me daba mucha envidia leer muchos blog, la mayoría buenísimos y de mucha ayuda, otros no tanto, pero eran la minoría. Aquí en mi trabajo ayudo a muchísima gente a resolver problemas, y me pregunté: por qué no? por qué no tener mi propio blog y presentar todos los trucos que sé?</p>
<p>Descubrí algo muy serio: la web lo tiene <strong>TODO</strong>, allí están todas las soluciones a nuestros problemas, pero lo serio no es eso, lo serio es que a las personas no les gusta leer, a otras (la mayoría), no les gusta buscar, otras no saben buscar eficientemente (y eso que con Don &#8220;G&#8221; todas nuestras búsquedas se nos hacen más fáciles).</p>
<p>Bien, ese fue mi segundo motivo: hacer mi propio blog sobre trucos en la web. Esto lo he querido hacer hace mucho pero desde cero, programando desde XHTML, CSS, PHP MySql, Apache y Javascript, pero el tiempo es mi mejor excusa.</p>
<p>Mi objetivo entonces es conseguir un tema, tengo mi preferido: He pensado programar un aplicación en PHP, no sé , a un nivel alto; por allí puedo emplear Drupal, que es otra de mis curiosidades por cumplir, y por allí, no sé, algo que pensé hacer es una ecommerce empleando drupal y modificando un módulo para implementarlo en un negocio pequeño (una micro o pequeña empresa).</p>
<p>Otra cosa que puedo hacer es una aplicación en C++ o C#, pero la verdad no sé por dónde empezar.</p>
<p>Soy todo oídos,&#8230; ehm, mejor dicho soy todo ojos, así que espero sus comentarios, con guía incluida.</p>
<p>De mi parte, para cumplir el Motivo2, publicaré un regalo: una licencia genuina (no pirata) de 6 meses gratuita de Kaspersky y completamente en español. Así que ayúdenme que los ayudaré.</p>
<p>PD. Por ahora uso <strong>Window$</strong> porque uso mi  laptop de trabajo, pero en mi laptop personal tengo ubuntu y estoy por probar <strong>ArchLinux</strong>.</p>
<p>Saludos y gracias de antemano, no me desanimen, dejen un comentario con un &#8220;hola&#8221; si quiera. Bye</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Descarga la Versión Beta de Visual Studio 2010]]></title>
<link>http://inetworks.wordpress.com/2009/11/25/descarga-la-version-beta-de-visual-studio-2010/</link>
<pubDate>Thu, 26 Nov 2009 03:03:10 +0000</pubDate>
<dc:creator>Arnulfo García</dc:creator>
<guid>http://inetworks.wordpress.com/2009/11/25/descarga-la-version-beta-de-visual-studio-2010/</guid>
<description><![CDATA[Sin duda alguna fue una gran herramienta en mis tiempos de trabajo por cuenta propia durante dos año]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h2><a href="http://inetworks.wordpress.com/files/2009/11/vs2010_logo.png"><img class="aligncenter size-full wp-image-2584" title="vs2010_logo" src="http://inetworks.wordpress.com/files/2009/11/vs2010_logo.png" alt="" width="183" height="98" /></a></h2>
<p>Sin duda alguna fue una gran herramienta en mis tiempos de trabajo por cuenta propia durante dos años, la cual combinado con Crytal Reports son dos herramientas muy potentes para desarrollar las mejores aplicaciones, como le decia a mis clientes, si ud. quiere que la computadora hable, la hacemos hablar.</p>
<h2><span style="color:#333399;">Lo nuevo de Visual Studio 2010</span></h2>
<p><a href="LaunchBasicOverlay('screenshot-simplicity');"><img class="alignleft" src="http://www.microsoft.com/india/visualstudio/content/images/2010landing_quality.png" border="0" alt="" /></a>Permite crear aplicaciones innovadoras para Windows y la Web</p>
<p>Visión compartida como base para la creatividad con SketchFlow, en Microsoft Expression Studio, y Team Foundation Server</p>
<p>Disfruta de las nuevas oportunidades y capacidades que ofrece la programación multi-núcleo y las herramientas de desarrollo de las nubes</p>
<p>Complete todos sus códigos, modelado, prueba, depuración y despliegue de trabajo sin salir del entorno de Visual Studio 2010</p>
<p>Utilice las normas existentes y las habilidades para dirigirse a un número creciente de tipos de aplicaciones como Microsoft SharePoint y Windows Azure. </p>
<p>Su forma de trabajo a través de soporte multi-monitor, las extensiones de pareja, y un nuevo editor.</p>
<p><a href="LaunchBasicOverlay('screenshot-quality');"> </a><a href="LaunchBasicOverlay('screenshot-simplicity');"> </a></p>
<div>
<p><a href="http://www.microsoft.com/spain/visualstudio/try/default.mspx#download" target="_self">Haga  clic aquí para enlazar al sitio de descarga</a></p>
<p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/DjUPHB_vU-4&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/DjUPHB_vU-4&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
<p>Por Arnulfo García, iNetWorks.WordPress.com</p>
</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Programación Ciclorecreovía 29 de Noviembre				]]></title>
<link>http://crvvigias.wordpress.com/2009/11/26/programacion-ciclorecreovia-29-de-noviembre/</link>
<pubDate>Thu, 26 Nov 2009 00:17:33 +0000</pubDate>
<dc:creator>Gonzalo Stierling</dc:creator>
<guid>http://crvvigias.wordpress.com/2009/11/26/programacion-ciclorecreovia-29-de-noviembre/</guid>
<description><![CDATA[Muchachos acá va la programación para este Domingo, por favor fijarse muy bien en el tema de los hor]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Muchachos acá va la programación para este Domingo, por favor fijarse muy bien en el tema de los horarios de entrada, si alguna de las personas que esta programada no pudiese ir a la ciclo debe contactarse con los vigias libres para que lo reemplacen, por todos los medios debe conseguir un reemplazo sobre todo ahora que contamos con esa opción.</p>
<p>Se que es repetitivo, pero es muy importante que todos asistan ya que si falta alguno se le carga el trabajo a otro compañero, tambien es importante que impriman o se aprendan con lujo y detalle el armado del circuito, tratare de ser lo mas equilibrado con los dias libres de cada uno ahora que esta esa posibilidad.</p>
<table border="0" cellspacing="0" cellpadding="0" width="377">
<tbody>
<tr>
<td colspan="5" width="377" valign="bottom"><strong>Programación Ciclorecreovía 29 de Noviembre</strong></td>
</tr>
<tr>
<td width="59" valign="bottom"><strong> </strong></td>
<td width="88" valign="bottom"><strong> </strong></td>
<td width="152" valign="bottom"><strong> </strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td colspan="3" width="299" valign="bottom"><strong> </strong></td>
<td width="36" valign="bottom"><strong>Hora</strong></td>
<td width="43" valign="bottom"><strong>Firma</strong></td>
</tr>
<tr>
<td colspan="3" width="299" valign="bottom"><strong>Primeros Auxilios</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td colspan="3" width="299" valign="bottom"><strong>Camion</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td colspan="5" width="377"><strong><em>Zamora</em></strong></td>
</tr>
<tr>
<td width="59"><strong>7:00 AM</strong></td>
<td width="88"><strong><em>Jefe de Zona</em></strong></td>
<td width="152"><strong>Sergio Díaz</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59"><strong>7:00 AM</strong></td>
<td width="88"><strong><em>Callao </em></strong></td>
<td width="152"><strong>Miguel Antileo</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43"><strong> </strong></td>
</tr>
<tr>
<td width="59"><strong>8:45 AM</strong></td>
<td width="88"><strong><em>Errázuriz</em></strong></td>
<td width="152" valign="bottom"><strong>Ma Ignacía Fernández</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59"><strong>7:00 AM</strong></td>
<td width="88"><strong><em>Zamora</em></strong></td>
<td width="152" valign="bottom"><strong>Rodrigo Vasquez</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59"><strong>8:45 AM</strong></td>
<td width="88"><strong><em>Colón 1</em></strong></td>
<td width="152" valign="bottom"><strong>Juan Pablo Arellano</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59"><strong>8:45 AM</strong></td>
<td width="88"><strong><em>Colón 2</em></strong></td>
<td width="152"><strong>Catalina Cifuentes</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59"><strong>7:00 AM</strong></td>
<td width="88"><strong><em>I. La Católica</em></strong></td>
<td width="152"><strong>Alexander Blanc</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td colspan="5" width="377"><strong><em>Vespucio</em></strong></td>
</tr>
<tr>
<td width="59"><strong>7:00 AM</strong></td>
<td width="88"><strong><em>Jefe de Zona</em></strong></td>
<td width="152"><strong>Francisco Montes</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59"><strong>7:00 AM</strong></td>
<td width="88"><strong><em>Toldo</em></strong></td>
<td width="152" valign="bottom"><strong>Raimundo Monsalve</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59"><strong>8:45 AM</strong></td>
<td width="88"><strong><em>Bilbao 1</em></strong></td>
<td width="152" valign="bottom"><strong>Marcela Novoa</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59"><strong>8:45 AM</strong></td>
<td width="88"><strong><em>Bilbao 2</em></strong></td>
<td width="152"><strong>Matias Bahamondes</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59"><strong>8:45 AM</strong></td>
<td width="88"><strong><em>E. Parada</em></strong></td>
<td width="152" valign="bottom"><strong>Róbinson Vargas</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59"><strong>8:45 AM</strong></td>
<td width="88"><strong><em>T. Viejos</em></strong></td>
<td width="152"><strong>Pablo Monnard</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td colspan="5" width="377"><strong><em>Libre</em></strong></td>
</tr>
<tr>
<td width="59" valign="bottom"><strong> </strong></td>
<td width="88" valign="bottom"><strong> </strong></td>
<td width="152"><strong>Vince Ninasivincha</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59" valign="bottom"><strong> </strong></td>
<td width="88" valign="bottom"><strong> </strong></td>
<td width="152"><strong>Luz Ma. Dinamarca</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59" valign="bottom"><strong> </strong></td>
<td width="88" valign="bottom"><strong> </strong></td>
<td width="152"><strong>Nadia Paturlanne</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59" valign="bottom"><strong> </strong></td>
<td width="88" valign="bottom"><strong> </strong></td>
<td width="152" valign="bottom"><strong>Victor Valenzuela</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59" valign="bottom"><strong> </strong></td>
<td width="88" valign="bottom"><strong> </strong></td>
<td width="152" valign="bottom"><strong>Priscilla Bernal</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59" valign="bottom"><strong> </strong></td>
<td width="88" valign="bottom"><strong> </strong></td>
<td width="152"><strong>Daniela Benavente</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59" valign="bottom"><strong> </strong></td>
<td width="88" valign="bottom"><strong> </strong></td>
<td width="152"><strong>Ronald Rojas</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
<tr>
<td width="59" valign="bottom"><strong> </strong></td>
<td width="88" valign="bottom"><strong> </strong></td>
<td width="152" valign="bottom"><strong>Felipe Gomez</strong></td>
<td width="36" valign="bottom"><strong> </strong></td>
<td width="43" valign="bottom"><strong> </strong></td>
</tr>
</tbody>
</table>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Recorrer un HashMap en Java]]></title>
<link>http://javachile.wordpress.com/2009/11/25/recorrer-un-hashmap-en-java/</link>
<pubDate>Wed, 25 Nov 2009 23:22:47 +0000</pubDate>
<dc:creator>SiaR</dc:creator>
<guid>http://javachile.wordpress.com/2009/11/25/recorrer-un-hashmap-en-java/</guid>
<description><![CDATA[La clase HashMap suele ser muy útil para almacenar objetos al estilo clave valor. A continuación ver]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>La clase HashMap suele ser muy útil para almacenar objetos al estilo clave valor. A continuación verán un código que me parece bastante útil para recorrer este tipo de objetos:</p>
<p><code><br />
HashMap hm = new HashMap();<br />
hm.put("clave01", "valor01");<br />
hm.put("clave02", "valor02");<br />
hm.put("clave03", "valor03");</code></p>
<p><code>Iterator iter = hm.entrySet().iterator();<br />
Map.Entry e;</code></p>
<p><code> </code></p>
<p><code>while (iter.hasNext()) {<br />
e = (Map.Entry)iter.next();<br />
System.out.println("Clave: " + e.getKey() + " &#124; Valor: " + e.getValue());<br />
}<br />
</code></p>
<p>Espero les sea útil.</p>
<p>Saludos.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
