hp_ tutorial básico del programador web

324
FICHA RESUMEN DEL TUTORIAL BÁSICO DEL PROGRAMADOR WEB: PHP DESDE CERO Codificación aprenderaprogramar.com: CU00800B Objetivos PHP es un lenguaje potente de alto nivel cuyo código podemos introducir en páginas web HTML. PHP se ejecuta en el servidor (no podemos ejecutarlo en nuestro ordenador a no ser que lo hagamos funcionar como servidor). PHP, una vez es interpretado por el servidor, genera una salida HTML que permite visualizar los resultados en los navegadores. Este curso permite aprender los fundamentos para la creación de páginas web usando PHP. Destinatarios Cualquier persona con interés en aprender fundamentos que le permitan crear páginas web usando PHP. Para realizar este curso, debes tener conocimientos básicos de ofimática: saber copiar, pegar, mover y abrir archivos. Además debes tener conocimientos básicos de HTML. Contenidos INTRODUCCIÓN A PHP. QUÉ ES Y PARA QUÉ SIRVE PHP. COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR SIN PHP Y CON PHP.

Upload: alejandro-huarachi-tito

Post on 22-Dec-2015

10 views

Category:

Documents


3 download

DESCRIPTION

Computacion

TRANSCRIPT

Page 1: Hp_ Tutorial Básico Del Programador Web

FICHA RESUMEN DEL TUTORIAL BÁSICO DEL PROGRAMADOR

WEB: PHP DESDE CERO

Codificación aprenderaprogramar.com: CU00800B

 

 

 

Objetivos

PHP es un lenguaje potente de alto nivel cuyo código podemos introducir en páginas web HTML. PHP se ejecuta en el servidor (no podemos ejecutarlo en nuestro ordenador a no ser que lo hagamos funcionar como servidor). PHP, una vez es interpretado por el servidor, genera una salida HTML que permite visualizar los resultados en los navegadores. Este curso permite aprender los fundamentos para la creación de páginas web usando PHP. 

Destinatarios

Cualquier persona con interés en aprender fundamentos que le permitan crear páginas web usando PHP. Para realizar este curso, debes tener conocimientos básicos de ofimática: saber copiar, pegar, mover y abrir archivos. Además debes tener conocimientos básicos de HTML.  Contenidos

INTRODUCCIÓN A PHP. QUÉ ES Y PARA QUÉ SIRVE PHP.COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR SIN PHP Y CON PHP.MI PRIMERA PÁGINA EN PHP. TIPOS DE VARIABLES EN PHP.ESTRUCTURA CONDICIONAL (IF) CON PHP.ESTRUCTURAS REPETITIVAS (FOR, WHILE, DO/WHILE) CON PHP.ENVÍO DE DATOS DE UN FORMULARIO. MÉTODOS GET Y POST. REQUEST PHP.ARRAYS TRADICIONALES EN PHP. VECTORES Y MATRICES. ARRAYS ASOCIATIVOS EN PHP.FUNCIONES EN PHP. DECLARACIÓN. USO DE FUNCIONES BÁSICAS PROPIAS DE PHP.MANEJO DE ARCHIVOS DE TEXTO CON PHP. LECTURA Y ESCRITURA DE ARCHIVOS DE TEXTO.CONSULTAS BÁSICAS A BASE DATOS. INTRODUCCIÓN A PHP CON MYSQL.

Page 2: Hp_ Tutorial Básico Del Programador Web

 duración

150 horas de dedicación efectiva, incluyendo lecturas, estudio y ejercicios.Dirección, modalidades y certificados

El curso ha sido escrito por Enrique González Gutiérrez, responsable del Departamento Técnico del portal web aprenderaprogramar.com, y revisado por Mario Rodríguez Rancel. Se oferta bajo la modalidad web (gratuito).   Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link: Ver curso completo.Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

1.        INTRODUCCIÓN A PHP1.1. ¿Qué es PHP? ¿Para qué sirve PHP?1.2. Comunicación entre el cliente y el servidor sin PHP y con PHP.1.3. Diferencia entre páginas web estáticas y páginas web dinámicas.1.4. ¿Cuáles son las versiones de PHP?1.5. ¿Qué necesito para escribir código PHP y crear páginas web dinámicas?

2.        PREPARANDO EL ENTORNO DE DESARROLLO2.1. Descargar e instalar Notepad++.2.2. Configuración básica de Notepad++ para crear páginas PHP.2.3. Descargar e instalar el Gestor FTP Filezilla.2.4. Descargar e instalar el navegador Google Chrome.2.5. Trabajar en local o o con un servidor remoto. ¿Qué es mejor?2.6. Preparar el entorno para trabajar en remoto. Elección de servidor gratuito.2.7. Mi primera página en PHP. 3.         CONCEPTOS BÁSICOS DE PHP3.1. Estructura básica de una página PHP.3.2. Estructura condicional (if) con PHP.3.3. Estructuras repetitivas /for, while, do/while) con PHP.3.4. Arrays tradicionales en PHP. Vectores y Matrices.3.5. Arrays asociativos en PHP. 4.         FUNCIONES EN PHP4.1. Declaración y llamadas a funciones en PHP.4.2. Funciones básicas propias de PHP. 5.         FORMULARIOS CON PHP5.1. Envío de datos de un formulario. Métodos GET y POST.5.2. Recuperando datos del formulario. Variables $_REQUEST, $_GET y $_POST. Diferencias. 6.         MANEJO DE ARCHIVOS DE TEXTO CON PHP6.1. Introducción al manejo de archivos con PHP. Funciones fopen, fgets, fputs y fclose.6.2. Lectura y escritura de archivos de texto con PHP.

Page 3: Hp_ Tutorial Básico Del Programador Web

6.3. Lectura completa de un archivo de texto. Función file_get_contents. 7.         USO DE PHP CON MySQL7.1. Consultas básicas a base de datos. Introducción a MySQL.7.2. Consulta de datos con PHP y MySQL.7.3. Inserción de datos con PHP y MySQL.

7.4.      Borrado de datos con PHP y MySQL.

 

ORIENTACIÓN SOBRE EL TUTORIAL PASO A PASO “TUTORIAL BÁSICO DEL

PROGRAMADOR WEB: PHP DESDE CERO”

PHP es un lenguaje de programación de alto nivel, diseñado originalmente para la creación

de páginas web dinámicas. Por página web dinámica entendemos aquella que puede mostrar

información cambiante sin necesidad de que sea el programador quien haga estos cambios:

con webs dinámicas podemos por ejemplo hacer que se muestren noticias enviadas por un

usuario sin necesidad de intervención del programador.

 

PHP tiene un gran parecido en su sintaxis con lenguajes de programación estructurada, como

C, permitiendo a los programadores crear aplicaciones complejas con un corto periodo de

aprendizaje. También permite crear aplicaciones de contenido dinámico sin necesidad de

aprender un gran volumen de funciones. Este curso, que estamos comenzando, va dirigido a

aquellas personas que quieran adquirir unos fundamentos básicos para crear páginas web

dinámicas con vistas a poder desarrollar en el futuro páginas web atractivas y de cierta

complejidad. No vamos a desarrollar un manual de referencia de PHP, sino un curso básico

paso a paso. No vamos a contemplar todos los aspectos del lenguaje PHP, sino aquellos que

consideramos básicos desde el punto de vista didáctico, con vistas a que posteriormente la

persona que lo desee amplíe sus conocimientos. Nuestro objetivo es ser claros, sencillos y

breves, y para eso tenemos que centrarnos en determinadas cuestiones de PHP y dejar de

lado otras.

Como conocimientos previos para iniciar este curso recomendamos (seguir la recomendación

o no queda a criterio del alumno y/o profesor que vayan a seguir el curso) los siguientes:

Ofimática básica (saber copiar, pegar, mover y abrir archivos). Además es necesario tener

Page 4: Hp_ Tutorial Básico Del Programador Web

conocimientos básicos sobre HTML (si no conoces HTML, recomendamos seguir el curso

básico de HTML de aprenderaprogramar.com).

Aprender PHP requiere tiempo y esfuerzo. Para hacer ese recorrido más llevadero, te

recomendamos que utilices los foros de aprenderaprogramar.com, herramienta a disposición

de todos los usuarios de la web (http://www.aprenderaprogramar.com/foros/), y que te

servirá para consultar dudas y recabar orientación sobre cómo enfrentarte a los contenidos.

Entre los miembros del portal web y otros usuarios, trataremos de ayudarte para que el

estudio te sea más llevadero y seas capaz de adquirir los conocimientos necesarios y avanzar

como programador.

El tiempo necesario (orientativamente) para completar el curso incluyendo prácticas con

ordenador, suponiendo que se cuenta con los conocimientos previos necesarios, se estima en

150 horas de dedicación efectiva o aproximadamente tres meses con una dedicación de 2,5

horas diarias de lunes a viernes. Aprender a crear páginas web requiere dedicación y

esfuerzo.

El curso ha sido generado paso a paso usando Windows como sistema operativo y por ello

contiene algunas indicaciones específicas para usuarios de Windows, pero también puede ser

utilizado en otros entornos (Linux, Macintosh, etc.).

Estamos seguros de que con tu esfuerzo y la ayuda que te podamos brindar este curso te

resultará de gran utilidad.

¿QUÉ ES PHP? ¿PARA QUÉ SIRVE PHP?

PHP es un lenguaje de código abierto muy popular, adecuado para desarrollo web y que

puede ser incrustado en HTML. Es popular porque un gran número de páginas y portales web

están creadas con PHP. Código abierto significa que es de uso libre y gratuito para todos los

programadores que quieran usarlo. Incrustado en HTML significa que en un mismo archivo

vamos a poder combinar código PHP con código HTML, siguiendo unas reglas.

 

PHP se utiliza para generar páginas web dinámicas. Recordar que llamamos página estática a

aquella cuyos contenidos permanecen siempre igual, mientras que llamamos páginas

dinámicas a aquellas cuyo contenido no es el mismo siempre. Por ejemplo, los contenidos

Page 5: Hp_ Tutorial Básico Del Programador Web

pueden cambiar en base a los cambios que haya en una base de datos, de búsquedas o

aportaciones de los usuarios, etc.

¿Cómo trabaja PHP? El lenguaje PHP se procesa en servidores, que son potentes ordenadores

con un software y hardware especial. Cuando se escribe una dirección tipo

http://www.aprenderaprogramar.com/index.php en un navegador web como Internet

Explorer, Firefox o Chrome, ¿qué ocurre? Se envían los datos de la solicitud al servidor que

los procesa, reúne los datos (por eso decimos que es un proceso dinámico) y el servidor lo

que devuelve es una página HTML como si fuera estática.

El esquema es: Petición de página web al servidor --> El servidor recibe la petición, reúne la

información necesaria consultando a bases de datos o a otras páginas webs, otros

servidores, etc --> El servidor responde enviando una página web “normal” (estática) pero

cuya creación ha sido dinámica (realizando procesos de modo que la página web devuelta no

siempre es igual).

En resumen:

Páginas estáticas: Petición --> Respuesta

Páginas dinámicas: Petición --> Procesado y preparación --> Respuesta

 

 

En un sitio dinámico, la información generalmente está contenida en una base de datos.

Cada vez que mostramos la página, como por ejemplo una página de noticas, buscamos en

la base de datos las últimas noticias que tenemos ingresadas para mostrar en el navegador

del visitante. Ahora bien, ¿cómo se consigue que la página vaya mostrando noticias nuevas?

Simplemente cargando las mismas en la base de datos, por ejemplo, a través de un

formulario que rellena una persona y que una vez relleno cuando pulsa “Enviar” implica que

lo que haya escrito se guarde en nuestra base de datos. De esta manera, cuando solicitamos

la página web y el servidor consulte la base de datos, encontrará esta nueva información y

mostrará nuestra página de forma distinta a como se veía anteriormente.

Por regla general este tipo de lenguaje suele ser utilizado para crear contenido dinámico y

poder interactuar con el usuario.

Page 6: Hp_ Tutorial Básico Del Programador Web

Veamos un ejemplo del contenido de una página web php, que habremos de almacenar en

un archivo que termina con la extensión .php y que contiene texto:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Ejemplo</title>

</head>

<body>

<?php

echo "Bienvenidos a aprenderaprogramar.com";

?>

</body>

</html>

 

 

Como podrás comprobar el contenido del archivo incluye código HTML y en un momento

dado aparece una etiqueta <?php que significa que ahí empieza el código PHP. Por eso

decimos que el código PHP está embebido (incluido o incrustado) en código HTML.

Por tanto las páginas PHP contienen HTML con código PHP incluido en ellas para hacer "algo"

(en este caso, mostrar Bienvenidos a aprenderaprogramar.com. El código PHP está

comprendido entre etiquetas de comienzo y final especiales: <?php y ?>

Estas etiquetas especiales nos permitirán entrar y salir del "modo PHP". Le sirven al servidor

web para saber que tiene que interpretar el código incluido entre esas etiquetas como PHP.

Lo que distingue a PHP de JavaScript es que el código es ejecutado en el servidor, generando

HTML y enviándolo al cliente como si fuera una página web estática. El cliente recibirá los

resultados que el servidor devuelve después de interpretar el código PHP, sin ninguna

posibilidad de determinar qué código ha producido el resultado recibido. Es decir, a través de

nuestro navegador podríamos ver el código HTML, pero nunca el código PHP que dio lugar al

resultado HTML. El servidor web puede ser incluso configurado para que los usuarios no

puedan saber si estás o no utilizando PHP.

Page 7: Hp_ Tutorial Básico Del Programador Web

Lo mejor de usar PHP es que es extremadamente simple para el principiante, pero a su vez,

ofrece muchas características avanzadas para los programadores profesionales y más

avanzados.

Con PHP puedes procesar la información de formularios, generar páginas con contenidos

dinámicos, o enviar y recibir cookies, entre muchas más cosas. PHP lo utilizan desde

pequeñas páginas web hasta grandes empresas. Muchas aplicaciones web están construidas

usando PHP. Podemos citar Joomla y Drupal (gestores de contenido de páginas web),

osCommerce y Prestashop (tiendas on-line para comercio electrónico), phpBB y SMF

(sistemas de foros para páginas web), Moodle (plataforma educativa para educación on-line),

etc.

Entre las habilidades de PHP se incluye la creación de imágenes a partir de datos. Por

ejemplo, supongamos que tenemos una academia con 20 alumnos matriculados en un curso

de informática, 50 alumnos matriculados en un curso de matemáticas y 30 alumnos

matriculados en un curso de química. Con PHP podemos generar automáticamente imágenes

similares a esta:

 

 

PHP también puede utilizar y presentar resultados en otros estándares de datos o lenguajes

propios de los desarrollos web, como XHTML y cualquier otro tipo de ficheros XML. PHP puede

autogenerar éstos archivos y almacenarlos en el sistema de archivos en vez de presentarlos

en la pantalla, utilizando estos ficheros para generar contenido dinámico. Es decir, el

contenido dinámico puede surgir de otros sitios además de desde bases de datos.

Page 8: Hp_ Tutorial Básico Del Programador Web

También se puede interactuar con otros servidores usando cualquier protocolo. Por último,

PHP puede enlazarse con otros lenguajes muy potentes como Java.

En resumen, PHP es un lenguaje potente, muy usado y de gran interés para los desarrollos

web.

COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR SIN PHP Y CON PHP

Intentaremos explicar ahora cuales son las diferencias entre una petición a un servidor sin

PHP y con PHP. Esto nos permitirá ver cuales son las principales diferencias entre una página

web estática en HTML y una página web dinámica en PHP.

 

Empezaremos recordando a qué llamamos servidor y a qué llamamos cliente, de forma muy

simplificada. Llamamos servidores a ordenadores generalmente potentes, con un software y

hardware especial, y que se encargan de resolver peticiones que le hacen decenas, cientos o

miles de ordenadores. Hablamos de cliente en general para referirnos a ordenadores tipo

ordenador personal de los que habitualmente tenemos en nuestra casa o en nuestra oficina

de trabajo. Un cliente normalmente trabaja combinando lo que es su entorno local (por

ejemplo nuestro sistema de archivos y programas instalados en nuestro ordenador) con

peticiones a un servidor: por ejemplo cuando nos conectamos a internet y tecleamos una

dirección web (URL), lo que hacemos es realizar una petición a un servidor. En este caso

sería un servidor web, pero hay distintos tipos de servidores (de bases de datos, xml, etc.). El

servidor le responde al cliente entregándole lo que ha solicitado si es posible o, en algunos

casos, indicando que no tiene permisos para obtener lo solicitado, que lo que ha solicitado no

existe, etc.

Estas definiciones son definiciones simplificadas y muy someras, pero para los objetivos de

este curso nos resultarán suficientes.

 

 

COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR SIN PHP

Page 9: Hp_ Tutorial Básico Del Programador Web

En primer lugar, lo que hacemos es escribir en la barra de direcciones del navegador, la url

de la página web que queremos ver. Después el navegador envía el mensaje a través de

internet al ordenador remoto (servidor), de acuerdo con un protocolo estandarizado,

solicitando la página en cuestión (ejemplo: www.aprenderaprogramar.com/index.html). El

servidor comprueba que la petición es válida y lee el archivo solicitado desde su disco duro.

Todo ello es posible gracias al software instalado en el servidor. Acto seguido, el servidor web

envía el archivo solicitado por el navegador tal cual está en el disco duro. Y, por último, el

navegador muestra en pantalla el archivo que envió el servidor web.

Este proceso siempre es el mismo cuando hablamos de páginas estáticas (coloquialmente,

“páginas que no cambian”). Cualquiera que sea el cliente que solicita la página, el contenido

devuelto siempre será el mismo. La única forma de que el contenido del archivo cambie es

que el administrador de ese sitio web edite el contenido del archivo index.html y haga

modificaciones.

 

 

COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR CON PHP. INTÉRPRETE PHP Y

GESTORES DE BASES DE DATOS.

Empezamos escribiendo en la barra de direcciones del navegador la url de la página web que

queremos ver. En segundo lugar, el navegador envía el mensaje a través de internet al

ordenador remoto (servidor), de acuerdo con un protocolo estandarizado, solicitando la

página (archivo) index.php. (ejemplo: www.aprenderaprogramar.com/index.php).

El servidor web recibe el mensaje, comprueba que se trata de una petición válida, y al ver

que la extension es "php" solicita al intérprete de PHP (que es otro programa que se ejecuta

en el servidor web) que le envíe el archivo.

En este caso la situación ha variado: no se trata de una simple extracción de un archivo

desde el disco duro, sino que está actuando un agente intermediario: el intérprete PHP. El

intérprete PHP lee desde el disco duro del servidor el archivo index.php y empieza a procesar

las instrucciones (código de programación) que contenga dicho archivo. Decimos que el

intérprete PHP “ejecuta” los comandos contenidos en el archivo y, eventualmente, se

comunica con un gestor de base de datos (ejemplos de ellos pueden ser MySql, Oracle, SQL

Server, etc.). La comunicación con base de datos no siempre se produce, pero es algo muy

frecuente cuando trabajamos con PHP. Tenemos pues otra diferencia con las webs estáticas:

interviene otro agente más, el gestor de base de datos, que es capaz de devolver la

Page 10: Hp_ Tutorial Básico Del Programador Web

información contenida en lugares determinados de una base de datos. Y una base de datos

podemos verla simplemente como un gran almacén de información organizada en tablas.

Una vez el intérprete PHP termina de ejecutar el código contenido en el archivo y ha recibido

toda la información necesaria del gestor de base de datos, envía los resultados al servidor

web. El servidor web envía la página al cliente que la había solicitado y el navegador muestra

en pantalla la información que le envía el servidor web.

En lenguajes de programación como C o Java estamos acostumbrados a que cuando

ejecutamos un código, observamos unos resultados en la pantalla de nuestro ordenador. Sin

embargo, en PHP el resultado que se obtiene después de ejecutar código es código HTML que

es el que utilizará el navegador para mostrar la página web.

Una cuestión interesante, y curiosa, es preguntarnos sobre cuál es la diferencia entre el

código HTML que le llega al cliente cuando solicita una página estática y el código HTML que

le llega cuando solicita una página dinámica. La respuesta es que no hay diferencia: ambos

son código HTML. ¿Cómo podríamos saber si un código HTML proviene de un archivo html,

estático, o si proviene de una respuesta de un intérprete PHP? Pues digamos que si

simplemente nos dan el código no podríamos saber de dónde viene.

Y otra cuestión que se puede plantear: si tanto con PHP como sin PHP lo que obtenemos es

código HTML, ¿para qué nos sirve el PHP? Bien, PHP es un lenguaje de programación,

mientras que HTML no lo es. Con HTML podemos enviar cierta información siempre igual,

pero no podemos hacer cálculos, no podemos tomar decisiones, no podemos repetir procesos

cierto número de veces. En definitiva, PHP aporta toda la potencia que supone la

programación de ordenadores al mundo de las páginas web. Pongamos un ejemplo muy

sencillo: queremos que en una página web se produzca un proceso de venta a través de una

tarjeta de crédito. Una vez el cliente elige el producto, número de unidades que quiere y

lugar de envío necesitaremos realizar unos cálculos: esto lo podemos hacer con PHP

(también con otros lenguajes, pero vamos a centrarnos en el objeto de este curso). Una vez

realizados los cálculos, le mostraremos al cliente el importe total y los datos de su compra y

le pediremos que introduzca el número de su tarjeta de crédito y su clave personal. Ahora

hay que tomar una decisión: para esto no nos sirve el HTML. Sin embargo, usando PHP

podemos consultar a una base de datos donde estén almacenados los números de tarjetas

de crédito válidas del banco y sus claves. Una vez hecha esta consulta, usando PHP podemos

mostrar al usuario un resultado distinto según la situación que se haya producido, por

ejemplo:

- Los datos no son válidos. La compra no ha podido realizarse.

Page 11: Hp_ Tutorial Básico Del Programador Web

- Los datos son válidos. Se ha realizado satisfactoriamente la compra. Recibirá su pedido

en su domicilio en un plazo de 10 días. Gracias por confiar en nosotros.

 

Php es un lenguaje de programación y HTML no lo es, esta es una gran diferencia. ¿Si PHP es

mucho más potente, por qué no prescindir de HTML? Digamos que cada lenguaje cumple su

función: HTML es un lenguaje muy ordenado que permite enviar información de forma rápida

para que se muestre algo en un ordenador. En este sentido, es más rápido enviar la

información en formato HTML que de otra manera (por ejemplo un archivo ejecutable que se

tuviera que ejecutar en el cliente). Por eso HTML sigue siendo relevante dentro del mundo de

internet: es un formato muy usado para el envío de información. Cómo se haya generado esa

información es otra cuestión.

En el siguiente esquema podemos ver el proceso completo.

 

Page 12: Hp_ Tutorial Básico Del Programador Web

 

EJERCICIO

Responde a las siguientes preguntas indicando verdadero o falso y justicando brevemente tu

respuesta:

a) Todos los servidores web trabajan con PHP, ya que es la única manera de conseguir que se

muestre una página web en el computador cliente.

b) El código HTML generado con PHP no es distinguible del código HTML generado

manualmente, a no ser que contemos con alguna información adicional.

c) HTML es un lenguaje de programación que permite decidir y repetir, pero carece de

funcionalidades de acceso a bases de datos.

d) Para crear páginas web dinámicas HTML es un lenguaje obsoleto. Para su creación

usaremos PHP u otro lenguaje de última generación.

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

DIFERENCIA ENTRE PÁGINAS WEB ESTÁTICAS Y PÁGINAS WEB DINÁMICAS CON PHP

Vamos a repasar algunos conceptos que ya hemos mencionado y que es importante que

queden claros. Las páginas web estáticas o “planas” son aquellas en las que la información

se presenta en forma predefinida y sin cambios. No hay manera de que pueda cambiar el

contenido de la página.

 

A la información contenida en una página estática se le puede dar un determinado formato

de presentación, así como incluirle imágenes, enlaces a otras páginas, animaciones, videos,

sonidos, etc. En general, todo se hace a través de etiquetas HTML y esto es lo único que

puede ofrecerse a través de este tipo de páginas.

Page 13: Hp_ Tutorial Básico Del Programador Web

En los inicios de Internet predominaban las páginas estáticas, pero con el paso del tiempo y

ante la necesidad de agilizar el manejo de la información, surge un nuevo concepto de

páginas web que hoy sobresale y es el más utilizado. Estas son denominadas páginas

dinámicas: dentro de la programación dinámica para páginas web hay distintos lenguajes

(entre los que cabe destacar PHP, ASP y JSP), siendo php uno de los más usados.

Normalmente, las páginas estáticas están compuestas por código HTML. Cuando la página

(archivo) es solicitada por el navegador, el servidor la envía y no realiza ninguna operación

más. Todos los visitantes verán el mismo contenido.

Las páginas web dinámicas son aquellas en que la información que presentan se genera a

partir de alguna acción o petición del usuario en la página o mediante consultas al contenido

de bases de datos que normalmente cambian con frecuencia. Contrariamente a las páginas

estáticas, en las que su contenido se encuentra predeterminado, en las dinámicas la

información aparece inmediatamente después de una solicitud hecha por el usuario o de una

consulta a bases de datos. Una página dinámica permite visualizar la información contenida

en una base de datos, así como almacenar y hacer actualizaciones de cierta información en

bases de datos a través de formularios donde el usuario introduce contenidos. Piensa por

ejemplo en una red social como FaceBook: cuando se escribe en una casilla de texto y se

pulsa enter, la información introducida se almacena en una base de datos. Ahora cuando otro

usuario entra en FaceBook, esa información introducida por un usuario se le muestra a otro

usuario gracias a que se está rescatando de una base de datos. La programación dinámica

tiene múltiples aplicaciones, entre las que podemos citar los sistemas de foros (los mensajes,

imágenes, etc. se almacenan en bases de datos). Otra aplicación consiste en que el usuario

tiene la posibilidad de cambiar a su gusto el diseño y el contenido de una página, por

ejemplo la página de inicio personalizada de Google, gracias a que sus opciones se

almacenan en una base de datos.

Queda claro entonces que para la creación de este tipo de páginas dinámicas, además de

etiquetas HTML es necesaria la utilización de algún lenguaje de programación que se ejecute

del lado del servidor (es decir, que el servidor realice un proceso antes de enviar la

información al usuario de modo que a cada usuario le puede enviar distintas informaciones

como resultado de ese proceso), así como la existencia de una o varias bases de datos.

Si creamos un sitio web que usa páginas webs dinámicas, estas páginas son procesadas por

el servidor antes de ser enviadas al navegador.

Una página .php contiene código PHP que al ser ejecutado generará código HTML. En ese

proceso de ejecución de código, pueden hacerse consultas a bases de datos u otros archivos.

Page 14: Hp_ Tutorial Básico Del Programador Web

Además, pueden realizarse cálculos o tomarse decisiones gracias a la potencia de la

programación.

El resultado final es que se envía al navegador código HTML, que es generado para cada

visitante en particular dependiendo por ejemplo del contenido de la base de datos en ese

momento o de las opciones de configuración o solicitudes específicas del usuario. Otras

personas podrán obtener diferentes resultados si acceden en un momento en que la base de

datos haya cambiado, o si tienen opciones de configuración o realizan una solicitud distinta.

Ten en cuenta que aunque la URL nos muestre una extensión .php, lo que recibe el usuario

es código HTML. Por ejemplo la URL siguiente:

http://www.aprenderaprogramar.com/index.php

Siempre devuelve código HTML. Pero no siempre devuelve el mismo código HTML porque

para generar ese código existen procesos en el servidor que hacen que los resultados

puedan variar.

¿Cómo reconocer si una web que visitamos es dinámica o estática? En general, es dinámica

aquella que puede interactuar con el visitante y/o administrador web, pudiéndose modificar

el contenido de la página según el momento u opciones escogidas. Ejemplos de esto son:

cuando el usuario puede escribir un comentario, escoger los productos y ponerlos en un

carrito de compras, subir archivos o fotografías, etc. En este caso SI se utilizan bases de

datos y se requiere programación web dinámica.

Las páginas web dinámicas ofrecen muchas ventajas en comparación con las páginas web

estáticas, como una mayor interactividad con el usuario y facilidad para el cambio y

actualización de contenidos. A las personas que administran las páginas web (webmasters,

programadores, gestores de contenidos), la programación dinámica les permite una

reducción en tiempo y costos, así como una mayor facilidad en el mantenimiento de un sitio

web.

 

 

RESULTADOS EN BUSCADORES USANDO PÁGINAS WEB DINÁMICAS

Ante todas las ventajas de este tipo de páginas cabe citar una desventaja “histórica” en

cuanto a los resultados obtenidos en buscadores como Bing, Google o Yahoo. Hasta hace

unos años, los buscadores consideraban que una web dinámica era no indexable (no

registrables sus contenidos de cara a búsquedas) debido a que no se podía ofrecer como

Page 15: Hp_ Tutorial Básico Del Programador Web

resultado de un buscador algo que cambiaba con frecuencia. Es frecuente oir el término “URL

amigable” en referencia a una dirección web que es sencilla y recuerda un texto simple, por

ejemplo:

http://www.aprenderaprogramar.com/cursos/cursophp/paginas-dinamicas-y-estaticas.htm

 

Por el contrario, muchas veces se dice que cuando las páginas contienen .php y numerosos

parámetros con caracteres como "?", "&" y "=" la URL no es amigable. Por ejemplo:

http://www.aprenderaprogramar.com/index.php?

option=com_content&view=article&id=57&Itemid=8

 

Esta situación en la actualidad puede considerarse superada: los buscadores se han

sofisticado y son capaces de indexar URL´s dinámicas sin problemas. Algunas aplicaciones de

software libre como Joomla, Drupal, WordPress, etc. siguen manteniendo sistemas que

permiten convertir las URL´s dinámicas en URL´s amigables, pero en general podemos decir

que esto es cada vez menos necesario. Desde nuestro punto de vista, es más importante

tener una página web con un buen diseño, bien estructurada en cuanto a menús y

contenidos, que se actualice con frecuencia y que ofrezca contenidos de calidad, más que

tener o no tener URL´s amigables.

 

 

EJERCICIO

Responde a las siguientes preguntas indicando verdadero o falso y justicando brevemente tu

respuesta:

a) Hoy día ya no tiene sentido crear una página web estática, ya que los navegadores

dejarán de admitirlas en un futuro próximo.

b) Podemos reconocer si una página web es dinámica en base a si es capaz de almacenar

información que el usuario proporciona y rescatarla posteriormente. Por ejemplo: los

comentarios en un blog.

Page 16: Hp_ Tutorial Básico Del Programador Web

c) La mayor parte de los sitios web y gestores de contenidos hoy día se basan en páginas

web dinámicas, pero muchos sitios siguen siendo webs estáticas.

d) Si creamos un sitio web dinámico no podremos ser indexados por buscadores como Bing,

Google o Yahoo.

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

¿ES PHP UN BUEN LENGUAJE DE PROGRAMACIÓN?

Los orígenes de PHP están fechados en torno al año 1995. Sin embargo, fue a partir del año

1999 con la publicación de PHP 4 cuando este lenguaje de programación tomó un verdadero

auge. En sus primeros estadios de desarrollo, PHP se denominaba también “Zend Engine”,

nombre que provenía del nombre de sus creadores: Zeev Suraski y Andi Gutmans. En el año

2004 fue lanzada la versión 5 de PHP basada en el nuevo motor Zend Engine 2.0.

 

Esta nueva versión ofrecía mejoras para aplicaciones en servidores dedicados como por

ejemplo un mejor soporte para la programación orientada a objetos y una extensión

completamente nueva para el uso de MySQL, una de las bases de datos más usadas en

servidores.

La versión 6 de PHP ha estado en preparación durante largo tiempo en formato de borrador,

sin llegar a publicarse. Por ello se propuso que la nueva versión de PHP se llamara PHP 7,

dejando PHP 6 como una versión no publicada.

Algunas estadísticas indican que alrededor del 60% de los sitios Web en Internet utilizan PHP.

Este dato realmente no es comprobable a ciencia cierta, lo que sí es cierto es que PHP es un

lenguaje de programación que goza de gran popularidad y difusión. A esta circunstancia hay

que añadir el hecho de que páginas web de mucha importancia como Wikipedia o Yahoo se

apoyan en este lenguaje, lo cual demuestra que es un lenguaje muy potente que puede

servir desde para pequeñas páginas web hasta para grandes portales.

Page 17: Hp_ Tutorial Básico Del Programador Web

          

 

 

Muchas de las aplicaciones que se generan en comunidades de programadores y usuarios de

software libre usan PHP porque está disponible gratuitamente y es potente. Gracias a eso,

grandes proyectos como Wordpress, Joomla o Drupal han basado su desarrollo en el lenguaje

de programación PHP.

                     

 

 

¿Es PHP un buen lenguaje de programación? En lo referente a si PHP es un “buen” lenguaje

de programación hay que tener en cuenta muchos factores ya que el resultado final de un

desarrollo web o de una aplicación web no sólo depende de la herramienta sino de quién la

Page 18: Hp_ Tutorial Básico Del Programador Web

maneja y cómo la maneja. Podemos afirmar que PHP utilizado correctamente es un muy

buen lenguaje de programación.

Lo que está claro es que, aunque tiene ventajas e inconvenientes, es uno de los lenguajes de

programación más difundidos en Internet y se encuentra disponible en prácticamente la

totalidad de los servidores dedicados. Cuando algo tiene éxito y amplia difusión, “por algo

será”.

 

 

LA EVOLUCIÓN DE PHP EN EL TIEMPO. LAS VERSIONES.

 

PHP 3

PHP 3.0, liberada en 1998, era la primera versión que se parecía fielmente al PHP tal y como

lo conocemos hoy en día.

Una de las mejores características de PHP 3.0 era su gran extensibilidad. Cuando hablamos

de extensibilidad nos referimos a la existencia de un núcleo o core al que se le pueden ir

añadiendo fragmentos de código que permiten hacer más cosas. Se trataría de algo parecido

a tener una base sobre la que podemos ir añadiendo piezas. Veamos una imagen:

Page 19: Hp_ Tutorial Básico Del Programador Web

 

 

En esta imagen, correspondiente a los juegos de niños armables “Lego”, vemos cómo existe

una base verde. Esa base sería el core o núcleo de PHP. Luego, aprovechando que esa base

tiene preparados los anclajes para seguir poniendo piezas, vemos que se le han añadido

extensiones. Por ejemplo, la primera extensión que tiene una base azul podría ser una

extensión que permita la gestión de correos electrónicos. La segunda extensión, que tiene

una base verde, podría ser una extensión para gestionar imágenes, y así sucesivamente…

Además de facilitar el trabajo con muchas bases de datos, protocolos y sistemas

informáticos, las características de extensibilidad de PHP 3.0 atrajeron a muchos

programadores a unirse al proyecto y enviar nuevos módulos de extensión. Esta fue la clave

del enorme éxito de PHP 3.0: que fue un proyecto abierto al que se unieron muchos

programadores formando una comunidad.

Todo el nuevo lenguaje fue liberado con el nombre de 'PHP', con el significado de ser un

acrónimo juego de las letras iniciales de “Hypertext Preprocessor”.

Page 20: Hp_ Tutorial Básico Del Programador Web

A partir de su lanzamiento, PHP creció pasando a ser usado por miles de programadores y

cientos de miles de sitios Web. Se estima que PHP 3.0 conquistó una fracción del total de

servidores mundiales de en torno al 10 %, lo cual fue un éxito rotundo.

 

 

PHP 4

La principal novedad de PHP 4 está en el intérprete del lenguaje PHP. Con la nueva versión se

lograron aumentos de entre 5 y 10 veces en la velocidad de ejecución de páginas PHP

respecto a la versión anterior, lo cual fue un salto muy importante.

Además del aumento en rendimiento, se introdujeron novedades relacionadas con el soporte

de objetos en PHP. La programación orientada a objetos es una forma avanzada de

programación y gracias a estas características PHP se encuentra entre los lenguajes de

vanguardia.

Otra nueva característica de PHP 4 fue que podía soportar hilos cosa que en PHP 3 no era

posible. Un hilo es básicamente una tarea que puede ser ejecutada en paralelo con otra

tarea. La principal ventaja que podemos obtener de esta funcionalidad es que se pueden

estar haciendo varias cosas al mismo tiempo sin tener que esperar a que se termine una

tarea para empezar otra.

Para los programadores, PHP 4 incluía un depurador. Un depurador viene siendo un asistente

que nos ayuda a detectar dónde se encuentran los errores en los programas o código de

desarrollo. Esto ayuda mucho al programador y le evita quebraderos de cabeza por no poder

localizar errores. Gracias al depurador, se podían seguir con mayor profundidad esos errores

“misteriosos” que hacían perder mucho tiempo.

 

 

PHP 5, PHP 6 Y PHP 7

La principal característica de PHP 5 con respecto a PHP 4 es la mejora en la programación

orientada a objetos (POO). Aunque este tipo de programación ya se había introducido en el

lenguaje desde PHP 3, las versiones anteriores a PHP 5 tenían bastantes limitaciones para el

uso de este tipo de programación.

Page 21: Hp_ Tutorial Básico Del Programador Web

 

 

La orientación a objetos es una manera de programar que es muy usada hoy en día. No

entraremos en detalles sobre ella de momento, porque es algo avanzado dentro de la

programación y en este curso trataremos de avanzar poco a poco desde lo más básico hasta

lo más complejo.

El principal objetivo de PHP 5 ha sido mejorar los mecanismos de programación orientada a

objetos para solucionar las carencias de las anteriores versiones. El resultado ha sido un

lenguaje más potente, que cada vez es más popular y que cada vez se usa más, tanto a nivel

profesional en empresas como a nivel de usuarios que quieren construir pequeñas páginas o

portales web.

Algunas personas dicen que PHP se parece cada vez más a Java, que es quizás el lenguaje de

programación más usado en el mundo, y que también es un lenguaje de programación

orientado a objetos.

 

 

¿QUÉ VERSIÓN DE PHP USAR?

La versión de PHP a usar depende en gran medida de qué desarrollo queramos hacer. Por

ejemplo, si vamos a usar PHP para el gestor de contenidos Joomla 1.0, no es lo mismo que si

vamos a usarlo para Joomla 1.5 porque cada uno tiene sus propias necesidades en cuanto a

la versión de PHP a usar. Es decir, cada aplicación debe ir con su versión de PHP adecuada al

igual que a un vehículo a motor debemos echarle el tipo de combustible adecuado. Si a un

coche diesel le echamos gasolina, no funcionará bien. Si una aplicación que fue concebida

Page 22: Hp_ Tutorial Básico Del Programador Web

para PHP 4 la intentamos ejecutar usando PHP 5, probablemente ocurra lo mismo: no

funcionará bien.

También debemos tener en cuenta que usar siempre la última versión de algo tiene sus

riesgos. Por ejemplo las últimas versiones no suelen estar tan testeadas como las anteriores

y se pueden producir ‘agujeros de seguridad’ que tendremos que tapar con algún parche.

En nuestra opinión la versión de PHP que debemos usar es la que mejor se adapte a nuestras

necesidades y, dentro de ésta, la que sea más estable. Para este curso recomendaremos

usar PHP 5.x (al escribir 5.x nos referimos a cualquier versión de PHP 5). También es posible

seguirlo usando PHP 4.x No te preocupes ahora por la versión pues de cara al aprendizaje

básico no es importante. En cambio, sí deberás prestar atención a la versión si tratas de

instalar aplicaciones como Joomla, Drupal o WordPress en un servidor, pues hay que

asegurarse de que la versión de la aplicación sea compatible con la versión de PHP en el

servidor.

 

 

EJERCICIO

Busca información en internet sobre el actual estado de desarrollo de las versiones PHP.

¿Cuál es la última versión estable publicada? ¿En qué versiones se está trabajando como

borrador?

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

¿QUÉ NECESITO PARA ESCRIBIR CÓDIGO PHP Y CREAR PÁGINAS WEB DINÁMICAS?

Los requisitos indispensables para poder escribir y crear páginas PHP son los siguientes:

1.- Disponer de un editor de textos con el que escribir el código de la página PHP. Por

ejemplo el Notepad++ es más que suficiente (el “Bloc de notas” de Windows también

valdría pero es mucho más limitado).

 

Page 23: Hp_ Tutorial Básico Del Programador Web

En vez de un editor de textos podríamos usar un programa más avanzado (entorno de

desarrollo), pero en este curso vamos a centrarnos en el manejo básico de PHP, por lo que

utilizaremos un editor de textos.

 

2.- Un servidor dónde nuestras páginas PHP sean interpretadas y devueltas después de

dicha interpretación.

3.- Una base de datos donde guardaremos, recuperaremos y consultaremos nuestros

datos.

4.- Un navegador web, como por ejemplo Google Chrome. Puede valer cualquier otro

como Mozilla Firefox, Internet Explorer, Safari, etc.

 

Podemos destacar dos opciones:

OPCIÓN 1 OPCIÓN 2

La primera opción sería la de trabajar en local. Para ello

podemos hacer uso de un paquete personal como WAMP

SERVER que nos ahorrará tiempo y quebraderos de

cabeza.

Este paquete instalará un servidor Apache, un servidor de

base de datos MySQL, con el gestor phpMyAdmin y ,

por supuesto, PHP. Es decir, instalando un programa en

nuestro ordenador podemos simular un servidor dentro

de él.

Otra posible opción sería la de utilizar un servidor

remoto. Alguno gratuito podría valer sin más problemas.

Para ello, nos registraríamos en cualquier servicio

hosting que ofrezca alojamiento gratuito y a partir de hay

con un cliente ftp, como FileZilla, crearíamos nuestras

páginas webs dinámicas.

 

 

TIPOS DE PAQUETES DE SERVIDOR PARA INSTALACIÓN EN NUESTRO ORDENADOR.

Entre los paquetes más populares, podemos destacar y nombrar.

Nombre Descripción Logo

Page 24: Hp_ Tutorial Básico Del Programador Web

WAMP SERVER

Wamp Server utiliza las siguientes herramientas: Windows como

Sistema Operativo, Apache, como servidor web, MySQL, como

gestor de bases de datos y PHP como intérprete del lenguaje de

programación PHP.

LAMP SERVERLamp Server es un sistema análogo pero que funciona bajo el

Sistema Operativo Linux.

MAMP SERVERMamp Server es un sistema análogo pero que funciona bajo el

Sistema Operativo Macintosh.

XAMPP SERVER

Este paquete tiene la característica principal que se puede

instalar para cualquiera de los diferentes sistemas operativos, es

decir, existen versiones tanto para Windows como para Linux,

Macinstosh. Siendo, también, un sistema análogo al Wamp

Server.

 

 

¿Cuál de estos paquetes es mejor? Esta pregunta es de difícil respuesta. Si usamos Linux o

Macintosh y queremos instalar un paquete de este tipo, hemos de usar el propio de nuestro

sistema operativo. Si usamos Windows, nosotros recomendamos Wamp, pero Xampp puede

ser igualmente válido.

Más importante que elegir entre uno de estos paquetes, es elegir si trabajar en local o en

remoto. Nosotros vamos a recomendar trabajar en remoto. Los motivos para ello y cómo

hacerlo se expondrán en próximas entregas. Por ahora, debemos conocer simplemente las

alternativas.

 

Page 25: Hp_ Tutorial Básico Del Programador Web

 

EJERCICIO

Responde a las siguientes preguntas indicando verdadero o falso y justicando brevemente tu

respuesta:

a) Para escribir código PHP necesitamos un IDE con un compilador, por ejemplo Aptana

Studio.

b) No es posible visualizar páginas php en local a no ser que utilicemos un emulador de

servidor como Wamp, Xampp o similar.

c) Trabajar en local quizás sea más rápido si tenemos una conexión a internet lenta, pero por

el contrario no emulamos de forma exacta las condiciones de un servidor real.

d) Si trabajamos en local sólo podremos crear código HTML, teniendo que posponer la

creación de código PHP a un momento posterior.

e) Trabajar en remoto nos obliga a pagar la contratación de un servicio de hosting.

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

PREPARANDO EL ENTORNO DE DESARROLLO. DESCARGAR E INSTALAR NOTEPAD+

+.

Vamos a comenzar a preparar el entorno con el que vamos a trabajar para poder crear

páginas web durante este curso. Lo primero que debemos hacer es descargar el editor de

texto Notepad++ e instalarlo. Para ello nos vamos a ir a la dirección siguiente:

http://notepad-plus-plus.org

 

 

Page 26: Hp_ Tutorial Básico Del Programador Web

Cuando la página haya terminado de cargar, hacemos click en la sección download del menú.

Ten en cuenta que la apariencia de la página web puede cambiar cada pocos meses.

 

 

En la página web que nos aparecerá, descargamos la versión “Installer” actual. El installer es

el paquete de instalación automática más fácil y rápido para instalar Notepad++.

Page 27: Hp_ Tutorial Básico Del Programador Web

 

 

Una vez descargado el archivo, lo ejecutamos para instalarlo en nuestro ordenador haciendo

doble click sobre él. El proceso de instalación es muy simple y no entraremos a explicarlo con

más detalle, simplemente vete aceptando para ir cumpliendo los pasos de la instalación.

Cuando tengamos instalado el programa, ya dispondremos del editor de texto Notepad++,

con el que podremos abrir y editar cualquier fichero HTML. Podremos acceder al programa

desde Inicio -- > Programas -- > Notepad++ ó desde el icono de acceso directo en el

escritorio si se ha creado.

 

 

EJEMPLO: COMENZAR A USAR NOTEPAD++

Desde el explorador de archivos de Windows, creamos una carpeta llamada curso_php_apr2

en la unidad C.

Una vez creada la carpeta, entramos en ella. Abrimos Notepad++ y pulsamos en Archivo -- >

Guardar. Como nombre de archivo escibimos CU00808B.php (este nombre de archivo es solo

Page 28: Hp_ Tutorial Básico Del Programador Web

un ejemplo, puedes ponerle el que tú quieras) y lo guardamos dentro de la carpeta creada.

Paso seguido, cierra el programa. Para editar este archivo (o cualquier otro) con el programa

Notepad++, podemos hacer dos cosas. Bien abrir Notepad++ y elegir Archivo -- > Abrir y

seleccionar el archivo, o bien hacemos lo siguiente:

Clickamos sobre el archivo con el botón derecho del ratón y se mostrará un menu similar a

éste (Nota: en algunos casos aparecen conflictos entre la versión de Notepad++ y la versión

de Windows y este menú contextual no se muestra. En este caso, tendremos que abrir

primero Notepad++ y luego la opción Abrir del menú Archivo.)

 

 

Page 29: Hp_ Tutorial Básico Del Programador Web

En el menú desplegado seleccionamos “Edit with Notepad++”.

De una forma u otra, habremos abierto el archivo php con nuestro editor Notepad++.

 

 

Ahora escribimos el siguiente código PHP y guardamos el archivo.

<?php

echo "Curso básico de PHP.";

?>

 

 

Una vez realizados los pasos anteriores debemos seguir preparando el entorno de desarrollo

antes de poder visualizar la página PHP creada porque todavía no disponemos de un servidor

PHP que interprete nuestro código PHP. Es decir, no podrás ver la página web simplemente

haciendo doble click sobre el archivo.

Ten cuidado porque si copias el código en vez de escribirlo es posible que tengas problemas:

hay muchos tipos de comillas: “curvadas”, “sin curvar”, etc. En el código las comillas son

simples, si tú las has copiado de otro sitio es posible que el formato de las comillas no sea el

correcto. Esto puede pasar también con otros caracteres. Esto no significa que no puedas

cortar y copiar código de otro sitio, sino que debes tener presente que se te pueden

presentar problemas con el juego de caracteres (ten cuidado especialmente si pretendes

copiar algo desde Microsoft Word porque es habitual que haya problemas con los caracteres).

Page 30: Hp_ Tutorial Básico Del Programador Web

Si has seguido paso a paso todo lo que hemos expuesto y has llegado a visualizar en pantalla

el texto, es que has completado correctamente la instalación de Notepad++, que es el editor

que vamos a usar durante el curso (aunque si lo deseas también puedes seguir el curso

usando otro editor). Si no has podido instalarlo, revisa las instrucciones y comprueba que las

hayas seguido correctamente, consulta la ayuda de Notepad++ ó consulta en los foros de

aprenderaprogramar.com para obtener ayuda.

 

 

EJERCICIO

Cuando instalamos Notepad++, éste se instala dentro de una carpeta en nuestro

computador, y dentro de esa carpeta habrá un archivo ejecutable (normalmente Notepad+

+.exe) que es el que se invoca cada vez que se quiere ejecutar el programa. Responde a la

siguiente pregunta: ¿Cuál es la ruta del archivo ejecutable de Notepad++ dentro de tu

computador?

La respuesta depende del computador y sistema operativo que estés utilizando. Un ejemplo

de respuesta puede ser la siguiente: C:\Program Files\Notepad++\Notepad++.exe

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

CONFIGURACIÓN BÁSICA DE NOTEPAD++ PARA CREAR PÁGINAS PHP

Antes de poder comenzar a crear páginas PHP, necesitaremos realizar una configuración

básica de nuestro entorno de desarrollo. En nuestro caso, la configuración será bastante

simple y consistirá en elegir la codificación con la que guardaremos nuestros ficheros PHP y

seleccionar el lenguaje con el que vamos a trabajar.

 

Lo primero que vamos a hacer es abrir el programa Notepad++. Para esto, nos vamos a

Inicio -- > Programas -- > Notepad++ -- > Notepad++. Se nos abrirá el programa, mostrando

una pantalla similar a la siguiente.

Page 31: Hp_ Tutorial Básico Del Programador Web

 

 

Para seleccionar la codificación con la que trabajaremos durante todo el curso, en la pestaña

Formato, hacemos click sobre “Codificar en UTF-8 sin BOM”, tal y como se indica en la

imagen siguiente.

 

 

Comprueba periódicamente que la opción de codificación sea siempre “Codificar en UTF-8 sin

BOM”. Si no es así, puedes tener problemas y no obtener los resultados deseados.

Ahora tendremos que indicar que vamos a utilizar el lenguaje de etiquetas PHP. Para ello, en

la pestaña lenguaje abrimos P y seleccionamos PHP de entre todas las opciones posibles.

Sería algo similar a lo que se muestra en la imagen siguiente.

Page 32: Hp_ Tutorial Básico Del Programador Web

 

 

Ya tenemos todo listo para poder empezar a crear nuestras páginas PHP.

 

 

AUTOCOMPLETAR. UNA VENTAJA DE NOTEPAD++

Para facilitar la escritura de código Notepad++ cuenta con una opción de autocompletar, la

cual se activa en la pestaña Configurar --> Preferencias. En la ventana que nos aparecerá,

dentro de la pestaña Copia de seguridad/Autocompletar ó Autocompletar (autocompletion)

debemos activar la casilla “Habilitar autocompletar en cada entrada” (Enable autocompletion

on each input) y “Pistas para los parámetros de la función” (Function parameters hint on

input). Ten en cuenta que la situación de los menús y opciones puede variar de una versión a

otra de Notepad++, por lo que no siempre encontrarás estas opciones en el mismo sitio que

las estamos describiendo.

Page 33: Hp_ Tutorial Básico Del Programador Web

 

 

 

AUTOCERRADO DE ETIQUETAS. OTRA VENTAJA DE NOTEPAD++

Para activar el autocerrado inteligente de etiquetas HTML, en menú superior seleccionamos

TextFX --> TextFX Settigns --> Autoclose XHTML/XML tag

En algunas versiones de Notepad++ no aparece TextFX en el menú superior. En este caso,

debemos:

Page 34: Hp_ Tutorial Básico Del Programador Web

a) En el menú Configurar -- > Preferencias. En la ventana que nos aparecerá, tenemos que

buscar la opción Autocompletar (autocompletion) como hicimos anteriormente y marcar la

opción “html/xml close tag”

b) O bien instalar el plugin TextFX Characters accediendo a Plugins, elegir TextFX Characters

y pulsar Install. Una vez instalado el plugin, activar Autoclose XHTML/XML tag.

 

También es de interés activar TextFX --> TextFX Settigns --> Autoclose {([.

En caso de no tener TextFX usaríamos en el menú Configurar - > Preferencias, Activar

autoinsert {([.

 

 

Estas opciones nos permiten en general una escritura más rápida, aunque si en algún

momento nos resultan molestas las podemos desactivar.

 

Page 35: Hp_ Tutorial Básico Del Programador Web

 

OTRAS VENTAJAS DE NOTEPAD++

 Quizás te preguntes por qué hemos elegido Notepad++ para este curso. La respuesta es

que tiene diversas ventajas, por ejemplo:

 

- Consume pocos recursos del sistema. No sobrecargarás tu ordenador porque el programa

es al mismo tiempo que potente, ligero.

- Dispone de la función autocompletar que ya hemos citado, que nos facilita ayuda mientras

estamos escribiendo el código.

- Permite abrir múltiples archivos simultáneamente, y reemplazar un texto en todos los

archivos abiertos a la vez si así lo deseamos.

- Permite abrir dos archivos y realizar una comparación línea a línea entre ellos, indicándonos

en qué líneas existen diferencias entre un archivo y otro.

- El código se nos muestra con un conjunto de colores que permite ver con claridad las

etiquetas de apertura y cierre y otros elementos especiales de la codificación.

- Permite ampliar sus posibilidades mediante la instalación de plugins gratuitos disponibles

en internet.

- Tiene muchísimas más posibilidades, pero no podemos citarlas todas. En conjunto, es un

buen editor útil para programadores a nivel profesional y para principiantes.

- Es software libre que podemos descargar gratuitamente desde internet.

 

Como verás Notepad++ nos parece un buen editor de código para programación. Esto no

quiere decir que no haya otras editores igual de buenos y potentes. De hecho, si ya eres

usuario de algún otro editor puedes seguir este curso usándolo.

Page 36: Hp_ Tutorial Básico Del Programador Web

 

 

EJERCICIO

En el menú Ayuda (?) aparecerá una opción “Acerca de Notepad…” (About Notepad++).

Consulta la información sobre Notepad++ y responde a esta pregunta: ¿Qué versión de

Notepad++ tienes instalada en tu computador?

Una opción interesante de Notepad++ es que dispone de numerosos plugins. Busca algún

plugin que te resulte de interés, instálalo (consulta antes la documentación sobre el plugin y

comprueba que sea un plugin actualizado y compatible con tu versión de Notepad++) y

prúebalo. Para la instalación puedes utilizar el menú Plugins - > Plugins Manager o hacerlo de

otras maneras. Una vez instalado y probado el plugin responde:

a) ¿Cuál es el nombre del plugin?

b) ¿Quiénes son el autor o autores? ¿Cuál es su página web?

c) ¿Cuál es la utilidad del plugin?

 

Nota: no es recomendable instalar plugins antiguos.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

DESCARGAR E INSTALAR EL CLIENTE FTP FILEZILLA. TRABAJAR REMOTAMENTE

Una forma de trabajar en desarrollos webs es remotamente. Es decir, modificando

directamente en el servidor, donde tengamos nuestro sitio web, los archivos necesarios. La

otra forma de trabajo sería el trabajo en local, es decir, manteniendo los archivos en nuestro

propio ordenador.

 

Page 37: Hp_ Tutorial Básico Del Programador Web

En general, los desarrollos web se hacen sobre servidores remotos y para trabajar con ellos

tenemos que trabajar remotamente. Para esto, lo que tenemos que hacer en primer lugar es

instalar un cliente FTP. Un cliente FTP es un programa que nos permite conectarnos a un

servidor FTP para transferir archivos y realizar otras tareas (renombrar archivos, crear

directorios, asignar permisos, etc.).

Nosotros vamos a usar en este curso un cliente ftp gratuito y de gran popularidad porque es

muy útil y potente. Para descargar este programa gratuito, lo primeros que vamos a hacer es

ir a la dirección web siguiente: http://filezilla-project.org/

Aparecerá una web similar a la que se muestra en la siguiente imagen (aunque ten en cuenta

que el aspecto puede ir variando cada pocos meses).

 

 

Ahora tendremos que descargar el cliente haciendo click en Download FileZilla Client. Busca

el link de descarga y ten cuidado de elegir Filezilla Client y no Filezilla Server, ya que es el

client el que buscamos.

Page 38: Hp_ Tutorial Básico Del Programador Web

Tras realizar este paso, se nos abrirá una nueva página web con los links de descarga (el

aspecto de la web puede cambiar cada pocos meses).

 

 

Para que comience la descarga del programa, haremos click en Download Now comprobando

que sea la versión adecuada para nuestro sistema operativo (lee lo que indica junto al link de

descarga).

Una vez descargado, si usamos Windows lo instalaremos como cualquier otro programa de

Windows. Tener en cuenta que si en vez de Windows estamos usando Linux o Macintosh,

existen versiones de Filezilla propias de estos sistemas y debemos elegir la adecuada según

el sistema que estemos usando. Una vez instalado el programa lo abrimos visualizando una

imagen que será similar a la siguiente.

Page 39: Hp_ Tutorial Básico Del Programador Web

 

 

Ahora tendremos que crear una conexión con nuestro servidor FTP y conectarnos. Para ello

hacemos click en Archivo -> Gestor de Sitios

 

 

Y en la pantalla que se nos mostrará, seleccionamos nuevo sitio. Aquí sería donde

introduciríamos los datos de acceso si los tuviéramos. Como ahora no los tenemos, cerramos

la ventana.

Page 40: Hp_ Tutorial Básico Del Programador Web

 

 

Para establecer una conexión con un servidor remoto en general tendremos que:

- Especificar el nombre de servidor: para conocerlo tenemos que consultar al proveedor que

ofrece el servicio del servidor, o que nos hayan facilitado este dato.

- Especificar como modo de acceso “Normal”.

- Introducir un nombre de usuario que nos habrá facilitado el proveedor que ofrece el servicio

del servidor (o que habremos establecido nosotros mismos).

- Introducir una contraseña que nos habrá facilitado el proveedor que ofrece el servicio del

servidor (o que habremos establecido nosotros mismos).

 

Page 41: Hp_ Tutorial Básico Del Programador Web

Ten en cuenta que en algunos servidores antes de establecer una conexión ftp hay que dar

un paso previo que consiste en “crear una cuenta ftp”. Si no sabes si dispones de una cuenta

ftp, consulta a tu proveedor.

Una vez introducidos los datos de la conexión le daríamos a conectar y aparecería una

pantalla similar a la siguiente, donde, como podemos observar, tenemos un explorador de

archivos.

Esto nos permitirá modificar directamente en el propio servidor los archivos deseados (antes

de hacer modificaciones en el servidor es conveniente hacer copia de seguridad y guardarla

en local de modo que si cometemos algún error o borrado accidental podamos recuperar los

archivos) y subir o descargar los archivos locales que queramos.

 

 

Nota: explicaremos más adelante dentro de este mismo curso cómo crear una cuenta de

hosting en un servidor, lo que nos permitirá conectar con el servidor usando Filezilla. Si no

dispones de una cuenta con nombre de servidor, nombre de usuario y password no intentes

conectarte usando Filezilla porque no podrás. En este momento del curso, lo único necesario

es que compruebes que tienes Filezilla instalado en tu computador y que puedas abrir el

programa sin problemas.

Page 42: Hp_ Tutorial Básico Del Programador Web

 

 

EJERCICIO

Si has instalado Filezilla, éste se ejecuta gracias a que existe un archivo ejecutable localizado

en una carpeta de nuestro computador. Responde a las siguientes preguntas:

a) ¿En qué ruta se encuentra el archivo ejecutable de FileZilla en tu computador? La

respuesta depende del computador y sistema operativo que estés empleando. Un ejemplo de

respuesta puede ser este: C:\Program Files\FileZilla FTP Client\filezilla.exe

b) Consulta la opción de menú Ayuda (Help) y responde a las siguientes preguntas. ¿Cuál es

la versión de Filezilla que has instalado? ¿Cuáles son los datos de tu sistema operativo?

Puedes usar la opción <<Copy to clipboard>> para recuperar estos datos desde la ventana

de la ayuda de Filezilla.

LAS VENTAJAS DE GOOGLE CHROME. ¿POR QUÉ USAR CHROME?

En este curso vamos a usar Google Chrome, pero si lo prefieres por algún motivo como

tenerlo ya instalado, Mozilla Firefox también nos parece una opción recomendable, y puedes

seguir este curso también con este navegador.

 

Otros navegadores como Internet Explorer también se pueden usar, pero en principio no es lo

más recomendable por diversos motivos. Uno de ellos es que no dispone de las mismas

herramientas que Chrome o Firefox, que son los navegadores más usados por

programadores y desarrolladores web.

Vamos a citar algunas ventajas de Google Chrome:

a) El navegador se abre muy rápidamente en comparación con otros navegadores. Google

Chrome es muy ligero, por eso tarda poco en abrirse.

b) El navegador tiene una buena velocidad de carga de las páginas web por las que vamos

navegando. Esto se debe a su estructura interna, que también es ligera.

Page 43: Hp_ Tutorial Básico Del Programador Web

c) Por el mero hecho de instalarlo, ya disponimos de una potente herramienta de análisis y

depuración de páginas web o “Inspeccionador de elementos”. Mozilla Firefox también viene

con herramientas de análisis incorporadas, y además dispone de la extensión “Firebug”, muy

valorada por los programadores.

d) Si tenemos abiertas varias pestañas y una de ellas se tiene que cerrar debido a algún error

o bloqueo, no se nos quedará colgado el programa al completo, sino únicamente la pestaña o

pestañas afectadas.

 

 

DESCARGAR E INSTALAR EL NAVEGADOR GOOGLE CHROME. VISUALIZAR PÁGINAS

HTML.

Para poder visualizar nuestras páginas web, vamos a instalar el navegador Google Chrome.

Lo primero que tenemos que hacer para instalar dicho navegador, es descargarlo de la web

oficial de Google en la dirección: http://www.google.com/chrome?hl=es

También puedes acceder simplemente escribiendo “descargar google chrome” en un

buscador (Google, Yahoo, Bing, etc.) Una vez accedamos hemos de buscar el link de

descarga.

Page 44: Hp_ Tutorial Básico Del Programador Web

 

 

Hacemos click en ‘Descargar Google Chrome’. Nos aparecerá una página donde se nos pide

que aceptemos las condiciones. Aceptamos para instalar el navegador.

Page 45: Hp_ Tutorial Básico Del Programador Web

 

 

El proceso normalmente comienza mostrando una pantalla que indica “Gracias por probar

Google Chrome” y de forma automática, comienza a su vez el proceso de instalación en

nuestro ordenador (si te pide permiso para la instalación acepta para permitir el proceso).

Page 46: Hp_ Tutorial Básico Del Programador Web

 

 

Una vez descargardo e instalado, ya podremos ver páginas web con éste navegador. Para

acceder a Google Chrome, nos iremos a Inicio --> Todos los programas --> Google Chrome.

También podremos acceder desde el escritorio a través de un enlace directo.

 

 

LAS CUESTIONES MÁS BÁSICAS EN GOOGLE CHROME (Y EN GENERAL PARA

CUALQUIER NAVEGADOR)

Al abrir el navegador Google Chrome se nos mostrará una ventana similar a la siguiente. Ten

en cuenta que el aspecto puede variar según la versión de Chrome que estemos usando, por

tanto tendremos que buscar las opciones según aparezcan en nuestro computador, que

puede diferir en algunos detalles de lo que indicamos aquí.

Page 47: Hp_ Tutorial Básico Del Programador Web

 

 

Una vez abierto Chrome podremos abrir tantas pestañas como queramos, introducir una

dirección URL en la barra de direcciones, recargar la página actual (también podremos pulsar

F5 como atajo de teclado para conseguir recargar una página) y acceder al menú de

opciones de Google Chrome entre otras operaciones.

Page 48: Hp_ Tutorial Básico Del Programador Web

Para cambiar la página web de inicio que viene por defecto en nuestro navegador Google

Chrome (la que aparece cada vez que abrimos el navegador), procederemos de la siguiente

forma:

a) En algunas versiones de Chrome, tendremos que hacer click en ‘Llave inglesa’ y dentro del

menú desplegable que nos aparece en la opción ‘opciones’. Se nos abrirá una nueva pestaña

donde en la opción ‘Pagina de inicio’ pondremos por ejemplo http://aprenderaprogramar.com

( o la página que queramos). Otras versiones no traen llave inglesa.

Page 49: Hp_ Tutorial Básico Del Programador Web

 

 

b) En otras versiones de Chrome, haremos click en el icono a la derecha de la barra de

direcciones para desplegar el menú y elegimos “Configuración”. En la opción “Iniciar sesión”,

elegimos la opción “Abrir una página específica o un conjunto de páginas -- > Establecer

páginas”, introducimos la URL de la queramos sea nuestra página de inicio, por ejemplo

http://aprenderaprogramar.com ( o la página que queramos) y pulsamos aceptar.

c) Otra opción para acceder a la configuración es escribir en la barra de direcciones lo

siguiente (como si fuera una dirección web): chrome://settings/

Page 50: Hp_ Tutorial Básico Del Programador Web

 

 

LIMPIAR LA CACHÉ Y OTRAS OPERACIONES ÚTILES QUE USAREMOS CON

FRECUENCIA

Page 51: Hp_ Tutorial Básico Del Programador Web

Llamamos “caché” o “cache” a contenidos que se almacenan en nuestro navegador y que no

se descargan desde internet, sino que los tenemos localmente en nuestro equipo. Estos

contenidos pueden ser texto o imágenes y permite que cuando navegamos por una web las

páginas se muestren más rápido ya que parte de la información no se descarga de internet

(o no se actualiza desde los archivos fuente) sino que se mantiene en nuestro navegador. Sin

embargo, cuando estamos creando páginas web esto puede dar lugar a resultados

engañosos, ya que tras hacer una modificación puede que el navegador no la muestre por

estar utilizando contenidos de la caché. Por tanto una operación que va a ser de gran

utilidad, es limpiar la caché cuando deseemos que todo el contenido venga directamente de

internet. Si no eliminamos la cache puede que lo que estemos visualizando en nuestra

pantalla de ordenador sea información cacheada y, por lo tanto, no actualizada.

Para limpiar la caché del navegador tenemos que hacer lo siguiente: Llave inglesa o icono

para desplegar el menú --> Herramientas --> Eliminar (borrar) datos de navegación. También

podemos acceder escribiendo directamente en la barra de direcciones

chrome://settings/clearBrowserData como si se tratara de una dirección web.

Page 52: Hp_ Tutorial Básico Del Programador Web

 

 

En la pantalla que se nos muestra a continuación seleccionamos todas las opciones, y para

definir desde cuándo en la opción “Eliminar elementos almacenados desde:” elegimos ‘el

origen de los tiempos’ (es decir, borrarlo todo sin dejar nada).

Page 53: Hp_ Tutorial Básico Del Programador Web

 

 

Para guardar una página web en local debemos simplemente ir a llave inglesa o icono de

despliegue de menú y seleccionar ‘Guardar página como…’ y seleccionar el nombre y

ubicación donde queremos guardar la página HTML.

Para añadir una página a favoritos debemos clickar sobre marcadores (normalmente un

icono con forma de estrella a la derecha de la barra de direcciones) y elegir el nombre y

carpeta donde guardaremos el nuevo marcador favorito. Esto sirve para ir manteniendo una

Page 54: Hp_ Tutorial Básico Del Programador Web

colección de enlaces a páginas web que visitamos con frecuencia, de forma que pulsando

sobre el enlace accedemos directamente a la web sin necesidad de escribir la url en la barra

de direcciones. Para visualizar esa colección de enlaces tenemos que desplegar el menú y

elegir la opción Marcadores -- > Mostrar barra de marcadores.

Si queremos ver las propiedades de una imagen clickamos sobre la imagen con el botón

derecho del ratón y pulsamos en ‘Inspeccionar elemento’ en el menú desplegable que se nos

abre. Así veremos el tamaño de la imagen.

Para hacer zoom basta con utilizar los siguientes atajos de teclado: ‘Ctrl’ + ‘+’ (más zoom,

es decir, pulsando la tecla CTRL y al mismo tiempo la tecla +, logramos acercar la vista),

‘Ctrl’ + ‘-‘ (menos zoom, es decir, alejar la vista). O si lo preferimos usar ‘Ctrl’ + ‘ruleta o

rueda del ratón’ hacia arriba o hacia abajo, para acercar o alejar la vista.

En cualquier caso, para volver a ver la página con su tamaño original sólo tenemos que

pulsar ‘Ctrl’ + ‘0’.

 

 

CÓMO ACTUALIZAR GOOGLE CHROME

Google Chrome se actualiza automáticamente cuando detecta que hay una nueva versión del

navegador. El proceso de actualización se produce en segundo plano y no es necesario que

realices ninguna acción. No obstante, puedes comprobar si el navegador está actualizado

pulsando sobre llave inglesa o icono para desplegar el menú --> Información de Google

Chrome. Ahí te aparecerá un mensaje con la versión que estás usando actualmente, y te

indicará si el navegador está actualizado o no. También puedes acceder a esta información

escribiendo chrome://chrome/ en la barra de direcciones como si fuera una dirección web.

Que el navegador se mantenga actualizado sirve para tratar de evitar posibles fallos de

seguridad y ataques de virus o programas maliciosos.

 

 

EJERCICIO

Consulta la opción de menú Ayuda (Help) de tu navegador y responde a las siguientes

preguntas. ¿Qué navegador y qué versión de navegador estás empleando?

Page 55: Hp_ Tutorial Básico Del Programador Web

Indica si las siguientes afirmaciones son verdaderas o falsas y justifica brevemente tu

respuesta:

a) Cuando creamos una página web con php y la visualizamos, al guardar la página con la

opción Guardar como del navegador, guardaremos el código PHP que la generó.

b) Cuando creamos una página web con php y la visualizamos, al guardar la página con la

opción Guardar como del navegador, guardaremos el código HTML que la generó.

c) Con la opción Guardar como del navegador no podemos guardar una página web debido a

que el código PHP llega encriptado al navegador y éste no lo muestra al usuario.

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

TRABAJAR EN LOCAL O CON UN SERVIDOR REMOTO PHP. ¿QUÉ ES MEJOR?

En este artículo vamos a intentar mostrar las diferencias entre trabajar en local (en nuestro

computador) o trabajar en un servidor remoto. Ambas opciones pueden ser válidas, aunque

nosotros vamos a recomendar seguir este curso trabajando en remoto.

 

La principal diferencia se encuentra en que en un servidor remoto, ya dispondremos de las

herramientas necesarias e instaladas. En el trabajo en local, tendremos que instalar las

herramientas de trabajo necesarias: servidor web, PHP, MySQL, etc. (Las herramientas no

tienen que ser exactamente las indicadas, sólo se muestran a modo de ejemplo).

En un primer planteamiento podríamos pensar que sería mucho mejor trabajar en remoto

porque el trabajo de la instalación de las herramientas y tecnologías necesarias ya estaría

hecho. Pero esto puede ser algo no deseado porque no tendremos control total sobre esas

herramientas y tecnologías, siendo el proveedor del hosting el que controlará las

actualizaciones, configuraciones y herramientas instaladas. Aunque siempre podremos

ponernos en contacto con dicho proveedor y indicarle que deseamos unas u otras

configuraciones y ver si es posible el cambio por su parte.

Page 56: Hp_ Tutorial Básico Del Programador Web

Además de las anteriores, otra de las diferencias entre estas dos formas de trabajar, es la

actualización de los cambios en el servidor. Si trabajamos en remoto directamente sobre

nuestro sitio web, los cambios se hacen instantáneamente ya que los archivos que

modificamos son los que un usuario que navega por Internet puede observar. Esto tiene unos

pros y unos contras. Como ventaja podemos indicar que, sabiendo lo que estamos haciendo y

no cometiendo errores, tendremos una página actualizada al instante. Si cometemos errores

y la página, con esos errores, no puede visualizarse, los usuarios de Internet tampoco podrán

verla y esto es una desventaja.

¿Qué pasaría si trabajamos en local? Pues si trabajamos en local tendremos la ventaja de

poder probar y visualizar todos los cambios en nuestro computador y hasta que esos cambios

no sean de nuestro agrado, nadie más tendrá acceso a ellos, teniendo siempre nuestro

servidor sin cambios. De esta manera, la página web no se vería modificada hasta que

nosotros lo decidamos una vez hayamos probado los cambios. Ahora bien, cuando estos

cambios sean de nuestro agrado y quedemos totalmente conformes, para que éstos sean

visibles en Internet, tendremos que sobrescribir los archivos modificados localmente al

servidor remoto. Es decir, hacemos un trabajo extra: primero, hacer las modificaciones en

local, luego, trasladar esas modificaciones al servidor remoto.

Si no tienes una buena conexión a Internet, lo más recomendable es trabajar en local y subir

la página cuando esté terminada, ya que trabajar en remoto requiere una buena conexión a

internet para poder guardar nuestro trabajo en el servidor remoto a medida que lo vayamos

desarrollando.

Estas diferencias que hemos comentado serían las diferencias más claras entre estas dos

formas de trabajar.

 

 

¿QUÉ ES MEJOR, TRABAJAR EN LOCAL O EN REMOTO?

Page 57: Hp_ Tutorial Básico Del Programador Web

 

La mejor forma de trabajo es la que mejor se adapta a nuestras necesidades y/o

conocimientos.

Las personas que están dando sus primeros pasos en programación PHP pueden elegir entre

una opción u otra, y quizás ambas sean válidas. Nosotros vamos a recomendar que se

trabaje en remoto por las siguientes razones:

a) Se asemeja más a lo que va a ser el trabajo con desarrollos web reales. Aunque ahora se

trate de aprendizaje, será un aprendizaje más cercano a lo que es la realidad.

b) Nos podemos despreocupar (en cierta medida) de cuestiones de configuración del servidor

e instalación de herramientas.

c) Existen proveedores que ofrecen hosting gratuito, por lo que no habremos de contar con

un dominio de internet propio ni una cuenta de hosting (alojamiento de archivos, bases de

datos, etc.) de pago. Es cierto que las ofertas de servicio de hosting gratuito tienen

limitaciones importantes, pero de cara al aprendizaje nos resultarán suficiente.

 

Las grandes empresas no suelen hacer modificaciones sustanciales de sus sitios web

directamente sobre el sitio, sino que disponen de un servidor de pruebas (al que se

denomina servidor de desarrollo) donde ensayan los cambios que, una vez contrastados, son

Page 58: Hp_ Tutorial Básico Del Programador Web

trasladados al servidor de acceso público al que se suele denominar servidor de producción.

Es decir, las grandes empresas no suelen trabajar en local (alojando todo en sus propios

computadores) entre otras cosas porque buscan emular con la mayor fiabilidad posible lo que

van a ser los ambientes y circunstancias de los servidores donde finalmente se van a alojar

sus sitios web.

En este curso vamos a explicar cómo trabajar sobre un servidor remoto. No obstante, si ya

tienes instalado un servidor local (como Wamp ó Xampp) y estás acostumbrado a él también

podrás seguir el curso usando cualquiera de estas plataformas.

 

 

EJERCICIO

Indica si las siguientes afirmaciones son verdaderas o falsas y justifica brevemente tu

respuesta:

a) Trabajar en remoto en desarrollos web alude a que la persona que crea la página web

realiza el trabajo desde distintos puntos de conexión, lo que permite por ejemplo que cree

una página web mientras está viajando.

b) Hoy día es posible disponer de forma gratuita de una dirección web y servicio de hosting

gratuito, con lo cual podemos crear páginas web basadas en PHP sin necesidad de contratar

un servicio de hosting.

c) Las grandes empresas siempre trabajan en local (en sus propios computadores) antes de

trasladar los cambios a los servidores de producción, con el fin de evitar caídas del servicio.

d) WampServer permite emular un servidor en nuestro propio computador. También haría

posible que nuestro computador funcionara como servidor remoto para servir contenidos a

través de internet.

CREAR UNA CUENTA DE HOSTING GRATUITA EN UN SERVIDOR PHP Y ACCEDER VÍA

CPANEL Y VÍA FTP

En esta entrega vamos a crear una cuenta de hosting gratuita en un servidor web que nos

permita trabajar con PHP y accederemos a éste vía Panel de Control (Cpanel) y vía FTP.

Page 59: Hp_ Tutorial Básico Del Programador Web

 

CREAR CUENTA DE HOSTING GRATUITA

En Internet hay muchas páginas web que permiten crear una cuenta de hosting gratuito en

un servidor php: por ejemplo www.000webhost.com, www.byethost.com,

www.agilityhoster.com y varios más. Creando una cuenta en un hosting gratuito, disponemos

de un servidor (que compartimos con otros usuarios) donde podemos alojar una página web.

Para este curso, vamos a utilizar un servidor gratuito porque es adecuado para aprender. En

concreto usaremos el servidor de Byethost (byethost.com), aunque podríamos usar cualquier

otro porque todos ellos son similares. También, si dispones de una cuenta de hosting de pago

y de un dominio, puedes utilizar cualquier servidor siempre que ofrezca soporte php y base

de datos MySql.

En nuestro caso, en primer lugar crearemos la cuenta de hosting gratuita. Para ello,

accedemos a la página web de Byethost, introduciendo en nuestro navegador la siguiente

dirección: www.byethost.com. Hazlo y vete siguiendo los pasos que indicamos.

Nos aparecerá una página que ofrece diferentes opciones (ten en cuenta que el aspecto

puede variar cada pocos meses):

Page 60: Hp_ Tutorial Básico Del Programador Web

 

 

Buscamos el enlace donde diga “Free hosting” (alojamiento gratuito) y pulsamos sobre él.

Ahora debemos buscar la opción para crear una cuenta (sign up):

Page 61: Hp_ Tutorial Básico Del Programador Web

 

 

Una vez accedemos a la página de creación de una cuenta, se nos mostrará un formulario

donde tendremos que rellenar una serie de datos. Aquí tendremos que tener en cuenta que

el nombre de usuario que insertemos, estará ligado a la url de acceso a nuestro sitio. Es

decir, si como nombre de usuario (username) introducimos ‘lacocinademarco’, la dirección de

nuestro sitio Web será similar a la siguiente ‘http://lacocinademarco.byethost31.com’:

En nuestro caso introduciremos una serie de datos a modo de ejemplo tal y como podemos

ver en la imagen que se muestra a continuación.

Page 62: Hp_ Tutorial Básico Del Programador Web

 

 

Una vez hayamos finalizado de introducir los datos solicitados, haremos click sobre el botón

Registrar (Register) y nos aparecerá una página Web indicándonos que se nos ha enviado un

correo electrónico a la dirección de correo que hayamos facilitado en el formulario y en ese

correo nos indicarán un enlace web (dirección url) donde debemos activar nuestra cuenta.

El último paso que nos quedaría para crear nuestra cuenta de hosting gratuita sería entrar a

nuestro correo y hacer click en el enlace de activación del correo de Byethost que nos acaba

de llegar.

Dear byethost7.com's Member, Thank you for registering with byethost7.com.

Please click on the link below to activate your account. If the page does not display, you may copy and paste the link

to your browser. http://securesignup.net/activate.php? user=b7_1372194&email =

[email protected] & hash=8gtfg9sfddd17c98hfdghj39637c764&token=-572342451

Page 63: Hp_ Tutorial Básico Del Programador Web

While you wait for your account to activate, please 'like' us at http://www.facebook.com/free.byethost

best regards byethost7.com

 

 

Acto seguido se nos indicará que la activación fue realizada con éxito y se nos enviará un

nuevo correo electrónico con la información detallada de nuestros datos de acceso.

El correo que nos envía Byethost con la información de acceso detallada tiene más o menos

el siguiente contenido: “Dear Valued Customer, Thank you for registering at byethost7.com.

We are…”

Además nos envían los datos de acceso (los que ponemos aquí son a modo de ejemplo, tú

debes haber recibido tus propios datos de acceso):

Cpanel Username: b7_datos

Cpanel Password: elpassword

Your url: http://apr2.byethost7.com or http://www.apr2.byethost7.com

FTP Server: ftp.byethost7.com

FTP Loging: b7_datos

FTP Password: elpassword

MySQL Database Name: must create in Cpanel

MySQL Username: b7_datos

MySQL Password: elpassword

MySQL Server: see CPanel

Cpanel URL: http://cpanel.byethost7.com

 

 

Estos datos son importantes pues son los que nos permitirán gestionar todo lo necesario

relativo a nuestra página web. Conviene imprimirlos además de mantenerlos bien localizados

en un archivo de texto dentro de nuestro ordenador.

Page 64: Hp_ Tutorial Básico Del Programador Web

 

 

ACCEDER VÍA PANEL DE CONTROL (CPANEL)

Para acceder vía Cpanel, debemos ir a la url que nos hayan facilitando, en este ejemplo

http://cpanel.byethost7.com, e introducir el nombre de usuario y la contraseña.

 

 

Una vez comprobados que los datos sean correctos, se nos abrirá el Panel de Control (Cpanel

en este hosting, pero puede ser otro panel similar si estamos usando otro hosting)

Page 65: Hp_ Tutorial Básico Del Programador Web

 

 

Dentro de Cpanel existen distintas áreas. Podemos ver un área de información de la cuenta,

un área de administrador de archivos que nos proporciona un explorador de archivos

parecido al de Windows o Filezilla pero que además nos permitirá descomprimir archivos .zip

y, una tercera área con el que podremos acceder a las bases de datos previamente creadas.

 

 

ACCEDER VÍA FTP CON FILEZILLA

Page 66: Hp_ Tutorial Básico Del Programador Web

El proceso es el explicado en la anterior entrega del curso dedicada a Filezilla, con la

salvedad que los datos necesarios son los que encontraremos en el Cpanel en el área

marcada de información del sistema, que serán los mismos que hayamos recibido por correo

electrónico. Una vez abierto Filezilla, introducimos nombre de servidor, nombre de usuario y

contraseña y de esta manera accedemos al sistema de archivos de nuestro servidor. Te

recomendamos que guardes los datos de la conexión, para ello accede a FileZilla y haz en

Archivo -> Gestor de Sitios para almacenar el acceso.

Accede al servidor usando FileZilla para comprobar que esté todo correcto.

Si logras acceder debes ser capaz de visualizar el sistema de carpetas y archivos en el

servidor:

 

 

Si no logras acceder a Cpanel o no logras acceder al sistema de archivos remoto usando

FileZilla, escribe una consulta en los foros aprenderaprogramar.com.

 

 

EJERCICIO

Page 67: Hp_ Tutorial Básico Del Programador Web

Cuando se trabaja con un servidor es importante saber cómo visualizar el sistema de

archivos en el servidor, cómo subir, bajar y borrar archivos:

a) Crea un archivo en tu computador denominado prueba.txt y súbelo al servidor remoto

usando FileZilla. Para ello, desde el explorador de Windows arrastra el archivo hasta la

ventana de FileZilla donde se encuentran los archivos remotos. Una vez subido (transferido

de tu computador al servidor) en la parte inferior te aparecerá Transferencias Satisfactorias

(1) que indica que se ha transferido un archivo. Pincha sobre la ventana del sistema de

archivos en remoto y pulsa F5 para refrescar la vista, ahí debe aparecer el archivo

prueba.txt.

b) Borra el archivo del servidor remoto usando FileZilla. Para ello pincha encima del nombre

de archivo y pulsa la tecla Supr (borrar ó Del).

c) También se puede acceder al sistema de archivos mediante un file manager o similar

desde el panel de control (Cpanel o similar) del servidor. Accede al file manager y sube el

archivo prueba.txt al servidor.

d) Borra el archivo prueba.txt del servidor usando el file manager.

PREPARAR EL ENTORNO PARA TRABAJAR EN REMOTO

En entregas anteriores ya se indicó como acceder vía FTP al servidor remoto. Por lo tanto, no

vamos a volver a explicar como conectarnos a nuestro servidor mediante FTP y daremos por

supuesto que ya estamos conectados. Una vez estemos conectados, nos aparecerá una

imagen similar a la siguiente:

 

Page 68: Hp_ Tutorial Básico Del Programador Web

 

 

Ahora debemos entrar en el directorio remoto htdocs (en otros servidores el nombre del

directorio de trabajo suele ser public_html ó www). Este directorio es en el que debemos

crear nuestras páginas en PHP ya que será el directorio que el servidor use para servir las

páginas web. Los archivos en este directorio serán accesibles escribiendo la dirección web

raíz de nuestro sitio. Si tenemos un dominio propio, accederemos escribiendo

http://www.nombreDominio/index.php. Si hemos creado una cuenta de hosting gratuito será

accesible desde el navegador escribiendo la dirección web que nos haya indicado el

proveedor del servicio, por ejemplo: http://apr2.byethost7.com/index.php

Esta dirección nos la indica el proveedor del servicio de hosting gratuito: recordar la entrega

donde explicamos la creación de la cuenta de hosting gratuito donde indicábamos que el

dominio una vez registrada nuestra cuenta en el hosting era http://apr2.byethost7.com. (Esta

dirección es un ejemplo. En tu caso, si has creado tu cuenta gratutita, tendrás tu propia

dirección que te permita acceder).

Esto indica que dentro del directorio htdocs, tenemos creado un fichero en PHP llamado

index.php y su contenido será el mostrado en el navegador al acceder a la URL

anteriormente indicada.

Page 69: Hp_ Tutorial Básico Del Programador Web

Nota: Si no ponemos el nombre del fichero en la ruta del navegador, es decir, si simplemente

escribimos http://apr2.byethost7.com, por defecto el servidor buscará un fichero llamado

index.php, index.html ó index.htm para enviar la respuesta html al navegador. Es decir, si se

escribe http://apr2.byethost7.com/miarchivo.php se buscará el archivo miarchivo.php, pero si

se escribe http://apr2.byethost7.com el servidor buscará el archivo index existente y ese será

el que devuelva.

 

 

MI PRIMERA PÁGINA EN PHP

Al entrar en el directorio htdocs, es posible que veamos que ya existe una página index.htm

(ó index.html ó similar). La razón de esto es que en algunos servidores cuando creamos una

cuenta gratuita, el proveedor de hosting automáticamente nos crea dicho fichero que por

ejemplo puede contener un mensaje de bienvenida.

Antes de crear nuestra primera página en PHP, borraremos la página index.html ya que su

contenido no nos interesa. Para esto, haremos click con el botón derecho del ratón sobre el

fichero que deseamos borrar y en el menú desplegable, que nos aparecerá, pulsaremos en

borrar.

Page 70: Hp_ Tutorial Básico Del Programador Web

 

 

Una vez borrado el archivo, crearemos en local (en nuestro ordenador) un archivo al que

llamaremos index.php. Para ello usaremos Notepad++. Una vez creado el archivo, lo

subiremos al servidor remoto, arrastrándolo desde el directorio local donde lo hayamos

creado, al directorio remoto actual, es decir, trasladamos el archivo desde nuestro ordenador

hasta el servidor.

Una vez realizados estos pasos, tendremos en el servidor remoto un archivo llamado

index.php que estará vacío y que editaremos haciendo click con el botón derecho del ratón

sobre el archivo que deseamos editar.

Hay que aclarar que el archivo index.php lo podemos editar tanto en local como en remoto.

Se puede hacer de ambas maneras, siendo ambas correctas. La diferencia radicará en que si

trabajamos en local cada vez que queramos ver los cambios en la página web tendremos que

subir el archivo al servidor, y cada vez que lo subamos “sobreescribir” el archivo.

Si trabajamos editando en remoto, una vez editado el archivo y guardados los cambios,

directamente quedará modificado el archivo en el servidor, con lo cual directamente veremos

los cambios en la página web.

Supongamos que hemos hecho click sobre el archivo en remoto y pulsado el botón derecho,

y a su vez la opción “Ver/Editar” (View/Edit):

Page 71: Hp_ Tutorial Básico Del Programador Web

 

 

Ahora, normalmente, al ser la primera vez que editamos con FileZilla un archivo con

extensión PHP, nos dará la opción de seleccionar el programa con el que queremos abrir

dicho archivo. Indicaremos que queremos abrirlo con el Notepad++. Si no nos pide el

programa con el que queremos editar, podemos establecerlo manualmente de la siguiente

manera: desplegar el menú “Edición” (Edit) de Filezilla y pulsar sobre “Opciones” (Settings).

En la ventana que se abre, en el lateral izquierdo seleccionamos “Edición de archivo -- >

Asociaciones de tipo de archivo” (File editing -- > Filetype associations), y en el lado derecho

en el cajetín de texto escribimos: php “C:\Program Files\Notepad++\Notepad++.exe”, donde

la ruta entre comillas representa la ruta donde se encuentra el fichero ejecutable del

Notepad++. Esta ruta puede ser diferente según el sistema operativo e instalación que

hayamos hecho. Comprueba cuál es la ruta en tu computaor e introduce la ruta correcta para

tu caso.

Page 72: Hp_ Tutorial Básico Del Programador Web

 

 

Una vez establecido Notepad++ como editor para trabajar en remoto con Filezilla, cuando

pulsamos sobre un archivo en remoto y con botón derecho elegimos “Ver/Editar” (View/Edit),

se nos abrirá  Notepad++ para editar el archivo correspondiente. En nuestro caso vamos a

editar el archivo index.php que habíamos subido al servidor anteriormente.

Page 73: Hp_ Tutorial Básico Del Programador Web

 

 

Ahora sólo nos falta crear nuestra primera página PHP. Para ello simplemente añadiremos

este código en el archivo index.php (más adelante se explicarán los conceptos propios de

PHP y entenderemos mejor lo que hacemos ahora mismo; no te preocupes ahora si tienes

dudas, las iremos solucionando poco a poco).

<?php

echo "Mi primera página en PHP - aprenderaprogramar.com";

?>

 

 

Cuando terminemos de editar el archivo, lo guardamos (para ello podemos usar la

combinación de teclas Ctrl + s ó hacerlo a través del Menú archivo --> Guardar de Notepad+

+). Una vez guardado en Notepad++ hacemos click sobre el programa FTP FileZilla que

Page 74: Hp_ Tutorial Básico Del Programador Web

teníamos en segundo plano. Automáticamente nos indicará que el archivo ha cambiado (a

file previosly opened has been changed) y nos preguntará si deseamos subir los cambios

(¿Volve a subir este archivo al servidor? ó Upload this file back to the server?).

Contestaremos que sí (yes).

 

 

Y ahora visualizaremos nuestra página en el navegador escribiendo la dirección web que es

nuestro dominio raíz. Si hemos creado una cuenta gratuita, esta dirección web nos la habrá

facilitado el proveedor del servidio de hosting gratuito y podrá ser (esto es un ejemplo)

similar a:

http://apr2.byethost7.com/index.php o http://apr2.byethost7.com. Recordar que en el

segundo caso, cuando no especificamos el archivo que hay que abrir, es el propio servidor el

que se encarga automáticamente de buscar el archivo index.html ó index.php.

Page 75: Hp_ Tutorial Básico Del Programador Web

 

 

Con este sencillo ejemplo hemos creado nuestra primera página web usando el lenguaje de

programación PHP.

 

 

EJERCICIO

Crea los siguientes archivos y súbelos mediante ftp al directorio raíz de tu sitio web:

a) Crea un archivo denominado curso.php donde aparezca el siguiente texto. <<Curso php

de aprenderaprogramar.com comenzado el 24/09/2083>> donde la fecha a incluir sea la

fecha en que hayas subido el archivo. Comprueba que el archivo se visualiza al escribir la

dirección web correcta que será similar a http://apr2.byethost7.com/curso.php (en tu caso,

tendrás que utilizar la dirección web que vayas a utilizar para el curso). Responde a esta

pregunta: ¿Cuál es el código que contiene el archivo? ¿Cuál es la dirección web para acceder

al archivo y visualizar el texto?

b) Crea un archivo denominado alumno.php donde aparezca el siguiente texto. <<Curso php

de aprenderaprogramar.com alumno Juan Perez desde el país: Colombia>> donde el nombre

a incluir será tu nombre y el país tu país. Comprueba que el archivo se visualiza al escribir la

dirección web correcta que será similar a http://apr2.byethost7.com/alumno.php (en tu caso,

tendrás que utilizar la dirección web que vayas a utilizar para el curso). Responde a esta

pregunta: ¿Cuál es el código que contiene el archivo? ¿Cuál es la dirección web para acceder

al archivo y visualizar el texto?

Page 76: Hp_ Tutorial Básico Del Programador Web

CONCEPTOS BÁSICOS DE PHP

Un archivo PHP normalmente suele contener HTML y trozos de código PHP. Por ello antes de

estudiar PHP es necesario haber estudiado HTML. A veces, se dice que PHP es un lenguaje

“embebido” en HTML, es decir, incrustado en código HTML. Todos los fragmentos de código

PHP deben comenzar con la siguiente cadena de caracteres: <?php ,y finalizar con ?>

 

 

Los símbolos <?php y ?> se dice que son los delimitadores del código PHP. Normalmente,

una página PHP básica sería algo así:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Ejemplo de una web con PHP - aprenderaprogramar.com</title>

<meta charset="utf-8">

</head>

<body>

<?php

/* Aquí vendría el código PHP */

/* Este código PHP podría ser una consulta a base de datos */

/* Y además podríamos mostrar esos datos */

?>

</body>

</html>

 

 

En este código podemos identificar los siguientes elementos:

Page 77: Hp_ Tutorial Básico Del Programador Web

- La primera línea es una etiqueta relativa a la versión/variante de HTML que declaramos

usar. Esta primera etiqueta no es estrictamente necesaria. Sirve únicamente para indicar qué

estándar de HTML es el que declaramos usar.

- Las etiquetas de apertura y cierre de html que delimitan el código HTML.

- Las etiquetas de apertura y cierre head que delimitan la cabecera del código HTML.

- Las etiquetas body que delimitan el cuerpo del código HTML y que es donde suele ir el

contenido central de un documento HTML (texto, imágenes, formularios, etc.).

- Dentro de las etiquetas body, además de código HTML, podemos tener código PHP

embebido. En este caso hemos incluido únicamente un fragmento de código PHP, pero en el

cuerpo del documento HTML podríamos incluir diversos fragmentos de código HTML

mezclados con diversos fragmentos de código PHP. Cada fragmento de código PHP tiene que

ir escrito con sus delimitadores.

 

Esta estructura no se repite siempre. De hecho, más adelante veremos que el código PHP

puede ir en más lugares además de dentro de las etiquetas body. Por otro lado, decir que es

habitual que el código PHP vaya embebido dentro de código HTML en un archivo con

extensión .php, pero como ya hemos visto, un archivo con extensión .php podría contener

exclusivamente código PHP.

Escribe el código que mostramos a continuación en el editor Notepad++ y guárdalo con el

nombre prueba1.php.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Ejemplo de una web con PHP - aprenderaprogramar.com</title>

<meta charset="utf-8">

</head>

<body>

<?php

echo "Mi primera página con PHP embebido en HTML - aprenderaprogramar.com";

Page 78: Hp_ Tutorial Básico Del Programador Web

?>

</body>

</html>

 

 

A continuación súbelo al servidor como ya explicamos en una entrega anterior, y ahora

escribe en tu navegador la dirección web correspondiente al archivo (que será similar a

http://apr2.byethost7.com/prueba1.php). Debes de visualizar algo parecido a esto.

 

 

EJERCICIO

Crea el siguiente archivo y súbelo mediante ftp al directorio raíz de tu sitio web. El archivo

llevará por nombre curso2.php y en él debe existir la estructura de un documento HTML,

aparecer en la parte superior de la página un título h1 con el texto <<Cursos

aprenderaprogramar.com>>, seguido de un título h2 con el texto <<Curso php desde

cero>>, y a continuación hacer que se muestre insertando php el siguiente texto. <<Curso

php de aprenderaprogramar.com comenzado el 24/09/2083>> donde la fecha a incluir sea la

fecha en que hayas subido el archivo. Debajo de este texto debes crear un contenedor div

con color de fondo amarillo donde pueda leerse “Este es el pie de página”. Comprueba que el

archivo se visualiza al escribir la dirección web correcta que será similar a

http://apr2.byethost7.com/curso2.php (en tu caso, tendrás que escribir la dirección web que

Page 79: Hp_ Tutorial Básico Del Programador Web

vayas a utilizar para el curso). Responde a esta pregunta: ¿Cuál es el código que contiene el

archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar el texto?

VARIABLES EN PHP

Las variables en PHP son representadas con un signo de dólar ($) seguido por el nombre de

la variable. El nombre de la variable es sensible a minúsculas y mayúsculas. Es decir, las

siguientes declaraciones de variables son distintas entre ellas:

 

 

$variable, $Variable, $variAble, $VariAble, etc. representan a distintas variables.

Recordar que una variable es un espacio de la memoria del ordenador (en este caso del

servidor) a la que asignamos un contenido que a grandes rasgos puede ser un valor

numérico (sólo números, con su valor de cálculo) o alfanumérico (sólo texto o texto con

números, sin valor de cálculo).

Para declarar un nombre de variable válido, éste tiene que empezar con una letra (o si no

empieza con una letra, tendrá que hacerlo con un carácter de subrayado), seguido de

cualquier número de letras, números y caracteres de subrayado, sin espacios. Veamos

algunos ejemplos:

Posible nombre de variable Validez

$4variable Nombre de variable inválido.

$_4variable Nombre de variable válido.

$variable4 Nombre de variable válido.

$otra Nombre de variable válido.

$1_otra Nombre de variable inválido.

$variable_de_nombre_muy_largo Nombre de variable válido.

Page 80: Hp_ Tutorial Básico Del Programador Web

$ABC Nombre de variable válido.

$ A B C Nombre de variable inválido.

$A_y_B_x_C Nombre de variable válido.

 

 

Cuando el intérprete PHP detecta un error en la sintaxis al declarar una variable, cuando

tratamos de accecer a la página php nos aparecerá un mensaje de error. Por ejemplo si en un

archivo php incluimos una línea como $ A B C = 5; donde el nombre de variable es inválido

ya que tiene espacios intermedios, nos aparecerá un mensaje de error:

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$' in

/home/miraiz/domains/midominio.com/public_html/prueba.php on line 3. Este mensaje nos

informa de que hay un problema en el archivo php y nos indica la línea donde el intérprete

considera que está el problema.

 

 

DIFERENCIAS ENTRE LOS OPERADORES DE ASIGNACIÓN E IGUALDAD. ASIGNACIÓN

(=)

El operador de asignación es "=". Se podría pensar que es como un "igual a". No lo es. El

operador igual en programación no tiene el mismo sentido que en matemáticas. En

programación, significa que el valor de la expresión de la derecha se establece en el

operando de la izquierda.

Fíjate en este ejemplo y en los comentarios.

<?php

$a = 3; // asignamos el valor 3 a la variable $a

$b = "cadena"; // asignamos el valor "cadena" a la variable $b

?>

Page 81: Hp_ Tutorial Básico Del Programador Web

 

 

OPERADOR DE IGUALDAD (==)

El operador comparador de igualdad es ==. Como su propio nombre indica, sirve para

comparar dos valores o variables y no para asignar valores. Este operador devuelve el

resultado de la operación lógica de 'igual a' tal y como podemos apreciar en el siguiente

ejemplo.

Fíjate en este ejemplo y en los comentarios.

<?php

$a = 3;

$b = 3;

$a == $b; // El resultado de la comparación es TRUE porque $a es igual a $b

$a = 3;

$b = 4;

$a == $b; // El resultado de la comparación es FALSE porque $a no es igual a $b

?>

 

 

TIPOS DE DATOS

En PHP no es obligatorio indicar el tipo de datos al que pertenece una variable como en otros

lenguajes, sino que los tipos de datos son establecidos directamente por el intérprete PHP,

que es el encargado de interpretar el código.

Ahora veremos en una tabla los distintos tipos de datos que se pueden usar en PHP.

TIPO DE DATO DEFINICIÓN

integer Los integers, o enteros, pueden tener distintos valores numéricos enteros que se expresan

con diferentes notaciones.

Page 82: Hp_ Tutorial Básico Del Programador Web

$variable = 18; // Número entero positivo

$variable = -18; // Número entero negativo

$variable = 0x12; // Notación hexadecimal, en principio no la utilizaremos

float o double

Este tipo de datos son los números de punto flotante a los que normalmente llamamos

“números decimales”, por ejemplo, 9.876. Ambos tienen mucha precisión, pero double es el

más preciso (con más decimales). La sintaxis para utilizarlos es bastante simple:

$variable = 9.876;

string

El tipo de datos string, también conocido como cadena de caracteres, se expresa con la

siguiente sintaxis:

$variable = "Yo soy una cadena";

boolean

Se trata de un tipo lógico. Sus posibles valores son true (verdadero) o false (falso).

$variable = true;

$variable = false;

 

 

INSTRUCCIÓN ECHO

Esta instrucción muchas veces se dice que sirve para que se muestre por pantalla un texto,

una variable, o una combinación de texto y variables. Pero realmente no es así: echo no es

una instrucción que sirva para mostrar algo por pantalla (aunque podemos usarla para esto),

sino que sirve para insertar texto dentro del documento HTML subyacente al código PHP.

Por ejemplo: echo "salida por pantalla. "; hará que se inserte este texto en el documento

html. Si lo hacemos entre las etiquetas <body> y </body> lo veremos por pantalla porque

cualquier texto insertado en ese lugar se mostrará por pantalla, no porque la instrucción

echo dé lugar a que se muestre por pantalla.

Sin embargo echo "<h1>Salida por pantalla. </h1> "; no hará que se muestren por pantalla

las etiquetas h1 y el texto, sino que introducirá en el documento HTML las etiquetas con el

texto, éstas etiquetas funcionarán como código HTML y lo que se mostrará por pantalla será

Salida por pantalla con formato de título h1 (letras más grandes de lo normal).

Page 83: Hp_ Tutorial Básico Del Programador Web

En general en php son válidas tanto las comillas dobles como las comillas simples, por lo que

se puede escribir tanto echo "<h1>Salida por pantalla. </h1> "; como echo '<h1>Salida por

pantalla. </h1>';

Los paréntesis no son necesarios (echo en realidad no es una función sino que es lo que se

denomina una <<construcción del lenguaje>>, de ahí que no sean estrictamente necesarios

los paréntesis), pero se pueden incluir si se desea. Ejemplo: echo ('con paréntesis y comillas

simples');

Crea un archivo php con el siguiente código, ponle un nombre como usoDeEcho.php y súbelo

al servidor. Luego invócalo usando la ruta adecuada según la dirección web con la que estés

trabajando (será similar a http://apr2.byethost7.com/usoDeEcho.php.)

<?php

echo "salida por pantalla. ";

$a = 5;

echo $a;

echo " El valor de a es $a.";

?>

 

 

La visualización en tu navegador deberá ser similar a esta. Puede variar ligeramente

dependiendo del navegador que uses.

Page 84: Hp_ Tutorial Básico Del Programador Web

 

 

Ten en cuenta que $a se muestra por pantalla como 5 porque el intérprete de PHP considera

que debe mostrarse siempre el valor de la variable, incluso si va dentro de un texto. Prueba a

escribir la siguiente línea: echo " El valor de la variable \$a es $a.";

Comprobarás que se muestra por pantalla “salida por pantalla. 5 El valor de la variable $a es

5.”

Cuando antecedemos un nombre de variable del carácter \ hacemos que se interprete como

texto en lugar de como una variable. El carácter \ se suele llamar “carácter de escape”

porque permite que se considere texto algo que en principio se iba a interpretar como otra

cosa (como una variable por ejemplo).

Crea ahora un archivo php con el siguiente código, ponle un nombre como usoDeEcho2.php y

súbelo al servidor. Luego invócalo usando la ruta adecuada según la dirección web con la que

estés trabajando (será similar a http://apr2.byethost7.com/usoDeEcho2.php.)

<html>

<head>

<title> Ejemplo php aprenderaprogramar.com </title>

<meta charset="utf-8">

</head>

Page 85: Hp_ Tutorial Básico Del Programador Web

<body>

<?php

echo 'con comillas simples<br/>';

echo ('con paréntesis y comillas simples<br/>');

echo ("con paréntesis y comillas dobles<br/>");

echo '<h1>Salida por pantalla</h1><br/>';

echo "salida por pantalla. ";

$a = 5;

echo $a;

echo " El valor de a es $a.";

?>

</body>

</html>

 

 

La visualización en tu navegador deberá ser similar a:

con comillas simples

con paréntesis y comillas simples

con paréntesis y comillas dobles

Salida por pantallasalida por pantalla. 5 El valor de a es 5.

 

Puedes comprobar que <br/> no se muestra por pantalla porque es código HTML, y el

navegador cuando detecta este código HTML introduce un salto de línea en lugar de

mostrarlo por pantalla.

Para comprender bien la utilidad de la instrucción echo piensa en esta equivalencia:

Page 86: Hp_ Tutorial Básico Del Programador Web

<body>

<? php

echo '<h1>Cuzco</h1>'

?>

</body>

- - - - - - - - Equivale a - - - - - - - >

<body>

<h1>Cuzco</h1>

</body>

 

 

El navegador recibe el HTML “equivalente” generado y lo interpreta, dando lugar a los

resultados que se mostrarán por pantalla.

 

 

EJERCICIO 1

Crea el siguiente archivo y súbelo mediante ftp al directorio raíz de tu sitio web. El archivo

llevará por nombre curso3.php y en él debe existir la estructura de un documento HTML,

aparecer en la parte superior de la página un título h1 con el texto <<Cursos

aprenderaprogramar.com>>, seguido de un título h2 con el texto <<Curso php desde

cero>>, y a continuación hacer que se muestre usando echo el siguiente texto dentro de un

div con color de fondo amarillo: <<Curso php de aprenderaprogramar.com usando la

instrucción echo>>. Debajo de este texto debes usar echo para crear un contenedor div con

color de gris donde pueda leerse “Este es el pie de página”. Comprueba que el archivo se

visualiza al escribir la dirección web correcta que será similar a

http://apr2.byethost7.com/curso3.php (en tu caso, tendrás que escribir la dirección web que

estés utilizando para el curso). Responde a esta pregunta: ¿Cuál es el código que contiene el

archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar el texto?

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

 

Page 87: Hp_ Tutorial Básico Del Programador Web

EJERCICIO 2

Crea un archivo php donde no exista html directamente pero que genere una página web con

todo el código html que lleva normalmente (introduce las etiquetas html, head, title, meta

charset, body, algunos párrafos de texto y algunas imágenes). Para hacer esto toda la

estructura de la página web debe ser insertada a través de instrucciones echo. Responde a

esta pregunta: ¿Cuál es el código que contiene el archivo? ¿Cuál es la dirección web para

acceder al archivo y visualizar el texto?

ESTRUCTURAS CONDICIONALES

En PHP existen una serie de instrucciones que permiten tomar decisiones lógicas cuando

programamos: estas instrucciones, comunes a distintos lenguajes de programación, se

suelen denominar de forma general "condicionales".

 

 

 

if...else

if...elseif...else

switch

 

 

CONDICIONAL IF…ELSE EN PHP

Estas instrucciones son quizás las más usadas de todos los lenguajes de programación, ya

que son las más básicas. IF (en español: si…) ELSE (en español: sino…). La estructura general

de un condicional if else es la siguiente:

if(expresión) {

... sentencias 1, 2, 3 … ;

} else {

Page 88: Hp_ Tutorial Básico Del Programador Web

... sentencias A, B, C …;

}

 

 

En este trozo de código estaríamos diciendo que si la expresión se cumple se ejecutan las

sentencias 1, 2, 3…, y en caso de que no se cumpliese la expresión se ejecutarían las

sentencias que están dentro del else, es decir, las sentencias A, B, C …

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo

como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$galletas = true;

if($galletas == true) {

echo 'Hay galletas';

} else {

echo 'No hay galletas';

}

?>

 

 

En este ejemplo, estamos dando un valor $galletas y comprobamos si el valor de esta

variable es true o no, introduciéndolo en la expresión del condicional. Tal cual está, este

ejemplo produciría el resultado 'Hay galletas', aunque si cambiásemos $galletas = true; por

$galletas = false daría como resultado la segunda sentencia.

Page 89: Hp_ Tutorial Básico Del Programador Web

 

 

Escribe ahora este otro código guárdalo con un nombre de archivo como ejemplo2.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$galletas = true;

if($galletas == true){

?>

<br/>

<p>&nbsp ;&nbsp ;&nbsp ;&nbsp ;---------------------------------</p>

<?php

echo

'&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbs

p ;Hay galletas';

echo '<br/>';

echo '<br/>';

echo '&nbsp ;&nbsp ;&nbsp ;&nbsp ;---------------------------------';

} else {

echo 'No hay galletas';

}

?>

 

Page 90: Hp_ Tutorial Básico Del Programador Web

 

 

Como podrás comprobar, el código produce el mismo resultado. Unicamente hemos

introducido algunos caracteres para mejorar la forma en que se ve (recordar que &nbsp

seguido de un punto y coma, sin espacio entre ambos, equivale a un espacio en blanco en

HTML). Compara las similitudes y diferencias entre los dos códigos que hemos escrito. En

nuestro ejemplo2 podrás comprobar que hemos escrito un fragmento de código php, luego

un fragmento de código html y luego otro fragmento en php. Si te fijas, no hemos utilizado

las etiquetas de apertura y cierre de html, aunque hubiera sido quizás más correcto hacerlo,

es decir, escribir:

<html>

<?php

$galletas = true;

if($galletas == true){

?>

<br/>

<p>&nbsp ;&nbsp ;&nbsp ;&nbsp ;---------------------------------</p>

<?php

echo

'&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbs

p ;Hay galletas';

Page 91: Hp_ Tutorial Básico Del Programador Web

echo '<br/>';

echo '<br/>';

echo '&nbsp ;&nbsp ;&nbsp ;&nbsp ;---------------------------------';

} else {

echo 'No hay galletas';

}

?>

</html>

 

 

Como comprobarás, a veces los navegadores son capaces de interpretar el código aunque

falten algunas etiquetas o contenga algunos errores. Esta es una de las cuestiones que

diferencia HTML de lenguajes de programación en sentido estricto como C, Java o Visual

Basic, donde la sintaxis es mucho más estricta.

En este código además podemos señalar:

Usamos el código &nbsp que en HTML significa “un espacio”. Recuerda que HTML

omite los espacios antes y después de una cadena de texto. Por ello hemos de

especificar que se introduzcan espacios con &nbsp.

Un salto de línea, que introducimos gracias a la etiqueta <br/>, podemos escribirlo

tanto fuera del código php como dentro de él. Para introducirlo dentro de php, hemos

de ponerlo dentro de un echo, que es la forma que tenemos de indicarle a php de que

dé salida a esa etiqueta como código html.

 

¿Qué pasaría si introdujéramos una etiqueta html como <br/> directamente dentro del

código php? Pruébalo y comprobarás que en el navegador se muestra un mensaje de error

de este tipo:

Parse error: syntax error, unexpected '<' in /home/m/dom/mi.com/public_html/prueba.php on

line 11

Page 92: Hp_ Tutorial Básico Del Programador Web

Esta es una cuestión que debes de tener en cuenta: para introducir html debes de cerrar un

bloque php o usar una instrucción echo dentro del bloque php. La instrucción echo viene

significando “dar salida html a lo que va a continuación”.

 

 

CONDICIONALES IF...ELSE IF...ELSE EN PHP

La estructura de estas instrucciones viene a ser muy similar que la anterior. Su significado:

“Si ocurre esto, haz esto, sino si ocurre esta otra cosa, haz esto otro, sino si ocurre esta otro

cosa, haz …”. La estructura general de un condicional if else if [else] es:

if(expresión) {

... sentencias 1, 2, 3, …;

} else if(expresión) {

... sentencias A, B, C, …;

} else {

... sentencias M, N, O, …;

}

 

 

Esta es la síntaxis con la que debe ser usada else if. Un else if se ejecutará, siempre y

cuando, no haya alguna respuesta verdadera en el if o else if anterior; luego de que se llega

al final de los else if, y ninguno ha sido verdadero, se ejecutará lo que está dentro del else

final.

Pueden haber varios else if, pero estos están siempre dentro de un if y terminarán con un

else (sólo uno) final.

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo

como ejemplo3.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

Page 93: Hp_ Tutorial Básico Del Programador Web

$test = 33;

if ($test > 40) {

echo "Sí, $test es mayor que 40.";

} else if ($test > 35) {

echo "Sí, $test es mayor que 35.";

} else if ($test > 30) {

echo "Sí, $test es mayor que 30.";

} else {

echo "No, $test es menor que 40, 35 y 30.";

}

?>

 

 

En este caso la respuesta sería: Sí, 33 es mayor que 30.

Si el valor de $test se cambia a 22, la respuesta sería: No, 22 es menor que 40, 35 y 30.

 

 

OPERADOR CONDICIONAL TERNARIO

Para escribir condicionales la estructura básica de lenguajes como PHP, JavaScript, Java, y

otros es la sentencia if. Otro tipo de condicionales como el switch o el else if pueden ser

reemplazados por if. Hay otra sintaxis de condicional que se denomina operador condicional

ternario y que se escribe con expresiones que incluyen una interrogación y dos puntos como:

a ? b : c;

La sintaxis y significado del operador condicional ternario (válida para diferentes lenguajes,

como PHP, JavaScript, Java, etc.) es la siguiente:

expresiónConValorBooleano ? expresión1 : expresión2;

Page 94: Hp_ Tutorial Básico Del Programador Web

Interpretación: si la expresiónConValorBooleano es cierta se ejecuta la expresión1, y en caso contrario se

ejecuta la expresión2.

 

 

Ejemplos. Supongamos que tenemos cuatro variables: A = 5, B = 3, C = -7 y D = 5

Expresión Resultado

A==5 ? dispara(): espera(); Se ejecuta dispara()

A<B ? dispara(): espera(); Se ejecuta espera()

B<C ? dispara(): espera(); Se ejecuta espera()

A<B && B>C ? dispara(): espera(); Se ejecuta espera()

A<B && B>C || B==3 ? dispara(): espera(); Se ejecuta dispara()

A==5 ? A=20: A=1; Si A valía 5 ahora vale 20, caso contrario ahora vale 1.

B = B==3 ? B*10: B*100; Se trata de una asignación: si B valía 3, ahora B vale 10 veces

lo que valía, caso contrario ahora B vale 100 veces lo que valía.

 

 

El operador ternario puede ser insertado en sentencias de ejecución donde no se permite la

inserción de if, por ejemplo en una operación de asignación o en la variable de control de un

bucle for. Usar el operador condicional ternario tiene ventajas e inconvenientes.

 

 

VENTAJAS E INCONVENIENTES DEL OPERADOR CONDICIONAL TERNARIO

Page 95: Hp_ Tutorial Básico Del Programador Web

En la siguiente tabla resumimos las ventajas e inconvenientes del operador condicional

ternario comparándolo con el if tradicional.

Condicional ternario If tradicional

Permite la escritura compacta, permitiendo

ahorrar escritura de código.Obliga a escribir más sentencias para conseguir el mismo resultado.

Resulta más difícil de leer, entender y

depurarResulta más fácil de leer, entender y depurar

No todos los programadores lo usan,

algunos ni siquiera lo conocen.Todos los programadores lo usan y lo conocen.

Se admite en la sintaxis de los lenguajes en

lugares donde no se admite la sentencia if

No es válido en ciertas ubicaciones donde sólo se admiten expresiones,

pero puede hacerse la evaluación antes del punto donde sea necesario el

condicional.

Criticado por algunos expertos, adorado

por otrosUso y aceptación cuasi-universal

 

 

EJEMPLOS DE USO EN PHP

Escribe este código, guárdalo como archivo php y comprueba los resultados de ejecución.

Razona sobre los resultados obtenidos y trata de explicar paso a paso la lógica de todo lo que

hace el código.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">

</head>

<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos PHP</h3></div>

<?php

$A=5; $B=3; $C=-7; $D=5;

$msg = '';

Page 96: Hp_ Tutorial Básico Del Programador Web

$A==5 ? $msg='A es 5<br/>': $msg='A no es 5<br/>';

echo $msg;

$A<$B ? $msg='A es menor que B<br/>': $msg='A es mayor o igual que B<br/>';

echo $msg;

$B<$C ? $msg='B es menor que C<br/>': $msg='B es mayor o igual que C<br/>';

echo $msg;

?>

</body>

</html>

 

 

El resultado esperado es que se muestre por pantalla:

Cursos aprenderaprogramar.com

Ejemplos PHP

A es 5

A es mayor o igual que B

B es mayor o igual que C

 

 

EJERCICIO 1

Ejecuta este código y responde:

a) ¿Qué resultado se obtiene por pantalla?

b) Modifica el código sustituyendo el operador ternario por if else para que el resultado

obtenido sea el mismo.

Page 97: Hp_ Tutorial Básico Del Programador Web

<?php

$haceFrio = 15;

$respuesta ="";

$temperatura = ($haceFrio<20) ? $respuesta = "Hace frio" : $respuesta = "No hace frio";

echo $respuesta;

?>

 

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

 

EJERCICIO 2

Define las variables $tipo, $grosor, $diametro y $marca. Establece que el tipo sea “Rueda de

camión”, el grosor 0.33, el diámetro 1.25 y la marca “Kimashuki”. Crea el código PHP donde

a través de condicionales if realices la siguiente comprobación: si el diámetro es superior a

1.4 debe mostrarse por pantalla el mensaje “La rueda es para un vehículo grande”. Si es

menor o igual a 1.4 debe mostrarse por pantalla el mensaje “La rueda es para un vehículo

pequeño”. En otro caso, debe mostrarse “No existe un tamaño de rueda válido”.

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP

Los operadores de comparación permiten comparar dos valores, tal y como su nombre

indica. En general, esto nos servirá para tomar decisiones. Por ejemplo, quizás tenemos que

decidir si autorizar una operación según exista saldo suficiente en su cuenta bancaria o no.

Para ello en PHP disponemos de los operadores que se indican en la siguiente tabla.

 

 

Page 98: Hp_ Tutorial Básico Del Programador Web

Nombre Ejemplo Resultado

Mayor que $a > $btrue si $a es mayor que $b

false en caso contrario

Menor que $a < $btrue si $a es menor que $b

false en caso contrario

Mayor o igual que $a >= $btrue si $a es mayor o igual que $b

false en caso contrario

Menor o igual que $a <= $btrue si $a es menor o igual que $b

false en caso contrario

Diferente

$a <> $b

ó

$a != $b

true si $a es diferente a $b

false en caso contrario

Idéntico o estrictamente igual $a === $btrue si $a es igual a $b y son del mismo tipo

false en caso contrario

No idéntico o estrictamente distinto $a ¡== $btrue si $a no es igual a $b o no son del mismo tipo

false en caso contrario

Igual $a == $btrue si $a es igual a $b

false en caso contrario

 

 

La sintaxis coincide con la empleada en otros lenguajes de programación.

Además de los operadores habituales existen los operadores === que se interpreta como

“es estrictamente igual” y !== que se interpreta como “no es estrictamente igual”. Estos

operadores resultan un poco más complejos de comprender por lo que volveremos a hablar

de ellos más adelante. De momento tener en cuenta que si una variable contiene $texto1=

“1” y hacemos la comparación $texto1 === 1 , obtendremos false, es decir, que no es igual

(porque un texto no es igual a un número). Sin embargo una comparación como $texto == 1

Page 99: Hp_ Tutorial Básico Del Programador Web

devolverá true ya que esta comparación no es estricta y trata de realizar automáticamente

conversiones para comprobar si se puede establecer una equivalencia entre los dos valores.

En este caso se busca el equivalente numérico del texto y luego se hace la comparación,

motivo por el cual se obtiene true.

Es decir, si se compara un número con una cadena de caracteres o la comparación implica

cadenas de caracteres numéricas, cada cadena de caracteres es convertida en un número y

la comparación se realizará numéricamente excepto cuando el operador utilizado es === o

¡== porque, en estos casos, también comparamos el tipo.

 

 

OPERADORES LÓGICOS EN PHP

Los operadores lógicos, nos permiten crear condiciones para las distintas estructuras en PHP,

tanto en estructuras condicionales como en estructuras repetitivas. Los operadores lógicos

más importantes son and (en español: y) y or (en español: o)

Nombre Ejemplo Resultado

and ó && $a and $btrue si $a es true y $b es true

false en caso contrario

or ó || $a or $btrue si $a o $b es true, o ambos

false en caso contrario

xor $a xor $btrue si $a o $b es true, pero no ambos

false en caso contrario

not ó ! !$atrue si $a no es true

false en caso contrario

 

 

Page 100: Hp_ Tutorial Básico Del Programador Web

Una condición puede ser tan larga como se quiera o necesite y usar tantos operadores

lógicos como se quiera o necesiten. El uso de los paréntesis otorgará la prioridad de la

ejecución de unas operaciones y otras (como en matemáticas).

Las expresiones donde se utilizan operadores lógicos y relacionales devuelven un valor

booleano, es decir, verdadero (true) o falso (false). Por ejemplo si $a = 7 y $b = 5 la

expresión $a < $b devuelve false (es falsa). Si $a = true y $b = false la expresión $a && $b

devuelve false (es falsa porque no se cumple que $a y $b sean verdaderas). Si $a = true y $b

= false la expresión $a || $b devuelve true porque uno de los dos operandos es verdadero. Si

$a = true la expresión !a devuelve false (el opuesto o contrario).

El operador || se obtiene en la mayoría de los teclados pulsando ALT GR + 1, es decir, la tecla

ALT GR y el número 1 simultáneamente.

Los operadores && y || se llaman operadores en cortocircuito porque si no se cumple la

condición de un término no se evalúa el resto de la operación. Por ejemplo: ($a == $b &&

$c != $d && $h >= $k) tiene tres evaluaciones: la primera comprueba si la variable a es

igual a b. Si no se cumple esta condición, el resultado de la expresión es falso y no se

evalúan las otras dos condiciones posteriores.

En un caso como ( $a < $b || $c != $d || $h <= $k) se evalúa si a es menor que b. Si se

cumple esta condición el resultado de la expresión es verdadero y no se evalúan las otras

dos condiciones posteriores.

El operador ! recomendamos no usarlo hasta que se tenga una cierta destreza en

programación. Una expresión como (!$esVisible) devuelve false si ($esVisible == true), o

true si ($esVisible == false). En general existen expresiones equivalentes que permiten

evitar el uso de este operador cuando se desea.

 

 

OPERADOR DE NEGACIÓN APLICADO SOBRE NÚMEROS O TEXTO

Si $a = true su negación !$a devuelve false. ¿Pero qué ocurre si $a es un número o un texto?

Si $a es un número se considera que equivale a false si su valor numérico es 0, o que

equivale a true si su valor numérico es distinto de cero. Seguidamente se aplica la negación.

Por tanto si $a = 7, a se considera equivalente a true y !$a es false. Si $a = 0, a se considera

equivalente a false y !$a es true.

Page 101: Hp_ Tutorial Básico Del Programador Web

Para cadenas de texto, la cadena vacía se considera equivale a false y cualquier otra cadena

se considera que equivale a true. Si $texto1 = "" (cadena vacía) entonces !$texto1 vale true.

 

 

ORDEN DE PRIORIDAD, PRELACIÓN O PRECEDENCIA

Los operadores lógicos y matemáticos tienen un orden de prioridad o precedencia. Este es un

esquema general que indica el orden en que deben evaluarse en la mayoría de los lenguajes

de programación:

 

 

Una expresión como $A+$B == 8 && $A-$B == 1 siendo $A = 3 y $B = 5 supondrá que se

evalúa primero $A+$B que vale 8, luego se evalúa $A-$B que vale -2. Luego se evalúa si se

Page 102: Hp_ Tutorial Básico Del Programador Web

cumple que la primera operación es cierta y luego si la segunda también es cierta,

resultando que no, por lo que la expresión es falsa.

 

 

COMPARACIÓN DE CADENAS DE TEXTO CON OPERADORES RELACIONALES

Dos cadenas de texto se pueden comparar resultando que se comparan letra a letra por el

valor del equivalente numérico de cada letra. Cada letra tiene un número asociado: por

ejemplo la a es el número 97, la b el 98, etc.

Si comparamos "avellana" < "sandia" obtenemos true.

Sin embargo, los códigos numéricos pueden generar resultados no previstos. Por ejemplo,

¿qué código numérico es menor, el de la a ó el de la A? Aún más, resulta que todos los

códigos numéricos de mayúsculas son menores que los de minúsculas, con lo cual podemos

obtener que ‘Zulú’ < ‘avellano’ devuelve true (cosa que a priori nos resultará ciertamente

extraña).

Para comparar cadenas en base a un orden alfabético necesitaremos usar entonces otras

técnicas que comentaremos más adelante.

 

 

EJEMPLO

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo

como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$a = 3;

$b = 9;

$result = ($a <= 3 and $b <> 9);

if ( $result == true) {

echo "Se cumple la condición";

Page 103: Hp_ Tutorial Básico Del Programador Web

}else {

echo "No se cumple la condición";

}

?>

 

 

 

EJERCICIO

Dadas las variables de tipo entero con valores $A = 5, $B = 3, $C = -12 indicar si la

evaluación de estas expresiones daría como resultado verdadero o falso:

a) $A > 3                                                            b) $A > $C                                               c) $A

< $C

d) $B < $C                                                          e) $B != $C                                               f) $A

== 3

g) $A * $B == 15                                                h) $A * $B == -30                                      i)

$C / $B < $A

j) $C / $B == -10                                                 k) $C / $B == -4                                         l)

$A + $B + $C == 5

m) ($A+$B == 8) && ($A-$B == 2)                       n) ($A+$B == 8) || ($A-$B == 6)

o) $A > 3 && $B > 3 && $C < 3                            p) $A > 3 && $B >= 3 && $C < -3

 

Page 104: Hp_ Tutorial Básico Del Programador Web

Crea el código PHP donde declares estas variables, les asignes valores y muestres por

pantalla el valor de verdad que tienen cada una de las expresiones antes indicadas.

¿Coincide lo que se muestra con pantalla con lo que tú esperarías que se mostrara? Puedes

comprobar si tu código y  tus respuestas son correctos consultando en los foros

aprenderaprogramar.com.

OPERADORES ARITMÉTICOS BÁSICOS EN PHP

En PHP disponemos de los operadores habituales en los distintos lenguajes de programación.

Estos operadores nos permiten realizar operaciones aritméticas: suma, resta, multiplicación,

división, etc. así como obtener el módulo o resto de una división entre dos enteros.

 

 

Nombre Ejemplo ResultadoEjemplo (con

$a = 8 y $b = 4)

Suma $a + $b El resultado de la suma. 12

Resta $a - $b El resultado de la resta. 4

Multiplicación $a * $b El resultado de la multiplicación. 32

División $a / $b El resultado de la división. 2

Resto o módulo $a % $b El resto de la división de $a entre $b (1) 0

 

(1)Nota: Los números se convierten a enteros antes de efectuar la operación. Es decir, 9 % 4.5

da como resultado 1 y no 0 porque calcula el resto de 9 entre 4, no de 9 entre 4.5

 

Page 105: Hp_ Tutorial Básico Del Programador Web

 

El operador resto o módulo es un operador útil en algunos procesos repetitivos en

programación. Fíjate en los valores que toma cuando van progresando los valores que toma

una variable. En el ejemplo que mostramos a continuación sirve para contar hasta dos y

empezar de nuevo repetitivamente.

$a $a % 3

1 1

2 2

3 0

4 1

5 2

6 0

7 1

8 2

 

 

Destacar que el operador % es de uso exclusivo entre enteros. 7%3 devuelve 1 ya que el

resto de dividir 7 entre 3 es 1. 8%2 devuelve 0 ya que el resto de dividir 8 entre 2 es cero. Al

valor obtenido lo denominamos módulo (en otros lenguajes en vez del símbolo % se usa la

palabra clave mod) y a este operador a veces se le denomina “operador módulo”.

Aunque en otros lenguajes existe un operador de exponenciación para calcular potencias, en

PHP no es así. Para calcular una potencia podemos hacer varias cosas:

a) Recurrir a multiplicar n veces el término. Por ejemplo min3 lo podemos calcular

como min*min*min. Obviamente esto no es práctico para potencias de exponentes

grandes.

Page 106: Hp_ Tutorial Básico Del Programador Web

b) Usar un bucle que dé lugar a la repetición de la operación multiplicación n veces.

Estas opciones las comentaremos más adelante.

c) Usar herramientas propias del lenguaje que permiten realizar esta operación. Esta

opción es la más sencilla. Basta con escribir pow(base, exponente) para que PHP

realice el cálculo de la potencia. Por ejemplo pow(2, 3) devuelve dos elevado a 3 que

resulta 8.

 

Las operaciones con operadores siguen un orden de prelación o de precedencia que

determinan el orden con el que se ejecutan. Con los operadores matemáticos la

multiplicación y división tienen precedencia sobre la suma y la resta. Si existen expresiones

con varios operadores del mismo nivel, la operación se ejecuta de izquierda a derecha. Para

evitar resultados no deseados, en casos donde pueda existir duda se recomienda el uso de

paréntesis para dejar claro con qué orden deben ejecutarse las operaciones. Por ejemplo, si

dudas si la expresión 3 * a / 7 + 2 se ejecutará en el orden que tú deseas, especifica el orden

deseado utilizando paréntesis: por ejemplo 3 * ( ( a / 7 )  + 2 ).

 

 

OPERADORES DE INCREMENTO Y DECREMENTO

Nombre Ejemplo Resultado

Pre-incremento ++$a Incrementa $a en uno y luego devuelve $a

Post-incremento $a++ Devuelve $a y luego incrementa $a en uno

Pre-decremento --$a Decrementa $a en uno y luego devuelve $a

Post-decremento $a-- Devuelve $a y luego decrementa $a en uno.

 

++ y -- son sólo válidos para variables numéricas y sirven para incrementar una unidad el

valor de la variable. Dependiendo de dónde se coloquen (antes o después de la variable) el

Page 107: Hp_ Tutorial Básico Del Programador Web

resultado del cálculo puede diferir debido al momento en que se ejecuta la adición de la

unidad.

Tener en cuenta que ++, --, +=, -= y *= son expresiones que siempre se aplican sobre

variables. Por ejemplo no es válido escribir 2++ porque 2 no es una variable. Todas estas

operaciones pueden sustituirse por otra equivalente más evidente. Muchos programadores

prefieren no usar estos operadores porque hacen menos legible el código. A otros

programadores les gusta usarlos porque les ahorra escribir. Nosotros preferimos no usarlos,

pero es cierto que los puedes encontrar cuando tengas que revisar el código escrito por otra

persona.

 

 

EJEMPLO

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo

como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$a = 8;

echo ++$a;

echo "<br />";

echo $a;

?>

 

 

 

 

Page 108: Hp_ Tutorial Básico Del Programador Web

Escribe este otro código y guárdalo con un nombre de archivo como ejemplo2.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$a = 8;

echo $a++;

echo "<br />";

echo $a;

?>

 

 

 

En los dos ejemplos anteriores podemos observar claramente la diferencia entre el pre-

incremento y el post-incremento. Lo mismo ocurre con el pre-decremento y post-

decremento.

 

 

OPERADORES DE ASIGNACIÓN

Con el uso de los operadores de asignación, podremos simplificar (escribir abreviadamente)

algunas expresiones de asignación. No te recomendamos que utilices expresiones abreviadas

durante el aprendizaje básico de php. No obstante, es adecuado conocer el significado de

estas expresiones por si te enfrentas a tener que interpretar código escrito por otras

personas.

Page 109: Hp_ Tutorial Básico Del Programador Web

Nombre Ejemplo Resultado

Suma $a += $b; $a = $a + $b;

Resta $a -= $b; $a = $a - $b;

Multiplicación $a *= $b; $a = $a * $b;

División $a /= $b; $a = $a / $b;

Resto o módulo $a %= $b; $a = $a % $b;

 

 

Los operadores +=, -= y *= son formas abreviadas de escribir operaciones habituales. Tener

en cuenta que ++, --, +=, -= y *= son expresiones que siempre se aplican sobre variables.

 

 

EJERCICIO 1

Crea un código PHP donde crees las variables $primerNumero y $segundoNumero y asigna

valor 8 al primer número y 5 al segundo número:

a) El resto de dividir el primer número entre 5.

b) El resultado de dividir el primer número entre el segundo.

c) El resultado de sumar los dos números.

Para comprobar si tu código y respuestas son correctas puedes consultar en los foros

aprenderaprogramar.com.

 

 

EJERCICIO 2

Page 110: Hp_ Tutorial Básico Del Programador Web

Crea un código PHP donde crees las variables $a y $b y usando los operadores adecuados

haz que se muestren los siguientes mensajes por pantalla. Nota: para mantener los valores

iniciales de las variables y poder volver a emplearlos usa variables auxiliares, por ejemplo

$inicio = $a; te permitirá mantener en %inicio el valor original de $a y volver a recuperar el

valor inicial de $a antes de hacer una nueva operación.

Mensajes a mostrar por pantalla:

Operadores de incremento

Valores iniciales: a = 4, b = 2

Operador ++ (anterior): ++a * b == 10

(Ahora el valor de a es: 5)

Operador ++ (posterior): a++ * b == 8

(Ahora el valor de a es: 5)

Operador -- (anterior): --a * b == 6

(Ahora el valor de a es: 3)

Operador -- (posterior): a-- * b == 8

(Ahora el valor de a es: 3)

 

Operadores de asignación compuestos

Valores iniciales: a = 4, b = 2

Asignación compuesta de suma: a += b equivale a = a + b

(Ahora el valor de a es: 6)

Asignación compuesta de resta: a -= b equivale a = a - b

(Ahora el valor de a es: 2)

Asignación compuesta de multiplicación: a *= b equivale a = a * b

Page 111: Hp_ Tutorial Básico Del Programador Web

(Ahora el valor de a es: 8)

Asignación compuesta de división: a /= b equivale a = a / b

(Ahora el valor de a es: 2)

Asignación compuesta de módulo: a %= b equivale a = a % b

(Ahora el valor de a es: 0)

SWITCH PHP

Las instrucciones if...else if...else if permiten resolver prácticamente todas las decisiones que

haya que tomar en programación, pero en ocasiones nos encontraremos con casos en que

queremos evaluar condiciones con una estructura que hacen más cómodo usar una

instrucción alternativa: switch.

 

Supongamos una evaluación de este tipo:

if ($variable == Valor1) {

... sentencias;

} else if( $variable == Valor2) {

... sentencias;

} else if ($variable == Valor3) {

... sentencias;

} else {

... sentencias;

}

 

 

Page 112: Hp_ Tutorial Básico Del Programador Web

Se trata de un caso en que tenemos varias alternativas para realizar una acción determinada

según el valor tomado por una variable. Para estos casos la mayoría de los lenguajes de

programación incluyen una instrucción que permite "seleccionar" entre los posibles valores

de una variable: la instrucción switch (en español: seleccionar).

La instrucción switch es una forma de expresión de un anidamiento múltiple de instrucciones

if ... else. Su uso no puede considerarse, por tanto, estrictamente necesario, puesto que

siempre podrá ser sustituida por el uso de if. No obstante, a veces resulta útil al introducir

eficiencia y mayor claridad en el código.

 

 

ESTRUCTURA GENERAL DE UNA EXPRESIÓN SWITCH

La sintaxis será (expresión será normalmente una variable cuyo contenido queremos evaluar,

pero puede ser una operación matemática, una expresión booleana, etc.):              

/* Ejemplo switch - aprenderaprogramar.com */

switch (expresión) {

        case valor1:

        instrucciones;

        break;

        case valor2:

        instrucciones;

        break;

        .

        .

        .

        default:

        sentencias;

        break;

 }

          

Page 113: Hp_ Tutorial Básico Del Programador Web

/* Ejemplo switch - aprenderaprogramar.com */

switch (expresión) {

        case valor1:

        case valor2:

        case valor3:

        instrucciones;

        break;

        case valor4:

        instrucciones;

        break;

        .

        .

        .

        default:

        sentencias;

        break;

 }

 

 

Esquemáticamente en forma de diagrama de flujo:

Page 114: Hp_ Tutorial Básico Del Programador Web

 

 

break es opcional (pero en general recomendable) y provoca que una vez encontrada una

coincidencia termine la evaluación de casos (provoca un salto pasando el control del

programa o flujo de ejecución a la instrucción inmediata siguiente fuera del switch). Si no se

incluye, se evaluarían el resto de casos (ejecutándose si fueran ciertos). De no incluirse

break, podría producirse que se ejecuten dos o más casos.

La cláusula default es opcional y representa las instrucciones que se ejecutarán en caso de

que no se verifique ninguno de los casos evaluados. El último break dentro de un switch (en

default si existe esta cláusula, o en el último caso evaluado si no existe default) también es

opcional, pero lo incluiremos siempre para ser metódicos.

Se permite evaluar tanto números como cadenas de texto o valores booleanos. switch solo

permite evaluar valores concretos de la expresión: no permite evaluar intervalos

(pertenencia de la expresión a un intervalo o rango) ni expresiones compuestas.

 

 

Page 115: Hp_ Tutorial Básico Del Programador Web

EJEMPLO

Vamos a ver ahora cómo podemos obtener un mismo resultado usando if o usando switch.

Escribe ahora el código de ejemplo de uso de if que mostramos a continuación y guárdalo

con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y

visualiza el resultado.

<?php

//Ejemplo uso if else aprenderaprogramar.com

$variable=2;

if($variable==1) {

echo '$variable es igual a 1.';

} else if($variable==2) {

echo '$variable es igual a 2.';

} else if($variable==3) {

echo '$variable es igual a 3.';

} else {

echo '$variable no es igual a 1, 2 o 3.';

}

?>

<?php

$variable=2;

switch($variable) {

case 1:

echo '$variable es igual a 1.';

break;

case 2:

echo '$variable es igual a 2.';

break;

case 3:

echo '$variable es igual a 3.';

break;

default:

echo '$variable no es igual a 1, 2 o 3.';

}

?>

 

 

Page 116: Hp_ Tutorial Básico Del Programador Web

 

Escribe ahora el código de ejemplo de uso de switch hemos mostrado y guárdalo con un

nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza

el resultado.

El resultado comprobamos que en ambos casos es: $variable es igual a 2.

Si cambiamos $variable=2 por $variable=5 al inicio de código el resultado sería:  $Variable

no es igual a 1, 2 o 3.

Una diferencia importante respecto a las instrucciones if ... else if ... else es que se requiere

de la instrucción break para salir del switch al terminar las instrucciones correspondientes a

un case. Sólo podemos especificar un valor en cada case, no se admite indicar más de un

valor. Sin embargo, si dejamos un case en blanco y omitimos el break, damos lugar a que se

ejecuten ciertas instrucciones si el valor coincide con alguno de los case en juego. Esto lo

veremos más claro con un ejemplo.

Escribe ahora estos otros códigos y guárdalos con nombres de archivo como ejemplo3.php y

ejemplo4.php. A continuación, sube los ficheros al servidor y visualiza el resultado.

<?php

//Ejemplo uso if else aprenderaprogramar.com

$variable=2;

if($variable==1) {

echo '$Variable es igual a 1.';

} else if($variable==2 OR $variable==3) {

echo '$Variable es igual a 2 o 3.';

}else {

echo '$Variable no es igual a 1, 2 o 3.';

}

?>

<?php

$variable=2;

switch($variable) {

case 1:

//Se ejecuta si $variable vale 1

echo '$Variable es igual a 1.';

break;

case 2:

case 3:

//Se ejecuta si $variable vale 2 o 3

echo '$Variable es igual a 2 o 3.';

break;

default:

//Se ejecuta en cualquier otro caso

echo '$Variable no es igual a 1, 2 o 3.';

}

Page 117: Hp_ Tutorial Básico Del Programador Web

?>

 

 

 

En cualquiera de las dos formas mostradas, la salida obtenida sería: $variable es igual a 2 o

3.

En este caso, al evaluarse la segunda instrucción case no se encuentra ningún break por lo

que se siguen ejecutando las instrucciones siguientes al tercer case, aún cuando $variable es

diferente de 3, ya que al no existir un break anterior los casos 2 y 3 quedan “agrupados”.

Más aún, si borramos el break del tercer case también se ejecutarán las instrucciones

siguientes a default, y la salida sería entonces:

$variable es igual a 2 o 3.

$variable no es igual a 1, 2 o 3.

 

Por ello es muy importante que cuando escribas una instrucción switch pongas break en

todos los case, o bien que si dejas algún break sin escribir sea porque conscientemente

quieras hacerlo y no por olvido.

 

 

EJERCICIO 1

Page 118: Hp_ Tutorial Básico Del Programador Web

Analiza el siguiente código PHP:

//Ejemplo de uso switch PHP aprenderaprogramar.com

        switch ($mes) {

            case 1:

            echo ("El mes es enero");

            break;

            case 2: echo ("El mes es febrero"); break;

            case 10: echo ("El mes es octubre"); break;

            default: echo ("El mes no es enero, febrero ni octubre"); break;

        }

 

Responde a las siguientes cuestiones:

a) ¿Qué es lo que hace este código?

b) Completa el código de forma que añadas las etiquetas y definas el valor de $mes = 1.

Sube el fichero al servidor y comprueba el resultado. ¿Cuál es el código completo? ¿Cuál es el

resultado obtenido por pantalla?

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

 

EJERCICIO 2

Considera estás desarrollando una web donde trabajas con tipos de motor (suponemos que

se trata del tipo de motor de una bomba para mover fluidos). Define una variable $tipoMotor

y asígnale valor 3. Los valores posibles son 1, 2, 3, 4. A través de un condicional switch haz lo

siguiente:

Page 119: Hp_ Tutorial Básico Del Programador Web

a)      Si el tipo de motor es 0, mostrar un mensaje indicando “No hay establecido un

valor definido para el tipo de bomba”.

b)      Si el tipo de motor es 1, mostrar un mensaje indicando “La bomba es una bomba

de agua”.

c)       Si el tipo de motor es 2, mostrar un mensaje indicando “La bomba es una bomba

de gasolina”.

d)      Si el tipo de motor es 3, mostrar un mensaje indicando “La bomba es una bomba

de hormigón”.

e)      Si el tipo de motor es 4,mostrar un mensaje indicando “La bomba es una bomba

de pasta alimenticia”.

f)       Si no se cumple ninguno de los valores anteriores mostrar el mensaje “No existe

un valor válido para tipo de bomba”.

 

¿Cuál es el código completo? ¿Cuál es el resultado obtenido por pantalla?

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

FUNCIONES CON CADENAS DE CARACTERES EN PHP.

Las cadenas de caracteres en PHP se definen, como ya sabemos, entre comillas dobles o

simples (podemos usar dobles o simples indistintamente). Es decir, podemos definir una

variable como cadena de caracteres de la siguiente forma: $cadena = "George Washington";

o también $cadena = 'George Wasington';

 

 

Para la manipulación de estas variables o cadenas de caracteres nos será útil conocer las

funciones básicas de manipulación. No vamos a entrar a describir cada una de las funciones

Page 120: Hp_ Tutorial Básico Del Programador Web

para cadenas de caracteres que PHP posee, que son muchas. Simplemente veremos las más

básicas y de uso más común.

 

 

FUNCIÓN STRLEN

La función strlen obtiene la longitud de una cadena y devuelve un número entero. Es decir,

obtenemos el número de caracteres que forman la cadena completa.

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo

como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$cad = "cadena"; //Prueba a cambiar el texto cadena por otro

$n = strlen($cad);

echo "La longitud de la cadena es: $n";

?>

 

 

 

FUNCIÓN SUBSTR

La función substr devuelve una subcadena de la cadena original, es decir, una parte de la

cadena original. Esta función tiene 3 parámetros:

1. La variable que contiene la cadena.

Page 121: Hp_ Tutorial Básico Del Programador Web

2. Número que representa la posición (inclusive) en la que comenzará a ser extraída la

subcadena.

3. Número que indica la cantidad de caracteres que serán extraídos. Este argumento es

opcional. Si se omite se tomará hasta el final de la cadena original.

 

Tener en cuenta que la numeración de la posición de los caracteres empieza por cero. Por

ejemplo para la cadena 'GPS', que tiene 3 caracteres, el carácter en posición 0 es G, en

posición 1 es P y en posición 2 es S. No existe la posición 3 debido a que se comienza a

contar por el cero.

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo

como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$cad = "cadena";

$sub1 = substr($cad, 2);

$sub2 = substr($cad, 2, 2);

echo "La subcadena número uno es la siguiente: $sub1 <br />";

echo "La subcadena número dos es la siguiente: $sub2";

?>

 

 

 

Page 122: Hp_ Tutorial Básico Del Programador Web

Escribe este otro ejemplo y visualízalo en tu navegador (nota: & nbsp; representa un espacio

en blanco):

<?php

$cad = "aprenderaprogramar.com";

$sub1 = substr($cad, 0); //La cadena completa

$sub2 = substr($cad, 0, 8); //La subcadena aprender

$sub3 = substr($cad, 8, 1); //La subcadena a

$sub4 = substr($cad, 9); //La subcadena programar

echo "& nbsp; & nbsp; La subcadena número uno es la siguiente: $sub1 <br />";

echo "& nbsp; & nbsp; La subcadena número dos es la siguiente: $sub2 <br />";

echo "& nbsp; & nbsp; La subcadena número tres es la siguiente: $sub3 <br />";

echo "& nbsp; & nbsp;La subcadena número cuatro es la siguiente: $sub4";

?>

 

 

 

Fíjate en las siguientes cuestiones:

a) La numeración de caracteres empieza en cero y no en uno. Así en este último ejemplo el

caracter 0 es la a, el 1 la p, el 2 la r, el 3 la e y así sucesivamente.

b) La posición en que comienza la extracción va incluida en la subcadena extraida. Esto

significa que substr ($cad, 0, 1) significa que sólo se extrae el primer caracter de la cadena.

Page 123: Hp_ Tutorial Básico Del Programador Web

 

 

OPERADOR DE CONCATENACIÓN

La concatenación es el proceso de unir varias porciones de texto en una sola cadena. Este

operador se expresa como un punto '.'

Escribe el siguiente código, súbelo al servidor y visualízalo en tu navegador.

<?php

$cad1 = "aprendera";

$cad2 = "programar";

$cadt = $cad1 . $cad2;

echo "La cadena número uno concatenada con la cadena número 2 es: $cadt <br />";

// Ahora concatenaremos la cadena ejemplo con la concatenación de $cad2 y $cad1

echo "Ejemplo: " . ($cad2 . $cad1);

?>

 

 

 

En este ejemplo vemos cómo las cadenas se pueden concatener en el orden que nosotros

deseemos.

 

Page 124: Hp_ Tutorial Básico Del Programador Web

 

EJERCICIO

Crea el código PHP que cumpla con lo que se indica a continuación:

a) Declara una variable cuyo contenido sea la cadena "Didáctica y divulgación de la

programación"

b) Usando la función substr extrae cada una de las palabras de la cadena anterior a una

variable. Como tenemos 6 palabras, debes tener 6 variables con las subcadenas.

c) Usando la concatenación muestra por pantalla lo siguiente: <<Las palabras primera,

tercera y sexta son: Didáctica, divulgación, programación>>

d) Usando strlen muestra por pantalla lo siguiente: <<La palabra primera es Didáctica y

tiene 9 caracteres, la palabra tercera es divulgación y tiene 11 caracteres. La palabra sexta

es programación y tiene 12 caracteres>>   

 

ESTRUCTURAS REPETITIVAS O BUCLES EN PHP

Las estructuras repetitivas (bucles) son aquellas que reiteran una o un grupo de instrucciones

"n" veces y dependen de una variable de control del ciclo. Es decir, ejecutan una o varias

instrucciones un número de veces definido. Las instrucciones básicas que permiten construir

este tipo de estructuras son while, do ... while y for.

 

 

LA INSTRUCCIÓN WHILE

La instrucción while (que en castellano se traduciría como “mientras…”) ejecuta una porción

de programa mientras se cumpla una cierta condición.

Page 125: Hp_ Tutorial Básico Del Programador Web

Mientras la condición sea verdadera, se ejecutan las instrucciones contenidas en el while.

Cuando deja de cumplirse la condición, se sale del ciclo y se continúa ejecutando el resto del

programa.

Si la condición no se cumple ni la primera vez que se comprueba, las líneas en el interior del

while no se ejecutarán ni una vez.

La estructura general o sintaxis habitual de un bucle while es la siguiente:

<?php

while (condición) {

... sentencias;

}

?>

 

 

En este fragmento de código estaríamos indicando que mientras se cumpla la condición se

realizan las sentencias, y en este caso si no se cumpliese la condición se seguiría ejecutando

el programa o mostrando los contenidos de la página web justo después del cierre de la

instrucción while (que queda determinado por el símbolo de cierre } ).

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo1.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$galletas = 0;

while ($galletas < 10){

echo "$galletas, ";

$galletas++;

}

?>

 

Page 126: Hp_ Tutorial Básico Del Programador Web

 

 

En este ejemplo, las instrucciones dentro del while se ejecutarían 10 veces, mostrando los

números de 0 a 9 separados por coma. Hay que tener especial cuidado en no crear

estructuras repetitivas que se ejecuten infinitamente (bucles infinitos). En el

ejemplo anterior, si no incrementamos el valor de la variable $galletas, la condición del while

se cumpliría siempre y tendríamos un problema porque habríamos creado un bucle infinito,

quedando el programa ‘atascado’ en dicho while.

 

 

EJERCICIO 1

Crea el código PHP donde generes:

a) Un bucle while que cuente desde 50 hasta 40 (fíjate que en este caso es decreciente)

b) Un bucle while que a partir de una variable $contador que toma valores de 1 a 5, muestre

por pantalla el doble del valor de $contador, es decir, que muestre 2, 4, 6, 8, 10.

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

 

Page 127: Hp_ Tutorial Básico Del Programador Web

LA INSTRUCCIÓN DO … WHILE

La estructura repetitiva do-while (en castellano equivaldría a hacer… mientras) es muy

similar a la estructura while, excepto que la expresión verdadera es verificada al final de

cada iteración en lugar de al principio. La diferencia principal con los bucles while es que está

garantizado que se ejecuten las instrucciones que contienen, al menos una vez (la

verificación de si se tiene que repetir el proceso se realiza al final de la repetición de la

estructura.

La estructura general o sintaxis habitual de un bucle do while es la siguiente:

<?php

do {

…sentencias

} while(condición);

?>

 

 

En este fragmento de código estaríamos indicando que se ejecute una primera vez “sí o sí”

las sentencias, y que después se evalúe la condición para comprobar si se deben ejecutar

nuevamente las sentencias. Como vemos, aunque no se cumpla la condición las sentencias

se ejecutarían al menos una primera vez.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$galletas = 0;

do {

echo "$galletas, ";

$galletas++;

} while ($galletas < 10);

?>

Page 128: Hp_ Tutorial Básico Del Programador Web

 

 

 

EJERCICIO 2

Crea el código PHP donde generes:

a) Un bucle do…while que cuente desde 50 hasta 40 (fíjate que en este caso es decreciente)

b) Un bucle do…while que a partir de una variable $contador que toma valores de 1 a 5,

muestre por pantalla el doble del valor de $contador, es decir, que muestre 2, 4, 6, 8, 10.

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

 

LA INSTRUCCIÓN FOR

La estructura repetitiva for (en castellano se traduciría como “desde…”) se utiliza

generalmente cuando tenemos bien determinada la cantidad de repeticiones a realizar. Se

diferencia de las anteriores en que se debe incluir en la propia instrucción una variable de

control, la cual se incrementa o decrementa de forma automática. La estructura de estas

instrucciones viene a ser muy similar a la anterior.

La estructura general o sintaxis habitual de un bucle for es la siguiente:

Page 129: Hp_ Tutorial Básico Del Programador Web

<?php

for ($variable=valor_inicial; condición; incremento) {

... sentencias;

}

?>

 

 

En este fragmento de código estaríamos indicando que mientras se cumpla la condición se

realizan las sentencias, y en este caso si no se cumpliese la condición se seguiría ejecutando

el programa justo después del cierre de la instrucción for (}). Todo esto es igual a la

instrucción while anteriormente citada, salvo que en la propia declaración de la estructura se

encuentra la variable de control, que en cada repetición se incrementa automáticamente.

Esta instrucción consta, por tanto, de tres parámetros:

Inicialización de la variable que se utilizará en la condición.

Condición que se debe cumplir para permanecer en el ciclo.

Modificación de la variable utilizada en la condición.

 

Escribe ahora este otro código guárdalo con un nombre de archivo como ejemplo3.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php

for ($galletas = 0; $galletas < 10; $galletas++){

echo "$galletas, ";

}

?>

 

Page 130: Hp_ Tutorial Básico Del Programador Web

 

 

Este ejemplo muestra a la salida, la misma información que mostraba la instrucción while.

Como podemos observar, el valor inicial y el incremento de la variable $galletas, van en la

propia instrucción.

 

 

EJERCICIO 3

Crea el código PHP donde generes:

a) Un bucle for que cuente desde 50 hasta 40 (fíjate que en este caso es decreciente y que

por tanto la variable deberá operar como $galletas– –).

b) Un bucle for que a partir de una variable $contador que toma valores de 1 a 5, muestre

por pantalla el doble del valor de $contador, es decir, que muestre 2, 4, 6, 8, 10.

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

 

MODIFICAR EL PASO O STEP DE LA VARIABLE CONTADORA

Page 131: Hp_ Tutorial Básico Del Programador Web

Crea el siguiente código, guárdalo con un nombre de archivo como ejemplo4.php y visualiza

los resultados en tu navegador.

<?php

for ( $i = 0; $i < 50; $i+=5 ){

echo "   $i <br/> ";

}

?>

 

 

 

Fíjate que en este caso a la variable contador la hemos denominado i. Es habitual usar

nombres como i, j, k para las variables contadoras en bucles.

Otra cosa interesante es que usando la instrucción += conseguimos que la variable

contadora no vaya de uno en uno, sino que el paso (step) de la variable sea el número que

nosotros deseemos. En este caso, hemos utilizado un incremento de 5 unidades en cada

repetición del bucle. También podemos lograr el mismo efecto pero con decrementos usando

– =.

Page 132: Hp_ Tutorial Básico Del Programador Web

 

 

EJERCICIO 4

Crea el código PHP donde generes:

a) Un bucle for que cuente desde 50 hasta 500 de 25 en 25.

b) Un bucle for que a partir de una variable de control $j que toma valores de 100 a 500 de

100 en 100, muestre por pantalla el resultado de dividir la variable de control por 20. En este

caso, el resultado será 5 (que es 100/20…), 10 (que es 200/20…), 15, 20, 25.

  

ARRAYS BÁSICOS O TRADICIONALES EN PHP

Un array es un conjunto de variables de una misma clase. Se accede a cada elemento

individual del array mediante un número entero denominado índice. 0 es el índice o

localizador del primer elemento y n-1 es el índice del último elemento, siendo n la dimensión,

tamaño o longitud del array. Así $empleado[23] representaría al empleado con localizador 23

como veremos a continuación.

 

 

Los arrays son muy utilizados en la programación. Dependiendo de la cantidad de

dimensiones que tengan pueden ser:

De una dimensión (vectores). Por ejemplo $empleado[23]

De dos dimensiones (matrices). Por ejemplo $butaca[3, 14]

De tres o más dimensiones (multidimensionales). Por ejemplo $fecha[2012, 9, 22]

 

Para acceder a los elementos del array se utilizan los corchetes [], dentro de los cuales

existirá un localizador o índice que es un número entero. Además, podemos guardar valores

Page 133: Hp_ Tutorial Básico Del Programador Web

de cualquier tipo de variable (string, entero, punto flotante, booleano) dentro de un array. Por

ejemplo $empleado[23] podría tomar como valor $empleado[23] = “Juan Pérez Suárez”. En

este caso se trataría de un array de cadenas de texto, es decir, un array de string. En otro

caso $empleado[23] podría tomar como valor $empleado[23] = 2312. En este caso se

trataría de un array de valores numéricos.

En algunos lenguajes es necesario declarar los arrays antes de poder utilizarlos, pero en PHP

no es necesario. Cuando se definen elementos de un array, PHP reconoce automáticamente

que se trata de un array sin necesidad de declaración previa.

 

 

VECTORES (ARRAYS DE UNA DIMENSIÓN)

Los vectores son los arrays que sólo contienen una dimensión (un índice).

Escribe este código y guárdalo con un nombre de archivo como ejemplo1.php. A

continuación, sube el fichero al servidor y visualiza el resultado en tu navegador.

<?php

$estacion[0] = "Primavera";

$estacion[1] = "Verano";

$estacion[2] = "Otoño";

$estacion[3] = "Invierno";

echo $estacion[2];

$numero[0] = 7;

$numero[1] = 11;

$numero[2] = 15;

?>

 

Page 134: Hp_ Tutorial Básico Del Programador Web

 

 

La forma general de uso de un array es: $nombreDeVariableArray [localizador] =

valorAsignado;

Ten en cuenta que lo que diferencia a una variable que pertenece a un array (conjunto de

variables) es la presencia del corchete con un índice en su interior.

 Jugador(8)   ---->     es una variable con índice.

 Jugador8     ---->     es una variable normal.

 TCP(3)        ---->     es una variable con índice.

 TCP3          ---->     es una variable normal.

 

 

PHP admite también otra posibilidad que no admiten otros lenguajes: se pueden usar arrays

sin especificar los números de los índices, ya que PHP los puede colocar automáticamente.

Escribe ahora este otro código y guárdalo con un nombre de archivo como ejemplo2.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$ciudad[] = "Sevilla";

$ciudad[] = "Madrid";

$ciudad[] = "Barcelona";

$ciudad[] = "Valencia";

echo $ciudad[3];

Page 135: Hp_ Tutorial Básico Del Programador Web

?>

 

 

 

Fíjate que PHP ha colocado automáticamente los índices, asignando el 0 a Sevilla, el 1 a

Madrid, el 2 a Barcelona y el 3 a Valencia. Hay que recordar que los arrays siempre

comienzan numerándose desde cero.

Otra forma de asignar valores a un array vector es la siguiente:

<?php

$color = array("azul", "verde", "negro", "marrón");

echo $color[1];

?>

 

 

Como ves, esta es una forma abreviada cuya forma general es:

$nombreDelArray = array (valorElemento0, valorElemento1, valorElemento2, … ,

valorElementon)

El término array es una palabra clave en PHP cuyo significado es equivalente a decir “los

elementos que aparecen en la lista a continuación son elementos de un array”.

 

Page 136: Hp_ Tutorial Básico Del Programador Web

 

EJERCICIO

Crea el código PHP de 3 archivos en cada uno de los cuales debes hacer lo siguiente:

a) Declara un array de enteros de nombre $coches e introduce en él 8 elementos cuyos

valores sean 32, 11, 45, 22, 78, -3, 9, 66, 5. A continuación muestra por pantalla el elemento

con localizador 5. Deberás obtener por pantalla que se visualiza -3.

b) Declara un array de numéricos decimales tipo double de nombre $importe e introduce en

él cuatro elementos que sean 32.583, 11.239, 45.781, 22.237. A continuación muestra por

pantalla el elemento con localizador 1. Deberás obtener por pantalla que se visualiza 11.239.

c) Declara un array de booleanos de nombre $confirmado e introduce en él seis elementos

que sean true, true, false, true, false, false. A continuación muestra por pantalla el elemento

con localizador 0. Deberás obtener por pantalla que se muestra “true”.

d) Declara un array de strings de nombre $jugador e introduce en él 5 elementos que sean

"Crovic", "Antic", "Malic", "Zulic" y "Rostrich". A continuación usando el operador de

concatenación haz que se muestre la frase: <<La alineación del equipo está compuesta por

Crovic, Antic, Malic, Zulic y Rostrich.>>

MATRICES O ARRAYS (ARREGLOS) DE DOS DIMENSIONES

Las matrices decimos que son arrays (arreglos) de dos dimensiones. También podemos

verlas como tablas donde cada elemento tiene una fila y una columna. Para comprenderlas

mejor podemos recordar las matrices matemáticas de 2 dimensiones. Un ejemplo de matriz

en matemáticas podría ser esta:

 

 

Page 137: Hp_ Tutorial Básico Del Programador Web

 

 

En una matriz normalmente hablamos de filas y columnas y decimos que la matriz tiene m

filas y n columnas. Así, cada elemento queda identificado por su fila i y su columna j. Por

ejemplo, en la matriz que hemos mostrado anteriormente podríamos decir que tenemos 3

filas (fila 0, fila 1 y fila 2) y cuatro columnas (columna 0, columna 1, columna 2, columna 3).

Podríamos decir que el elemento de la fila 1, columna 3 es igual a 2. De la misma manera

podríamos decir:

$valor [0] [0] = 1; $valor [0] [1] = 14; $valor [0] [2] = 8; $valor [0] [3] = 3;

$valor [1] [0] = 6; $valor [1] [1] = 19; $valor [1] [2] = 7; $valor [1] [3] = 2;

$valor [2] [0] = 3; $valor [2] [1] = 13; $valor [2] [2] = 4; $valor [2] [3] = 1;

 

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo3.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$animal[0][0] = "Perro";

$animal[0][1] = "Gato";

$animal[1][0] = "Lombriz";

$animal[1][1] = "Burro";

$animal[2][0] = "Murciélago";

$animal[2][1] = "Cocodrilo";

echo $animal[2][1];

echo $animal[0][0];

?>

 

Page 138: Hp_ Tutorial Básico Del Programador Web

 

 

Hay que recordar que los arrays siempre comienzan numerándose desde cero.

Otra forma de asignar valores a un array matriz es similar a la que ya describimos para los

vectores. Escribe este código y guárdalo con un nombre de archivo como ejemplo4.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$animal = array(

array("Perro", "Gato"),

array("Lombriz", "Burro"),

array("Murciélago", "Cocodrilo")

);

echo $animal[2][1];

echo $animal[0][0];

?>

 

 

La sintaxis que hemos empleado equivale a lo siguiente:

$animal [0] [0] = "Perro";  $animal [0] [1] = "Gato";

$animal [1] [0] = "Lombriz";  $animal [1] [1] = "Burro";

$animal [2] [0] = "Murciélago";  $animal [2] [1] = "Cocodrilo";

Page 139: Hp_ Tutorial Básico Del Programador Web

 

De ahí que por pantalla se muestre "Cocodrilo" y "Perro", al igual que en el ejemplo anterior.

También obtenemos el mismo resultado usando este código, que es una mezcla de ambos

tipos de sintaxis:

<?php

$animal[0] = array("Perro", "Gato");

$animal[1] = array("Lombriz", "Burro");

$animal[2] = array("Murciélago", "Cocodrilo");

echo $animal[2][1];

echo $animal[0][0];

?>

 

 

La visualización obtenida es la misma: por pantalla se muestra "Cocodrilo" y "Perro", al igual

que en el ejemplo anterior.

 

 

ARRAYS MULTIDIMENSIONALES

Los arrays multidimensionales son los que tienen más de dos dimensiones. Estos tipos de

arrays se definen como las matrices pero añadiendo más índices.

Escribe este código, guarda el archivo php, súbelo al servidor y visualiza el resultado en tu

navegador.

<?php

$animal[0][0][0] = "Perro";

$animal[0][0][1] = "Gato";

$animal[0][0][2] = "Lombriz";

Page 140: Hp_ Tutorial Básico Del Programador Web

$animal[1][0][0] = "Burro";

$animal[1][0][1] = "Murciélago";

$animal[1][0][2] = "Cocodrilo";

echo "<br/>& nbsp;& nbsp;& nbsp;" . $animal[1][0][1];

echo "<br/>& nbsp;& nbsp;& nbsp;" . $animal[0][0][3];

?>

 

 

 

En este ejemplo hemos incluido una línea que tiene poco sentido, o podría interpretarse

como un error:

echo "<br/>& nbsp;& nbsp;& nbsp;" . $animal[0][0][3];

 

Fíjate que estamos invocando un localizador [0][0][3] que no existe, o al que aún no le

hemos asignado valor. Dependiendo del lenguaje y de la versión el resultado puede ser uno u

otro. En principio, debe tratar de evitarse invocar a una variable tipo array a la que no se

haya asignado valor, ya que esto supone una inconsistencia o incoherencia. En general, si

esto ocurre, PHP devolverá un valor “vacío”, que en este caso supondría que en la pantalla

no se muestra nada asociado a esta variable. Por eso en la pantalla vemos únicamente

“Murciélago” y nada más.

Escribe el código que incluimos más abajo y visualiza el resultado. Si te fijas, cuando

declaramos un array dentro de otro array lo que hacemos es añadir una dimensión más al

Page 141: Hp_ Tutorial Básico Del Programador Web

array. Por ejemplo, si quisiéramos declarar un array de tres dimensiones de nombre

$miFecha podríamos escribir:

<?php

$miFecha = array( //Declara array

array( //Dimensión [0][…][…]

array("13 de enero de 2015", "11 de febrero de 2018"), //[0][0][…]

array("13 de enero de 2020", "11 de febrero de 2015"), //[0][1][…]

),

array( //Dimensión [1][…][…]

array("3 de agosto de 2017", "1 de octubre de 2016"), //[1][0][…]

array("3 de agosto de 2013", "1 de octubre de 2019"), //[1][1][…]

),

array( //Dimensión [2][…][…]

array("10 de junio de 2020", "11 de marzo de 2019"), //[2][0][…]

),

array(

array("22 de marzo de 2020", "28 de mayo de 2019"), //[3][0][…]

array("22 de marzo de 2019", "28 de mayo de 2018"), //[3][1][…]

array("22 de marzo de 2018", "28 de mayo de 2017"), //[3][2][…]

array("22 de marzo de 2017", "28 de mayo de 2016"), //[3][3][…]

)

);

echo "<br/>& nbsp;& nbsp;& nbsp;" . $miFecha[3][2][0];

?>

 

Page 142: Hp_ Tutorial Básico Del Programador Web

 

 

En este ejemplo hemos definido valores para los siguientes índices de array:

$miFecha [0] [0] [0], $miFecha [0] [0] [1]

$miFecha [0] [1] [0], $miFecha [0] [1] [1]

$miFecha [1] [0] [0], $miFecha [1] [0] [1]

$miFecha [1] [1] [0], $miFecha [1] [1] [1]

$miFecha [2] [0] [0], $miFecha [2] [0] [1]

$miFecha [3] [0] [0], $miFecha [3] [0] [1]

$miFecha [3] [1] [0], $miFecha [3] [1] [1]

$miFecha [3] [2] [0], $miFecha [3] [2] [1]

$miFecha [3] [3] [0], $miFecha [3] [3] [1]

 

Compruébalo solicitando la visualización de todas estas variables, como vemos en este

ejemplo.

<?php

$miFecha = array(

array(

Page 143: Hp_ Tutorial Básico Del Programador Web

array("13 de enero de 2015", "11 de febrero de 2018"),

array("13 de enero de 2020", "11 de febrero de 2015"),

),

array(

array("3 de agosto de 2017", "1 de octubre de 2016"),

array("3 de agosto de 2013", "1 de octubre de 2019"),

),

array(

array("10 de junio de 2020", "11 de marzo de 2019"),

),

array(

array("22 de marzo de 2020", "28 de mayo de 2019"),

array("22 de marzo de 2019", "28 de mayo de 2018"),

array("22 de marzo de 2018", "28 de mayo de 2017"),

array("22 de marzo de 2017", "28 de mayo de 2016"),

)

);

echo "<br/>& nbsp;& nbsp;& nbsp;" . $miFecha[3][2][0];

echo $miFecha [0] [0] [0]. "<br>"; echo $miFecha [0] [0] [1]. "<br>";

echo $miFecha [0] [1] [0]. "<br>"; echo $miFecha [0] [1] [1]. "<br>";

echo $miFecha [1] [0] [0]. "<br>"; echo $miFecha [1] [0] [1]. "<br>";

echo $miFecha [1] [1] [0]. "<br>"; echo $miFecha [1] [1] [1]. "<br>";

echo $miFecha [2] [0] [0]. "<br>"; echo $miFecha [2] [0] [1]. "<br>";

echo $miFecha [3] [0] [0]. "<br>"; echo $miFecha [3] [0] [1]. "<br>";

echo $miFecha [3] [1] [0]. "<br>"; echo $miFecha [3] [1] [1]. "<br>";

echo $miFecha [3] [2] [0]. "<br>"; echo $miFecha [3] [2] [1]. "<br>";

echo $miFecha [3] [3] [0]. "<br>"; echo $miFecha [3] [3] [1]. "<br>";

?>

 

Page 144: Hp_ Tutorial Básico Del Programador Web

 

 

EJERCICIO

Crea el código PHP de 3 archivos que den respuesta al siguiente planteamiento:

Queremos almacenar en una matriz el número de alumnos con el que cuenta una academia,

ordenados en función del nivel y del idioma que se estudia. Tendremos 3 filas que

representarán al Nivel básico, medio y de perfeccionamiento y 4 columnas en las que

figurarán los idiomas (0 = Inglés, 1 = Francés, 2 = Alemán y 3 = Ruso). Se pide realizar la

declaración de la matriz y asignarle los valores indicados en la siguiente imagen a cada

elemento de las siguientes maneras (crea un archivo php por cada una de estas maneras):

Page 145: Hp_ Tutorial Básico Del Programador Web

 

a) Con una sintaxis basada exclusivamente en índices, y mostrar por pantalla los alumnos

que existen en cada nivel e idioma.

b) Con una sintaxis basada en el uso anidado de la palabra array, y mostrar por pantalla los

alumnos que existen en cada nivel e idioma.

c) Con una sintaxis que combine el uso de array y el uso de índices, y mostrar por pantalla

los alumnos que existen en cada nivel e idioma.

 

Nota: por ejemplo, debe mostrarse por pantalla que el número de alumnos en el nivel básico,

idioma inglés, hay 1 alumno; en el nivel básico, idioma francés, hay 14 alumnos, etc.

ARRAYS ASOCIATIVOS EN PHP

Anteriormente hemos visto lo que son los arrays tradicionales en PHP y cómo operar con

ellos de forma muy elemental. Hemos aprendido que los arrays pueden denominarse

“variables con localizador” o “variables con índice”. Por tanto los elementos del array son

datos que están asociados, a su vez, a un elemento del array llamado índice.

 

 

Supongamos el array nombre[0], nombre[1], nombre[2]. El nombre de variable para el array

es “nombre” mientras que los índices son 0, 1 y 2.

El índice se caracteriza por conectar los elementos del array por medio de una numeración

que empieza por cero. Así, el primer elemento del array tiene índice cero, el segundo tiene

índice uno, y así sucesivamente.

Page 146: Hp_ Tutorial Básico Del Programador Web

Pero en realidad, resulta que este índice es numérico solo por defecto; es decir, tenemos la

posibilidad de crear nuestro propio índice dentro de un array. Cuando hacemos esto, estamos

convirtiendo el array en lo que se denomina un array asociativo.

FUNCIÓN COUNT

Antes de poder recorrer un array, debemos saber cuál es su tamaño para poder recorrerlo.

Supongamos que un array tiene tres elementos: tenemos que dar una instrucción para que

se extraiga el valor asociado a cada uno de los elementos del array, que normalmente será

algo similar a “para cada uno de los tres elementos del array, extraer su valor”.

 

 

Sin embargo, si el array tiene 24 elementos, la instrucción será del tipo “para cada uno de los

veinticuatro elementos del array, extraer su valor”. Como vemos, muchas veces nos es

necesario saber el número de elementos que hay en el array para poder recorrerlo, y para

ello nos va a resultar útil la función count.

La función count devuelve el número de elementos que hay en el array. Es decir para un

array de 4 elementos, la función count devolverá el número 4. Recuerda que si se trata de

valores numéricos de índices, los cuatro valores numéricos serán normalmente 0, 1, 2 y 3 en

lugar de 1, 2, 3 y 4.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo count aprenderaprogramar.com

$estacion[0] = "Primavera";

$estacion[1] = "Verano";

$estacion[2] = "Otoño";

$estacion[3] = "Invierno";

echo count($estacion);

?>

 

Page 147: Hp_ Tutorial Básico Del Programador Web

 

Puedes comprobar que se muestra el número 4 porque el array tiene 4 elementos.

 

 

RECORRIDOS DE ARRAYS UNIDIMENSIONALES

Ahora que ya conocemos qué son los arrays, debemos conocer cómo recorrerlos para extraer

o comprobar los valores que contiene cada uno de los elementos del array. Esta es una tarea

habitual en programación que en general va a tener gran utilidad para nosotros.

Lo arrays se pueden recorrer de muchas formas, nosotros no las explicaremos todas.

Trataremos de ver en principio las más habituales y sencillas.

 

Recorrido de arrays mediante for

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo3.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo arrays aprenderaprogramar.com

$array[0] = "Uno";

$array[1] = "Dos";

$array[2] = "Tres";

$array[3] = "Cuatro";

$array[4] = "Cinco";

$array[5] = "Seis";

$array[6] = "Siete";

$array[7] = "Ocho";

Page 148: Hp_ Tutorial Básico Del Programador Web

for($i=0;$i<count($array);$i++) {

echo $array[$i].'<br />';

}

?>

 

 

 

Como ejercicio y teniendo en cuenta lo explicado en las entregas anteriores sobre los

distintos tipos de instrucciones de repetición, escribe el código que dé lugar al mismo

resultado que el ejemplo anterior pero usando la instrucción while y comprueba que obtienes

el mismo resultado.

 

 

CONOCER COUNT

Ejecuta este código:

<?php //Ejemplo arrays aprenderaprogramar.com

$array[5] = "Uno";

Page 149: Hp_ Tutorial Básico Del Programador Web

$array[6] = "Dos";

$array[7] = "Tres";

$array[8] = "Cuatro";

$array[9] = "Cinco";

$array[10] = "Seis";

$array[11] = "Siete";

$array[12] = "Ocho";

echo 'Elementos inicializados en el array: '.count($array).'<br/>';

for($i=0;$i<count($array);$i++) {

echo $array[$i].'...<br/>';

}

echo $array[15].'aaa<br/>';

echo count($otroArray[14][33]).' elementos<br/>';

?>

 

 

El resultado obtenido será el siguiente:

Elementos inicializados en el array: 8

...

...

...

...

...

Uno...

Dos...

Tres...

aaa

0 elementos

 

 

Page 150: Hp_ Tutorial Básico Del Programador Web

Analicemos lo que está ocurriendo. El array $array no tiene definidos cuáles son sus

elementos de índice 0, 1, 2, 3 y 4. En cambio sí tiene definidos valores para sus elementos de

índice 5, 6, 7, 8, 9, 10, 11 y 12. Hay 8 elementos con valores definidos pero sus índices no

son 0, 1, 2, 3, 4, 5, 6, 7 como es lo habitual, sino que son 5, 6, 7, 8, 9, 10, 11 y 12.

Al ejecutar el for comenzando con un valor de la variable de control igual a cero, se ejecuta

echo $array[0].’…<br/>’; Al no tener un valor asignado, $array[0] devuelve vacío y

simplemente se muestran tres puntos por pantalla. Lo mismo ocurre con los índices 1, 2, 3, 4

y sólo es al llegar al índice cinco cuando se muestran valores por pantalla.

Sin embargo, sólo se mostrarán los elementos con índice 5 a 8 del array, quedando el resto

de elementos sin ser mostrado.

Además comprobamos que podemos invocar a elementos del array por encima del índice

máximo definido sin obtener error, y que incluso podemos invocar a un nombre de array que

no hemos declarado ni utilizado, con cualquier índice, sin obtener error.

En este ejemplo podríamos mostrar todos los elementos del array realizando un “pequeño

cambio”:

for($i=5;$i<count($array)+5;$i++)

Sin embargo esta solución no es satisfactoria porque no la podemos aplicar como solución

para recorrer cualquier array.

A modo de resumen diremos lo siguiente:

count nos devuelve el número de elementos inicializados del array.

Si los índices del array no son secuencialmente 0, 1, 2, 3 , etc. el recorrido con un for

tradicional puede resultar no satisfactorio, por lo que habremos de pensar en otras

alternativas para recorrer el array. Hablaremos de esto más adelante.

 

 

COUNT CON ARRAYS MULTIDIMENSIONALES

En el caso de arrays de más de una dimensión, la función count devuelve el número de

elementos que hay en un nivel del array definido y para un índice definido. Llamamos nivel

Page 151: Hp_ Tutorial Básico Del Programador Web

del array a cada uno de los corchetes existentes en el array. Por ejemplo si hemos definido

$ejem[2][5][1][6][2] = 33; y $ejem[2][5][3][1][9] = 55; decimos que en el primer nivel del

array, correspondiente al primer índice, hay un solo índice: el 2. En el segundo nivel del array

para índice 2 hay un solo índice: el 5. En el tercer nivel del array con índice 1 hay un solo

índice: el 6. En el tercer nivel del array con índice 3 hay un solo índice: el 1. En el cuarto nivel

del array con índice 6 hay un solo índice: el 2. En el cuarto nivel del array con índice 1 hay un

solo indice: el 9.

Con un ejemplo comprenderemos mejor el funcionamiento de count en arrays

multidimensionales. Ejecuta este código:

<?php //Ejemplo arrays aprenderaprogramar.com

$miEspArray[6]=99;

$miEspArray[22]=87;

echo 'Numero de elementos de miEspArray es '.count($miEspArray).'<br/>';

echo "--------------------";

$array2[0][0][0] = "Prueba1";

$array2[0][0][1] = "Prueba2";

$array2[0][0][2] = "Prueba3";

$array2[0][1][0] = "Prueba4";

$array2[0][1][1] = "Prueba5";

$array2[1][0][1] = "Prueba6";

$array2[1][1][2] = "Prueba7";

$array2[1][2][1] = "Prueba8";

$array2[2][0][0] = "Prueba9";

$array2[2][0][1] = "Prueba10";

$array2[5][0][1] = "Prueba11";

echo '<br/>Numero de indices en el primer nivel: '.count($array2);

echo '<br/>Numero de indices en el segundo nivel de array[0]: '.count($array2[0]);

echo '<br/>Numero de indices en el segundo nivel de array[1]: '.count($array2[1]);

echo '<br/>Numero de indices en el segundo nivel de array[2]: '.count($array2[2]);

echo '<br/>Numero de indices en el segundo nivel de array[3]: '.count($array2[3]);

echo '<br/>Numero de indices en el segundo nivel de array[5]: '.count($array2[5]);

echo '<br/>Numero de indices en el tercer nivel de array[0][0]: '.count($array2[0][0]);

echo '<br/>Numero de indices en el tercer nivel de array[0][1]: '.count($array2[0][1]);

Page 152: Hp_ Tutorial Básico Del Programador Web

echo '<br/>Numero de indices en el tercer nivel de array[1][0]: '.count($array2[1][0]);

echo '<br/>Numero de indices en el tercer nivel de array[1][1]: '.count($array2[1][1]);

echo '<br/>Numero de indices en el tercer nivel de array[1][2]: '.count($array2[0][0]);

echo '<br/>Numero de indices en el tercer nivel de array[2][0]: '.count($array2[2][0]);

echo '<br/>Numero de indices en el tercer nivel de array[5][0]: '.count($array2[5][0]);

?>

 

El resultado obtenido será el siguiente:

Numero de elementos de miEspArray es 2

--------------------

Numero de indices en el primer nivel: 4

Numero de indices en el segundo nivel de array[0]: 2

Numero de indices en el segundo nivel de array[1]: 3

Numero de indices en el segundo nivel de array[2]: 1

Numero de indices en el segundo nivel de array[3]: 0

Numero de indices en el segundo nivel de array[5]: 1

Numero de indices en el tercer nivel de array[0][0]: 3

Numero de indices en el tercer nivel de array[0][1]: 2

Numero de indices en el tercer nivel de array[1][0]: 1

Numero de indices en el tercer nivel de array[1][1]: 1

Numero de indices en el tercer nivel de array[1][2]: 3

Numero de indices en el tercer nivel de array[2][0]: 2

Numero de indices en el tercer nivel de array[5][0]: 1

 

 

Fíjate que por ejemplo count($array2[0][1]) nos devuelve el número de elementos existentes

de tipo $array2[0][1][x] donde x es cualquier índice, es decir, el número de elementos de

tercer nivel del array para los índices iniciales 0 y 1.

 

Page 153: Hp_ Tutorial Básico Del Programador Web

 

RECORRIDO DE ARRAYS MULTIDIMENSIONALES

Para recorrer un array multidimensional, tendremos que ir anidando tantas estructuras

repetitivas como dimensiones tenga el array. Con un ejemplo se verá todo mucho más claro.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo4.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo arrays aprenderaprogramar.com

$array[0][0] = "Uno";

$array[0][1] = "Dos";

$array[1][0] = "Tres";

$array[1][1] = "Cuatro";

for($i=0;$i<count($array);$i++) {

for($j=0;$j<count($array[$i]);$j++) {

echo $array[$i][$j].'<br />';

}

}

echo "--------------------";

$array2[0][0][0] = "Cinco";

$array2[0][0][1] = "Seis";

$array2[0][0][2] = "Siete";

$array2[0][1][0] = "Ocho";

$array2[0][1][1] = "Nueve";

for($i=0;$i<count($array);$i++) {

for($j=0;$j<count($array[$i]);$j++) {

for($k=0;$k<count($array[$i][$j]);$k++) {

echo $array[$i][$j][$k].'<br />';

}

}

}

?>

 

Page 154: Hp_ Tutorial Básico Del Programador Web

 

 

Fíjate que para poder obtener el resultado deseado los elementos de los arrays deben estar

definidos usando índices que comiencen en 0 y sean progresivamente 1, 2, 3, 4… Si no fuera

así estos bucles, al estar definidos partiendo de 0, no funcionarían.

Fíjate también en la lógica de los bucles, por ejemplo el primer bucle lo podríamos leer así:

para cada elemento desde 0 hasta el número de elementos de primer nivel, y para cada

elemento desde 0 hasta el número de elementos de segundo nivel con el índice extraido

previamente, mostrar el contenido del array. Si por ejemplo en el primer nivel tenemos dos

índices que son 0 y 1, comenzaremos con el índice 0 y se verá para el índice 0 cuántos

índices hay en el segundo nivel (son 2). De este modo lo primero que se mostrará son los

índices [0][0] y [0][1]. Una vez completado el recorrido del índice 0 se pasa al índice 1 y se

sigue el mismo proceso.

Nota: en algunas versiones o situaciones pedir un elemento no definido de un array puede

dar lugar a que aparezca un error. Por ejemplo, si el elemento $array[2][3] no existe e

hiciéramos una llamada a ese elemento como echo $array[2][3] podría aparecer un error tipo

“undefined offset…” similar a éste:

Page 155: Hp_ Tutorial Básico Del Programador Web

 

 

Recorrido de arrays mediante foreach

PHP incorpora una forma “cómoda” para poder recorrer todos los elementos de un array.

Esta forma se basa en el uso de la instrucción foreach.

Este tipo de recorridos se suele usar cuando obtenemos datos de una base de datos.

El tipo de array que nos suele devolver una consulta a la base de datos es similar al

siguiente:

$datosArray = array(

                                array('nombre' => 'Antonio', 'apellidos' => 'Gómez Gómez', 'telefono' => '675832145'),

                                array('nombre' => 'Pedro', 'apellidos' => 'Guillén Gastón', 'telefono' => '674562178'),

                                array('nombre' => 'Dolores', 'apellidos' => 'Candela Quema', 'telefono' => '689765432'),

                                .

                                .

                                .

                                .

                                array('nombre' => 'Rubén', 'apellidos' => 'Guardia Jurado', 'telefono' => '654213896'),

);

 

 

Recuerda que la anterior forma de expresión es equivalente a esta otra:

Page 156: Hp_ Tutorial Básico Del Programador Web

$datosArray[0] ['nombre'] = 'Antonio'

$datosArray[0] ['apellidos'] = 'Gómez Gómez'

$datosArray[0] ['telefono'] = '675832145'

$datosArray[1] ['nombre'] = 'Pedro'

$datosArray[1] ['apellidos'] = 'Guillén Gastón'

$datosArray[1] ['telefono'] = '674562178'

$datosArray[2] ['nombre'] = 'Dolores'

$datosArray[2] ['apellidos'] = 'Candela Quema'

$datosArray[2] ['telefono'] = '689765432'

 

 

La diferencia está en que en el primer caso los índices del array son en algunos casos

cadenas (se trata de arrays asociativos) mientras que en el segundo caso los índices del

array son números (se trata de arrays tradicionales). En el primer caso los valores 0, 1 y 2

son asignados automáticamente por php porque no se ha especificado otra cosa.

Para recorrer arrays de forma cómoda se usa la instrucción foreach.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo5.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo foreach aprenderaprogramar.com

$rows = array(

array(

'nombre' => 'Antonio', 'apellidos' => 'Gómez Gómez', 'telefono' => '675832145'),

array(

'nombre' => 'Pedro', 'apellidos' => 'Guillén Gastón', 'telefono' => '674562178'),

array(

'nombre' => 'Dolores', 'apellidos' => 'Candela Quema', 'telefono' => '689765432'),

array(

'nombre' => 'Rubén', 'apellidos' => 'Guardia Jurado', 'telefono' => '654213896')

);

Page 157: Hp_ Tutorial Básico Del Programador Web

foreach($rows as $valor) {

echo 'Nombre: ' . $valor['nombre'] . '<br />';

}

?>

 

 

 

Como podemos observar, vamos a ir recorriendo todas las filas y mostrando el nombre.

$valor es una variable temporal que sólo existe durante la ejecución de la instrucción

foreach, y esta variable va tomando en cada repetición o iteración el valor del siguiente

elemento dentro del array principal. En este caso, el elemento que hay dentro del array es

otro array. A su vez, indicamos que para cada uno de los arrays extraidos en el recorrido, se

nos muestre el item del array cuyo índice es ‘nombre’.

En este caso podríamos obtener el mismo resultado usando este código:

echo $rows[0]['nombre']. '<br />';

echo $rows[1]['nombre']. '<br />';

echo $rows[2]['nombre']. '<br />';

echo $rows[3]['nombre']. '<br />';

 

Page 158: Hp_ Tutorial Básico Del Programador Web

Pero piensa que para recorrer un array de varios cientos de elementos no resultará práctico

escribirlos uno a uno…

Como ejercicio escribe el código que muestre los nombres y apellidos del array anterior.

Si te resulta un poco complicado el ejercicio anterior, prueba con este código que es más

sencillo, y luego vuelve a revisar el código anterior.

<?php

$estacion[0] = "Primavera";

$estacion[1] = "Verano";

$estacion[2] = "Otoño";

$estacion[3] = "Invierno";

foreach($estacion as $valor) {

echo '& nbsp; & nbsp; & nbsp;'. $valor.'<br/>';

}

?>

 

 

El resultado que obtenemos es similar al que se ve en la siguiente imagen. Como puedes

comprobar, la variable $valor (variable transitoria) va tomando en cada repetición del bucle

el contenido de los elementos o items del array que estamos recorriendo.

 

Page 159: Hp_ Tutorial Básico Del Programador Web

 

EJERCICIO 1

Crea un array con nombre paisLimitrofe donde los elementos del array serán cadenas de

texto con los países limítrofes (con frontera) con el tuyo. Por ejemplo si vivimos en Perú

tenemos como países limítrofes  Ecuador, Colombia, Brasil, Bolivia y Chile.

a) Utilizando un bucle for, muestra por pantalla los países limítrofes.

b) Utilizando un bucle for each, muestra por pantalla los países limítrofes.

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

 

EJERCICIO 2

Escribe y ejecuta el siguiente código y responde a las siguientes preguntas:

$equipo = array(portero=>'Casillas', defensa=>'Hierro', medio=>'Ces', delantero=>'Ronaldo');

foreach($equipo as $posicion=>$jugador) {

    echo "El " . $posicion . " es " . $jugador;

    }

 

a) ¿$equipo es una variable normal, un array tradicional ó un array asociativo?

b) ¿portero es un índice de un array, un contenido de un elemento de un array o un

contenido de una variable simple?

c) ¿Al ejecutar el código obtienes un resultado por pantalla u obtienes un error? ¿Qué es lo

que hace el código?

Page 160: Hp_ Tutorial Básico Del Programador Web

 

 

EJERCICIO 3

Supón que quieres representar lo siguiente: hay 2 equipos españoles, en el primero el

portero es Frank, el defensa Pepe, el medio Luis y el delantero Raul. En el segundo, el portero

es Tiger, el defensa Mourin, el medio Katz y el delantero Alberto. Hay 1 equipo mexicano,

donde el portero es Suarez, el defensa Koltz, el medio Fernandez y el delantero Ramirez. Hay

2 equipos argentinos. En el primero el portero es Higuita, el defensa Mel, el medio Rubens y

el delantero Messi. En el segundo el portero es Kostenmeiner, el defensa Lenkins, el medio

Marash y el delantero Juanes.

a) Representa los datos usando un array de tres dimensiones con índices numéricos donde el

primer índice indica el país, el segundo el equipo y el tercero la posición del jugador.

Presenta la información del país, equipo, posiciones y jugadores de cada equipo usando un

bucle for.

b) Representa los datos usando un array de tres dimensiones con índices numéricos donde el

primer índice indica el país, el segundo el equipo y el tercero la posición del jugador.

Presenta la información del país, equipo, posiciones y jugadores de cada equipo usando un

bucle for each.

c) Representa los datos usando arrays arrays asociativos donde el primer índice indica el

país, el segundo el equipo y el tercero la posición del jugador (un ejemplo de cómo declarar

un elemento sería por ejemplo: $equipos['Mexico']['Equipo1']['defensa']="koltz";). A

continuación usando un bucle foreach recorre los elementos del array mostrando la

información del país, equipo, posiciones y jugadores de cada equipo.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo1.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo arrays aprenderaprogramar.com

$colores_vehiculos = array(

'coche' => 'Rojo',

'moto' => 'verde',

Page 161: Hp_ Tutorial Básico Del Programador Web

'avion' => 'amarillo'

);

echo $colores_vehiculos['moto'];

?>

 

 

 

Si te fijas en el código, hemos asignado a la variable $colores_vehiculos un array asociativo.

Al ser asociativo tenemos que especificar un índice. Los índices que hemos especificado son:

coche, moto y avion. Es decir, en vez de usar 0, 1 y 2 hemos usado coche, moto y avión.

Para declarar arrays asociativos, en el paréntesis de definición del array, tenemos que

asociar el índice con el valor por medio del operador =>. Fíjate que el índice debe ir escrito

entre comillas simples. Después, para acceder a un elemento del array asociativo tenemos

que escribir la variable asignada al array, y posteriormente escribir entre corchetes el índice

que hemos asignado a dicho elemento.

Tenemos la posibilidad de utilizar cualquier tipo de dato para especificar un índice. Por

defecto es un número, pero también podemos poner cadenas de texto, como en el ejemplo

anterior e incluso variables. Escribe este código y comprueba el resultado en tu servidor.

<?php //Ejemplo arrays aprenderaprogramar.com

$indice = 'coche';

$colores_vehiculos = array(

$indice => 'Rojo',

'moto' => 'verde',

'avion' => 'amarillo'

Page 162: Hp_ Tutorial Básico Del Programador Web

);

echo $colores_vehiculos[$indice];

?>

 

 

 

Como ves en este ejemplo hemos usado una variable tipo cadena de texto como índice de un

array.

Finalmente, los arrays asociativos también pueden usarse en la forma de declaración

habitual escribiendo $nombreVariable [indice] = valor. Escribe este ejemplo de código,

guárdalo con un nombre de archivo y súbelo al servidor.

<?php //Ejemplo arrays aprenderaprogramar.com

$colores_vehiculos ['coche'] = 'Rojo';

$colores_vehiculos ['moto'] = 'verde';

$colores_vehiculos ['avion'] = 'amarillo';

echo $colores_vehiculos['moto'];

?>

 

 

Comprobarás que en la pantalla del navegador se muestra el texto “verde”.

 

Page 163: Hp_ Tutorial Básico Del Programador Web

 

EJERCICIO

Crea el código PHP de dos archivos que den respuesta al siguiente planteamiento:

Queremos almacenar en una matriz el número de alumnos con el que cuenta una academia,

ordenados en función del nivel y del idioma que se estudia. Tendremos 3 niveles: Nivel

básico, medio y de perfeccionamiento, que se corresponden con las filas de la matriz, y 4

idiomas (Inglés, Francés, Alemán y Ruso), que se corresponden con las columnas de la

matriz. Se pide realizar la declaración de la matriz y asignarle los valores indicados en la

siguiente imagen cumpliendo con:

 

 

a) Con una sintaxis ejemplo de uso de arrays asociativos donde el primer índice del array

(niveles) es un número y el segundo un texto indicativo del idioma. Se debe mostrar por

pantalla los alumnos que existen en cada nivel e idioma. Ejemplo: numeroAlumnos[0]

['frances'] representará el número de alumnos que existen en el nivel básico, idioma francés.

b) Con una sintaxis ejemplo de uso de arrays asociativos donde tanto el primer índice del

array (niveles) como el segundo (idiomas) sea un texto indicativo. Se debe mostrar por

pantalla los alumnos que existen en cada nivel e idioma. Ejemplo: numeroAlumnos['basico']

['frances'] representará el número de alumnos que existen en el nivel básico, idioma francés.

 

Nota: en ambos casos debe mostrarse por pantalla que el número de alumnos en el nivel

básico, idioma inglés, hay 1 alumno; en el nivel básico, idioma francés, hay 14 alumnos, etc.

 

Page 164: Hp_ Tutorial Básico Del Programador Web

FUNCIONES EN PHP

Una de las herramientas más importantes en cualquier lenguaje de programación son las

funciones. Una función es un conjunto de instrucciones que a lo largo del programa van a ser

ejecutadas multitud de veces. Es por ello, que este conjunto de instrucciones se agrupan en

una función. Las funciones pueden ser llamadas y ejecutadas desde cualquier punto del

programa.

 

 

Además, una función puede recibir parámetros externos de los cuales dependa el resultado

de dicha función. Es decir, según el parámetro o parámetros con los que se invoque a la

función, ésta devolverá un resultado u otro.

Las funciones deben estar definidas antes de realizar la llamada a la función (como es

lógico).

 

Sintaxis general para declarar una función en PHP

function nombre (parámetro1, parámetro2, …, parámetroN) {

                               instrucción1

                               instrucción2

                               .

                               .

                               .

                                instrucciónN

                }

 

 

Page 165: Hp_ Tutorial Básico Del Programador Web

Para llamar (hacer que se ejecute) la función usaremos esta sintaxis: nombre(par1, par2,

par3, …, parN); donde par1, par2, par3, …, parN son los parámetros (información) que le

pasamos a la función. Una función puede necesitar de ningún, uno o varios parámetros para

ejecutarse.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo1.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo funciones aprenderaprogramar.com

//Declaración de funciones

function mostrarTexto($texto) {

echo "<strong>El texto a mostrar es el siguiente: </strong>";

echo $texto;

}

//Fin de declaración de funciones

mostrarTexto("Me gusta mucho la web de aprenderaprogramar.com");

?>

 

 

 

En este ejemplo hemos visto cómo hemos definido una función cuyo nombre es

mostrarTexto. Esta función espera un parámetro cuando es invocada (parámetro que se ha

denominado $texto). Una vez se ejecuta, la función ejecuta una serie de instrucciones y

devuelve el control al punto desde el que fue invocada.

Podemos hacer varios comentarios:

Page 166: Hp_ Tutorial Básico Del Programador Web

a) En algunos lenguajes de programación se distinguen los términos “procedimiento”

cuando un fragmento de código de este tipo ejecuta una serie de instrucciones sin devolver

un valor, frente al término “función” que se aplica cuando un fragmento de código de este

tipo ejecuta una serie de instrucciones y devuelve un valor. En PHP no se distingue entre una

cosa y otra, simplemente se habla de “función” en general.

b) En algunos lenguajes de programación como Java el tipado o especificación de tipos que

se van a recibir por parte de la función (o el tipo de dato que va a devolver la función) es

mucho más fuerte. Si te fijas, la función mostrarTexto recibe un parámetro denominado

$texto, pero en ningún lado se especifica si dicho parámetro es tipo integer, float, double ó

string. ¿De qué tipo es? Realmente no lo sabemos: el intérprete PHP se encarga de

automáticamente reconocer el tipo que se le pasa a la función. Además, intentará ejecutar el

código sea como sea el tipo del parámetro pasado. Si le resultara imposible ejecutar el

código, devolvería un error.

 

La utilidad fundamental de las funciones es no tener que repetir partes de código comunes,

que sería necesario repetir varias veces. Esas partes de código comunes se agrupan en

funciones y simplemente llamaremos a la función cada vez que necesitamos ejecutar ese

código. De esta manera, evitamos la repetición que hace más largo y difícil de entender un

programa o desarrollo web.

También podemos crear funciones que devuelvan datos (valores concretos). Estas funciones,

que podríamos denominar “funciones en sentido estricto”, son aquellas que ejecutan un

código y como punto final de dicho código incluyen una sentencia return seguida del

resultado de la función. La sentencia return indica que cuando se alcanza se ha llegado al

final de la función y se devuelve como resultado de la misma el contenido especificado a

continuación del return. Después de un return puede devolverse una variable, un número,

una cadena de texto, etc.

Por ejemplo return "No dispone de permisos" significa que la función devuelve esta cadena

de texto. Otro ejemplo: return $calculo; indica que la función devuelve el contenido que se

encuentre almacenado en la variable $calculo. Otro ejemplo: return "Lo sentimos ".$usuario."

pero no dispone de permisos. Para solicitar información puede escribir a ".

$emailAdministrador; haría que la función devuelva una cadena de texto donde intervienen

diversas variables.

<?php // Ejemplo funciones aprenderaprogramar.com

Page 167: Hp_ Tutorial Básico Del Programador Web

function operaciones($n1, $n2, $operacion) {

$resultado = 0;

if($operacion == "Sumar") {

$resultado = $n1 + $n2;

}else if($operacion == "Restar") {

$resultado = $n1 - $n2;

}else if($operacion == "Multiplicar") {

$resultado = $n1 * $n2;

}

return $resultado; // Devolver el resultado

}

// Llamar a la función operaciones

$r = operaciones(5, 7, "Sumar");

echo $r . "<br>";

// O podemos imprimir directamente

echo operaciones(15, 8, "Restar");

?>

 

 

 

Fíjate que a diferencia de la función mostrarTexto, la función operaciones nos devuelve un

valor concreto, de forma que se sustituye su invocación allí donde aparece por el valor que

devuelve. Así, la instrucción echo operaciones(15, 8, "Restar"); equivale a lo que sería

escribir echo <<aquí el valor devuelto por la función operaciones invocada con los

parámetros 15, 8 y “Restar” >>, es decir, sería lo mismo que escribir echo (15-8); ó echo 7;

Page 168: Hp_ Tutorial Básico Del Programador Web

Además, fíjate que la función mostrarTexto requería un parámetro, mientras que la función

operaciones requiere tres parámetros. Si invocas la función sin pasarle el número de

parámetros adecuado obtendrás un error del tipo <<Warning: Missing argument 3 for

operaciones()>>.

Por último, tener en cuenta que una función puede ser invocada sin parámetros.

<?php //Ejemplo funciones aprenderaprogramar.com

function mostrarTextoError {

echo "<strong>Se ha producido un error </strong>";

// Aquí pueden venir varias líneas de instrucciones

}

?>

 

 

Esta función carece de parámetros. Para invocarla escribiríamos mostrarTextoError(). Cada

vez que realizáramos la invocación se ejecutaría el código dentro de la función. Esta función

podemos decir que es “tipo procedimiento” porque no devuelve un resultado (no tiene

sentencia return).

 

 

EJERCICIO

Crear las siguientes funciones en PHP y código para comprobar su funcionamiento:

a) Una función que reciba cinco números enteros como parámetros y muestre por pantalla el

resultado de sumar los cinco números (tipo procedimiento, no hay valor devuelto).

b) Una función que reciba cinco números enteros como parámetros y devuelva el resultado

de sumar los cinco números (tipo función, hay un valor devuelto). Asigna el resultado de una

invocación a la función con los números 2, 5, 1, 8, 10 a una variable de nombre $tmp y

muestra por pantalla el valor de la variable.

Page 169: Hp_ Tutorial Básico Del Programador Web

c) Una función que reciba como parámetros el valor del radio de la base y la altura de un

cilindro y devuelva el volumen del cilindro, teniendo en cuenta que el volumen de un cilindro

se calcula como Volumen = númeroPi * radio * radio * Altura siendo númeroPi = 3.1416

aproximadamente.

FUNCIONES BÁSICAS EN PHP

PHP además de permitirnos definir nuestras propias funciones, dispone de una gran cantidad

de funciones propias del lenguaje a las que se denomina “funciones nativas” o “funciones del

core o núcleo php”. Ya conocemos algunas de ellas como strlen y substr. Vamos a ver otras

funciones muy usadas relacionadas con el manejo de cadenas de caracteres (texto).

 

 

FUNCIÓN STR_REPLACE

Esta función se utiliza para reemplazar caracteres dentro de una cadena de caracteres. Es

decir, nos permite definir una cadena que debe ser reemplazada con otra dentro de una frase

o palabra. La función devuelve la frase original con todas las apariciones de la cadena a

buscar reemplazadas con una cadena de reemplazo especificada.

La sintaxis básica habitual para esta función es:

str_replace ("cadena a buscar", "cadena de reemplazo", $variableOFraseOriginal)

 

 

Veámoslo con un ejemplo para entenderla mejor. Escribe este código y guárdalo con un

nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza

el resultado.

<?php //Ejemplo funciones básicas aprenderaprogramar.com

$texto = "Donde dije digo digo Diego.";

Page 170: Hp_ Tutorial Básico Del Programador Web

echo str_replace("Diego", "recortes", $texto);

echo "<br />";

echo $texto;

?>

 

 

 

Como podemos observar, en la cadena de caracteres $texto, hemos sustituido la palabra o

conjunto de caracteres "Diego" por "Recortes" y hemos devuelto el resultado sin modificar la

variable de entrada.

Fíjate que en el código que hemos escrito no hemos reemplazado el valor de la variable

$texto por un nuevo contenido. Unicamente hemos impreso por pantalla el resultado que nos

devuelve la función. Si hubiéramos escrito lo siguiente sí hubiéramos cambiado el contenido

de la variable: $texto = str_replace("Diego", "recortes", $texto);

La función permite pasar opcionalmente un parámetro adicional que permite saber a

posteriori el número de reemplazos que se han realizado:

str_replace ("cadena a buscar", "cadena de reemplazo", $variableOFraseOriginal, $numReemplazos)

 

 

Veámoslo con un ejemplo para entenderlo mejor:

Page 171: Hp_ Tutorial Básico Del Programador Web

<?php //Ejemplo funciones básicas aprenderaprogramar.com

$texto = "El dijo: es tarde ahora, pero es mejor si hay tres";

echo str_replace("es", "**", $texto, $reemplazos );

echo '<br/>Se han realizado: '.$reemplazos. ' reemplazos<br/>';

echo $texto;

?>

 

 

El resultado esperado es: El dijo: ** tarde ahora, pero ** mejor si hay tr**, Se han realizado: 3

reemplazos, El dijo: es tarde ahora, pero es mejor si hay tres

Fíjate que se reemplaza la cadena "es" indistintamente según esté separada por espacios o

dentro de una palabra. Si sólo quisiéramos reemplazar la cadena si está separada por

espacios podríamos indicar los espacios dentro de la cadena: echo str_replace(" es ", " ** ",

$texto, $reemplazos );

Aquí hemos indicado que se reemplace espacio-e-s-espacio con espacio-&#-espacio.

Si fuera necesario establecer reglas complejas de reemplazo, por ejemplo “reemplazar todas

las palabras que empiecen por a y terminen por a con otra palabra, tendríamos que usar lo

que se denominan expresiones regulares, pero no vamos a estudiar ahora la forma de definir

y emplear expresiones regulares con PHP.

 

 

FUNCIONES STRTOLOWER Y STRTOUPPER

Las funciones strtolower y strtoupper transforman una cadena de caracteres en la misma

cadena en minúsculas o mayúsculas respectivamente. Escribe ahora este código y guárdalo

con un nombre de archivo como ejemplo4.php. A continuación, sube el fichero al servidor y

visualiza el resultado.

<?php //Ejemplo funciones básicas aprenderaprogramar.com

Page 172: Hp_ Tutorial Básico Del Programador Web

$cadena = "EstO eS UnA cadeNA de CARActeres";

echo strtolower($cadena);

echo "<br />";

echo strtoupper($cadena);

?>

 

 

 

Como vemos el comportamiento de las funciones es sencillo. Simplemente devuelven la

cadena de caracteres pasada como argumento en minúsculas o mayúsculas

respectivamente.

Ten en cuenta que muchas veces para realizar comparaciones o para almacenar datos será

interesante uniformizar la información que se almacena. Por ejemplo, si se pide una ciudad,

un usuario puede introducir Buenos Aires, otro Buenos aires, otro BUENOS AIRES. Si usamos

estas funciones, podemos uniformizar y hacer que siempre se muestren o guarden de una

misma manera, lo cual facilitará el trabajo posterior.

 

 

FUNCIÓN COUNT_CHARS Y SUBSTR_COUNT

La función count_chars sirve para contar el número de apariciones de un carácter en una

cadena.

 La sintaxis a emplear es la siguiente:

Page 173: Hp_ Tutorial Básico Del Programador Web

count_chars ( $cadena, $opcModo)

 

 

$opcModo es un entero opcional. Si no se especifica vale 0 por defecto. Sus valores

admitidos son:

0: se devolverá un array con el valor numérico ascii como índice y la frecuencia de cada

carácter ascii como valor.

1: se devolverá un array con el valor numérico ascii como índice y la frecuencia de cada

carácter que aparezca al menos una vez como valor.

2: se devolverá un array de caracteres que no aparecen en la cadena, con el valor numérico

ascii como índice y la frecuencia de cada carácter ascii que no aparece como valor.

3: devuelve una cadena que contiene todos los caracteres únicos.

4: devuelve una cadena que contiene todos los caracteres no utilizados.

 

Nota: los códigos numéricos ascii van de 0 a 255 y no todos son visibles por pantalla.

Ejemplo:

<?php //Ejemplo count_chars aprenderaprogramar.com

$cadena = 'es jueves';

$miArray = count_chars ( $cadena, 1);

foreach ($miArray as $indiceNum => $veces) {

   echo 'Letra: '.chr($indiceNum).' , encontrada '.  $veces.' veces<br/>';

}

?>

 

 

Page 174: Hp_ Tutorial Básico Del Programador Web

El resultado esperado es: Letra: , encontrada 1 veces. Letra: e , encontrada 3 veces. Letra: j ,

encontrada 1 veces. Letra: s , encontrada 2 veces. Letra: u , encontrada 1 veces. Letra: v ,

encontrada 1 veces

 

Otra función útil es substr_count($cadena, $subcadena). Esta función nos devuelve el

número de veces que aparece la subcadena dentro de la cadena. Por ejemplo:

<meta charset="utf-8">

<?php //Ejemplo curso PHP aprenderaprogramar.com

$cadena1 = 'Pedro Juan Luis Marco Luis Pedro Juan Luis Pedro';

$cadena2 = 'Luis';

echo 'Luis aparece '.substr_count($cadena1, $cadena2). ' veces'

?>

 

El resultado esperado es <<Luis aparece 3 veces>>

 

 

OTRAS FUNCIONES PARA CADENAS DE TEXTO

PHP define numerosas funciones nativas para el manejo de cadenas de texto. Vamos a ver

algunas de ellas:

FUNCIÓN UTILIDADEJEMPLOS

aprenderaprogramar.com

strlen($cadena)Devuelve la longitud o número de caracteres

de la cadenaVer entregas anteriores del curso

substr ($cadena,

$inicio, $opcNumCar)

Si no se especifica $opcNumCar devuelve la

subcadena entre la posición $inicio y el fin de

cadena siendo la posición inicial la cero. Si se

especifica $opcNumCar extrae $opcNumCar

Ver entregas anteriores del curso

Page 175: Hp_ Tutorial Básico Del Programador Web

FUNCIÓN UTILIDADEJEMPLOS

aprenderaprogramar.com

caracteres desde la posición $inicio

(inclusive).

ucfirst($cadena);Devuelve la cadena con la primera letra en

mayúsculas

$saludo = "hoy es viernes";

ucfirst($saludo);

//Hoy es viernes

ucwords($cadena);Devuelve la cadena con cada una de sus

palabras con la primera letra en mayúsculas

$saludo = "hoy es viernes";

echo ucwords($saludo);

//Hoy Es Viernes

strpos ($cadena ,

$subCadena,

$opcPosInicio )

Devuelve la posición en que comienza la

subcadena a partir de la posición inicial (cero)

si no se especifica $opcPosInicio, o a partir de

la posición $opcPosInicio si se especifica. Si

no se encuentra la subcadena devuelve false.

$saludo = "hoy es viernes";

echo strpos($saludo, "es");

//4

trim ($cadena,

$opcCaracteres)

Si no se especifica $opcCaracteres, devuelve

la cadena eliminando espacios en blanco,

tabuladores, saltos de línea y retornos de carro

del principio y final de la cadena. Si se

especifica $opcCaracteres, se eliminan los

caracteres especificados.

$saludo = "*** hoy es viernes ***";

echo trim($saludo, "*");

//hoy es viernes

Nota: puede no funcionar como se

espera debido a juego de caracteres,

configuración local y configuración del

servidor.

ltrim ($cadena,

$opcCaracteres)

Si no se especifica $opcCaracteres, devuelve

la cadena eliminando espacios en blanco,

tabuladores, saltos de línea y retornos de carro

del principio de la cadena. Si se especifica

$opcCaracteres, se eliminan los caracteres

especificados.

$saludo = "*** hoy es viernes ***";

echo ltrim($saludo, "*");

//hoy es viernes ***

Nota: puede no funcionar como se

espera debido a juego de caracteres,

configuración local y configuración del

servidor.

rtrim ($cadena,

$opcCaracteres)

Si no se especifica $opcCaracteres, devuelve

la cadena eliminando espacios en blanco,

$saludo = "*** hoy es viernes ***";

echo rtrim($saludo, "*");

Page 176: Hp_ Tutorial Básico Del Programador Web

FUNCIÓN UTILIDADEJEMPLOS

aprenderaprogramar.com

tabuladores, saltos de línea y retornos de carro

del final de la cadena. Si se especifica

$opcCaracteres, se eliminan los caracteres

especificados.

//*** hoy es viernes

Nota: puede no funcionar como se

espera debido a juego de caracteres,

configuración local y configuración del

servidor.

chop Igual que rtrim

str_repeat($cadena,

$numVeces)

Devuelve la cadena repetida $numVeces

siendo éste un número entero.

$saludo = 'hola ';

str_repeat($saludo, 3);

//hola hola hola

strstr ($cadena, $desde,

$opcBoolean)

Devuelve la subcadena desde la primera

aparición de $desde (incluida) hasta el final si

no se especifica opcBoolean ó este es false. Si

$opcBoolean es true devuelve la subcadena

desde el inicio hasta la primera aparición de

$desde (excluida).

$saludo = "hoy es viernes";

echo strstr($saludo, "es", false);

//es viernes

strchr Igual que strstr

chr ($ascii)

Devuelve el carácter correspondiente al

código numérico entero $ascii según el código

ascii

echo chr(65). ' es la salida';

// A es la salida

 

 

Existen más funciones para cadenas en PHP pero los programadores no las suelen conocer

todas, ya que algunas son para tareas muy específicas. No te preocupes por memorizar las

funciones ni por conocerlas todas, simplemente sé consciente de su existencia y aprende a

buscarlas cuando te resulten necearias. Si en algún momento necesitas realizar tareas muy

específicas con cadenas en PHP puedes conocer todas las funciones existentes sobre

cadenas acudiendo a la documentación oficial de PHP sobre funciones de cadenas, disponible

en http://php.net/manual/es/ref.strings.php

Page 177: Hp_ Tutorial Básico Del Programador Web

 

 

EJERCICIO

Crear archivos php que ejecuten la tarea indicada:

a) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es

costoso", indicar cuántas veces aparece cada vocal usando funciones para cadenas PHP.

b) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es

costoso", indicar qué consonantes son las que aparecen y cuántas veces aparecen usando

funciones para cadenas PHP.

c) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es

costoso", mostrar la cadena donde todas las a hayan sido sustituídas por el símbolo *. Por

ejemplo en lugar de <<El abecedario…>> se habrá de mostrar <<El *beced*rio…>>

d) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es

costoso", mostrar la subcadena desde la primera aparición de <<completo>> excluyendo

completo, es decir, deberá mostrarse << es algo largo y detallarlo exhaustivamente es

costoso>>. Para ello usa una o varias funciones para cadenas PHP.

COMPARACIÓN DE CADENAS PHP

Cuando tengamos que comparar cadenas en PHP, se recomienda hacer uso de las funciones

nativas del lenguaje previstas para ello. Si se tratan de hacer comparaciones usando el

operador == se pueden obtener resultados extraños. Usar el operador === puede dar

mejores resultados, pero en general trataremos de usar funciones como strcmp previstas

específicamente para esto.

 

 

FUNCIÓN STRCMP

Page 178: Hp_ Tutorial Básico Del Programador Web

Esta función realiza la comparación segura de Strings y devuelve un valor numérico. Su

sintaxis habitual es la siguiente:

if (strcmp ($cadena1 , $cadena2 ) == 0) { … }

 

 

strcmp es sensible a mayúsculas y minúsculas, es decir, no considera igual Martes que

martes.

La función devuelve un valor numérico que puede ser:

0: cuando ambas cadenas son iguales. En caso contrario el valor devuelto es distinto de cero,

por lo que si queremos saber si dos cadenas son distintas podemos usar if (strcmp ($cadena1

, $cadena2 ) !== 0) { … }

Un valor numérico menor que 0 si la cadena 1 es menor que la cadena 2

Un valor numérico mayor que cero si la cadena 2 es mayor que la cadena 1.

 

¿Qué significa que una cadena sea mayor que otra? La comparación se hace en función de

los códigos numéricos equivalentes de cada carácter. Por ejemplo la letra A tiene código

numérico 65 y la letra a código numérico 97. Debido a que los códigos numéricos no

permiten una ordenación alfabética precisa (al no ordenar correctamente mayúsculas y

minúsculas, palabras con tilde, caracteres como la ñ, etc.), éste no es un buen medio para

ordenar alfabéticamente palabras y sólo tiene una utilidad limitada.

Los parámetros aportados a la función deben ser Strings. En caso de que algún parámetro no

sea una cadena de texto, el resultado que devuelve la función puede ser impredecible.

Escribe este código y visualiza los resultados que produce:

<meta charset="utf-8">

<?php //Ejemplos curso PHP aprenderaprogramar.com

$cadena1 = '1e3'; $cadena2 = '1000';

Page 179: Hp_ Tutorial Básico Del Programador Web

if ($cadena1 == $cadena2) {echo 'Según == las dos cadenas son iguales';}

else {echo 'Según == las dos cadenas NO son iguales'; }

echo '<br/>';

if ($cadena1 === $cadena2) {echo 'Según === las dos cadenas son iguales';}

else {echo 'Según === las dos cadenas NO son iguales'; }

echo '<br/>';

if (strcmp($cadena1, $cadena2) == 0) {echo 'Según strcmp las dos cadenas son iguales';}

else {echo 'Según strcmp las dos cadenas NO son iguales'; }

?>

 

 

El resultado será similar a este: Según == las dos cadenas son iguales, Según === las dos

cadenas NO son iguales, Según strcmp las dos cadenas NO son iguales.

Recordar que para hacer comparaciones seguras de cadenas de texto usaremos strcmp u

otra función PHP prevista para ello en lugar de los operadores == ó ===.

 

 

OTRAS FUNCIONES PARA COMPARAR CADENAS CON PHP

PHP define otras funciones nativas para comparar de cadenas de texto. Vamos a ver algunas

de ellas:

FUNCIÓN UTILIDAD EJEMPLOS aprenderaprogramar.com

strcasecmp

($cadena1 ,

$cadena2 )

Devuelve como resultado 0 si ambas

cadenas son iguales, o un valor numérico

menor o mayor de cero en caso contrario. No

diferencia entre mayúsculas y minúsculas.

$cadena1 = 'martes';

$cadena2 = 'Martes';

strcasecmp ($cadena1, $cadena2)

// Devuelve 0, son iguales

strncmp ($cadena1,

$cadena2,

Compara el número de caracteres numCaract

entre la cadena 1 y la cadena 2 teniendo en

$cadena1 = 'martes';

$cadena2 = 'Martes de feria';

Page 180: Hp_ Tutorial Básico Del Programador Web

FUNCIÓN UTILIDAD EJEMPLOS aprenderaprogramar.com

$numCaract)cuenta mayúsculas y minúsculas como

diferentes.

strncmp ($cadena1 , $cadena2 , 6)==0

// Devuelve false, no son iguales

strncasecmp

($cadena1 ,

$cadena2,

$numCaract)

Compara el número de caracteres numCaract

entre la cadena 1 y la cadena 2 sin tener en

cuenta mayúsculas y minúsculas.

$cadena1 = 'martes';

$cadena2 = 'Martes de feria';

strncasecmp ($cadena1 , $cadena2 , 6)

// Devuelve 0, son iguales

substr_compare

($cadena1,

$cadena2,

$posicionCad1,

$opcLongitud,

$opcBoolDiferencia)

Compara una subcadena de cadena 1 que

comienza en posición posicionCad. Se

compara hasta que una cadena termina si no

se especifica opcLongitud, o el número de

caracteres indicado si sí se especifica. Por

defecto diferencia mayúsculas y minúsculas,

pero estableciendo opcBoolDiferencia true

no distinguirá entre mayúsculas y

minúsculas.

$cadena1 = 'martes';

$cadena2 = 'Martes de feria';

substr_compare ($cadena1 , $cadena2 , 0,

strlen($cadena1), true)

// Devuelve 0, son iguales

 

 

RELLENO DE CADENAS CON STR_PAD

Esta función realiza un relleno de cadenas ampliando la cadena hasta una longitud

especificada y rellenándola con el carácter o caracteres especificados hasta dicha longitud.

La sintaxis es:

str_pad ( string $cadnea , int $nuevaLongitud $opcCarRelleno, opcTipoDeRelleno)

 

 

Donde opcCarRelleno es opcional e indica el carácter o caracteres de relleno que se

emplearán. Si no se especifica, se tomará el espacio en blanco como carácter de relleno.

Page 181: Hp_ Tutorial Básico Del Programador Web

opcTipoDeRelleno es opcional e indica cómo se rellenará hasta alcanzar la nueva longitud:

por la derecha, por la izquierda o por ambos lados. Los valores que puede tomar son:

STR_PAD_RIGHT, STR_PAD_LEFT, o STR_PAD_BOTH. Si no se especifica por defecto se

rellenará usando STR_PAD_RIGHT (por la derecha).

Escribe este código y comprueba los resultados:

<?php

$cadena='aprenderaprogramar.com';

echo '<p>'.str_pad($cadena,28,'*').'</p>';

echo '<p>'.str_pad($cadena,48,'cool!').'</p>';

echo '<p>'.str_pad($cadena,2,'a').'</p>';

echo '<p>'.str_pad($cadena,28,'*',STR_PAD_RIGHT).'</p>';

echo '<p>'.str_pad($cadena,29,'@',STR_PAD_BOTH).'</p>';

  ?>

 

 

El resultado esperado es:

aprenderaprogramar.com******

aprenderaprogramar.comcool!cool!cool!cool!cool!c

aprenderaprogramar.com

aprenderaprogramar.com******

@@@aprenderaprogramar.com@@@@

 

Fíjate que en este caso la longitud de la cadena es de 22 caracteres. Si le ponemos que la

nueva longitud es 29 y que rellene a ambos lados comienza colocando un carácter a derecha

y otro a izquierda, pero tras colocar 6 sólo le queda 1 por colocar y éste carácter queda a

derecha.

Page 182: Hp_ Tutorial Básico Del Programador Web

Existen más funciones para cadenas en PHP pero los programadores no las suelen conocer

todas, ya que algunas son para tareas muy específicas. Si en algún momento necesitas

realizar tareas muy específicas con cadenas en PHP puedes conocer todas las funciones

existentes acudiendo a la documentación oficial de PHP sobre funciones de cadenas,

disponible en  http://php.net/manual/es/ref.strings.php   

 

 

EJERCICIO

Crear archivos php que ejecuten la tarea indicada:

a) Dadas las cadenas "aprender" y "aprende", mostrar por pantalla la cadena rellena con * a

derecha e izquierda en un número de asteriscos que será siempre 5 a cada lado aunque se

cambien las cadenas.

b) Dadas las cadenas "aprender" y "aprende", mostrar por pantalla si sus tres primeros

caracteres son iguales o no usando una función de comparación de subcadenas.

c) Dada la cadena "ApRendEr A proGraMar.cOm" transformar la cadena a minúsculas y

rellenarla a derecha e izquierda con una longitud de asteriscos igual a la mitad de su longitud

si es par ó igual a la mitad de (su longitud más 1) si es impar. Mostrar por pantalla la cadena

en minúsculas y con el relleno indicado.

FUNCIONES PARA MANEJO DEL TIEMPO, FECHA Y HORAS PHP

Con frecuencia cuando creamos webs o apps tenemos que trabajar con fechas y calendarios.

Por ejemplo en la página web de un hotel o un restaurante es posible que trabajemos con

fechas y horas de comienzo de reserva, de fin de reserva, etc. PHP dispone de  funciones

nativas para facilitar el trabajo con fechas, horas y tiempos.

 

 

El manejo del “tiempo” es un aspecto controvertido en la programación. La primera dificultad

y más obvia es que existen cientos de dispositivos electrónicos y no todos manejan la misma

Page 183: Hp_ Tutorial Básico Del Programador Web

fecha. Por ejemplo mi computador personal puede indicar que hoy es lunes 25 de enero de

2048 y la hora es las 12:35:44 mientras que el servidor al que estoy conectado, suponiendo

que está en mi misma ciudad, puede indicar que hoy es lunes 25 de enero de 2048 y la hora

es las 12:33:21. Otro servidor, en otro país, puede indicar que la fecha es domingo 24 de

enero de 2048 y la hora es las 23:51:15 debido a la diferencia horaria entre países. Aquí,

claro está, nos estaríamos refiriendo a horas locales. Para poder disponer de horas de

referencia globales para todo el mundo se crearon estándares como:

a) GMT o tiempo medio de Greenwich: ha sido un estándar ampliamente usado. GMT era el

tiempo medido en el observatorio británico de Greenwich, que se definió como meridiano

cero de la tierra. Así cada país podía expresar su hora en función de la hora del meridiano de

Greenwich. Por ejemplo GMT+0 indicaba que la hora era la misma que la hora oficial en el

meridiano de Greenwich, mientras que GMT+3 indicaba que la hora eran 3 horas más que en

el meridiano de Greenwich (es decir, si es Greenwich eran las 09:00 en un país cuya hora

fuera GMT+3 serían las 12:00).

b) UTC o tiempo universal coordinado: es el estándar que se ha adoptado como referencia

que indica un tiempo único independientemente de en qué lugar del planeta nos

encontremos, basado en las mediciones de relojes atómicos distribuidos por distintos países.

Es el estándar que se está imponiendo en los sistemas informáticos.

La circunferencia terrestre se dividió en 24 husos horarios de modo que cada huso quedaba

referenciado a un tiempo común (lo que se denominaba el tiempo de Greenwich).

Page 184: Hp_ Tutorial Básico Del Programador Web

 

 

Aunque desde el punto de vista de su definición técnica UTC y GMT no son lo mismo, a

efectos prácticos hablar de GMT+3 es lo mismo que hablar de UTC+3.

A pesar de este gran avance, el trabajo con el tiempo sigue presentando grandes dificultades

en los sistemas informáticos, tanto por la falta de sincronización entre dispositivos como por

la disparidad en cuanto a cómo medir el tiempo y con qué grado de precisión, existencia de

horarios de verano e invierno, etc. Por ello encontrarás que es relativamente frecuente

encontrar que a medida que los lenguajes de programación evolucionan vayan introduciendo

cambios en la forma de manejar el tiempo.

Una cuestión a tener en cuenta es que el tiempo oficial de Greenwich, tiempo GMT ó UTC, no

se corresponde con el tiempo local en Greenwich debido a la existencia del horario de

verano. Por ejemplo, Lisboa se encuentra en el huso horario de Greenwich, pero en verano la

hora local está adelantada una hora respecto al tiempo oficial de Greenwich por motivos de

ahorro energético. Esto da lugar a que el 5 de agosto a las 21:00 en Lisboa se corresponda

con el 5 de agosto 20:00 UTC debido al horario de verano, a pesar de que Lisboa se

encuentre en el mismo huso horaria que Greenwich.

 

 

FUNCIONES TIME Y DATE

Estas dos funciones nos permitirán mostrar o capturar la fecha y hora, lo cual tiene una gran

cantidad de aplicaciones. Por ejemplo, supón que tienes una tienda on-line y para cada

operación de venta tienes que registrar la fecha y hora de la venta. Estas funciones

resultarán útiles para ello.

La función time devuelve la hora GMT actual medida como el número de segundos desde el 1

de Enero de 1970 00:00:00 GMT (hora del meridiano de Greenwich) obtenidos a partir de la

hora actual local del servidor. Cuando hablamos de “hora actual del servidor” nos referimos a

una hora local, que es distinta según el país donde nos encontremos. En cambio la hora GMT

es única y no depende del país. Hay que tener cuidado con esta circunstancia. Por ejemplo, si

trabajas con un servidor localizado en Estados Unidos lo más probable es que el servidor

trabaje con la hora de Estados Unidos. Si quieres obtener la hora local de tu país, tendrás que

Page 185: Hp_ Tutorial Básico Del Programador Web

tenerlo en cuenta para restarle o sumarle cierto número de horas a la hora que te devuelva

el servidor.

Por otro lado, la función date muestra la fecha en el formato que le indiquemos.

En general, te recomendamos que hagas pruebas para comprobar que los resultados de

fecha y hora obtenidos son los adecuados, ya que la configuración de cada servidor y la

versión de PHP empleada puede afectar a los resultados.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo curso PHP aprenderaprogramar.com

$time = time();

echo date("d-m-Y (H:i:s)", $time);

?>

 

 

 

En este ejemplo hemos especificado como formato para mostrar la fecha d-m-Y (H:i:s)

(donde d representa día, m representa mes, Y representa año, H representa hora, i

representa minutos y s representa segundos) desde el valor de time u otra fecha dada en

segundos desde el 1 de Enero de 1970 00:00:00 GMT.

Como podemos observar, la función date da formato a la variable en segundos $time. Hay

distintos formatos para la función date, a continuación indicaremos los más importantes.

Page 186: Hp_ Tutorial Básico Del Programador Web

La función time() devuelve un valor numérico entero largo, por ejemplo 1335169779. Este

número representa el número de segundos transcurridos desde el 1 de enero de 1970

00:00:00 GMT.

Para transformar ese número en una fecha “entendible por las personas” usamos la función

date, cuya sintaxis general es: date (“formato de salida”, valorTimeValido)

En cuanto a valorTimeValido, será un número entero, generalmente contenido en una

variable.

En cuanto a “formato de salida”, disponemos de las siguientes equivalencias:

 

Para representar el día de la semana:

Carácter de

formatoSignificado aprenderaprogramar.com Valores que devuelve

d (minúscula) Día del mes, con 2 dígitos. Si es menor de 10, lleva un 0 inicial. 01 a 31

D (mayúscula) Texto representativo del día, con 3 letras y en inglésMon (lunes) hasta Sun

(domingo)

j (minúscula) Día del mes con un dígito (sin ceros iniciales) 1 a 31

l (letra ele

minúscula)Texto representativo del día, con todas las letras y en inglés

Monday (lunes) hasta

Sunday (domingo)

N (mayúscula)Representación numérica del día de la semana según ISO-8601,

siendo 1 el lunes y 7 el domingo1 (lunes) a 7 (domingo)

S (mayúscula) Sufijo para el día del mes en inglés st, nd, rd ó th

w (minúscula)Representación numérica del día de la semana siendo 0 domingo

y 6 el sábado0 a 6

z (minúscula)Día del año desde 0 hasta 365 (un año normal irá de 0 a 364 y

uno bisiesto de 0 a 365)0 a 365

 

Page 187: Hp_ Tutorial Básico Del Programador Web

 

Para representar el mes:

Carácter de

formatoSignificado aprenderaprogramar.com Valores que devuelve

F (mayúscula) Texto representativo del mes, con todas las letras y en inglésJanuary (enero) a December

(diciembre)

m (minúscula)Mes en formato numérico con dos dígitos, incluyendo cero

inicial si es menor que 1001 hasta 12

M (mayúscula) Texto representativo del mes, con tres letras iniciales en inglésJan (enero) hasta Dec

(diciembre)

n (minúscula) Mes en formato numérico con un dígito, sin ceros iniciales 1 hasta 12

t (minúscula) Número de días que tiene el mes 28 hasta 31

 

 

Para representar el año:

Carácter de

formatoSignificado aprenderaprogramar.com Valores que devuelve

L (mayúscula) Indica si un año es bisiesto o no (1 si es bisiesto, 0 si no lo es) 0 ó 1

Y (mayúscula) Año en formato numérico de 4 dígitos 1000 a 9999

y (minúscula) Año en formato numérico de 2 dígitos (los dos últimos del año)El que corresponda,

p.ej. 78

o (minúscula)Número de año según ISO-8601. En general devuelve el mismo

resultado que Y mayúscula1000 a 9999

 

Page 188: Hp_ Tutorial Básico Del Programador Web

 

Para representar la hora:

Carácter de

formatoSignificado aprenderaprogramar.com

Valores que

devuelve

a (minúscula)Incluye am ó pm en minúsculas detrás de la hora para indicar antes del

meridiano o pasado el meridianoam ó pm

A (mayúscula) Igual que a pero en mayúsculas AM ó PM

B (mayúscula)Hora internet, también llamada Swatch Internet Time o Biel Mean Time

(BMT), poco usada.000 a 999

g (minúscula) Número de hora desde 1 hasta 12 sin ceros iniciales 1 a 12

G (mayúscula) Número de hora desde 0 hasta 23 sin ceros iniciales 0 a 23

h (minúscula) Número de hora desde 01 hasta 12, con ceros iniciales 01 a 12

H (mayúscula) Número de hora desde 00 hasta 23, con ceros iniciales 00 hasta 23

i (minúscula) Minutos desde 00 hasta 59, con ceros iniciales 00 a 59

s (minúscula) Segundos desde 00 hasta 59, con ceros iniciales 00 a 59

 

 

Para representar la zona horaria:

Carácter de

formatoSignificado aprenderaprogramar.com

Valores que

devuelve

e (minúscula)Representa la zona horaria en inglés (p.ej. GMT, Atlantic/Azores,

America/Denver)Según corresponda

I (letra i Indica si se está en horario de verano (0 indica que no se está en horario de 0 ó 1

Page 189: Hp_ Tutorial Básico Del Programador Web

mayúscula) verano, 1 que sí se está en horario de verano).

O (letra o

mayúscula)

Indica la diferencia respecto a la zona horaria de Greenwich u hora GMT,

en horas con cuatro dígitos y símbolo.

Por ejemplo +0300

ó -0500

P (mayúscula)Indica la diferencia respecto a la zona horaria de Greenwich u hora GMT,

en horas con cuatro dígitos con separador dos puntos y símbolo.

Por ejemplo

+03:00 ó -05:00

T (mayúscula) Abreviatura de la zona horaria (abreviatura en inglés) Según corresponda

Z (mayúscula)Diferencia en segundos entre la hora utilizada y la hora UTC, con signo

positivo o negativo-43200 hasta 50400

 

 

Además disponemos de:

La letra W mayúscula para representar la semana del año según ISO-8601, considerando que

las semanas comienzan en lunes. Por ejemplo, un año tiene 52 semanas y con este formato

podemos obtener que estamos en la semana 24 del año.

La letra c minúscula para representar la fecha y hora completa en formato ISO-8601 (tipo

2089-03-12T12:19:21+03:00).

La letra r minúscula para representar la fecha y hora completa con formato RFC-2822 (tipo

Mon, 21 Jan 2089 11:41:05 -0300).

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2bis.php. A

continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo curso PHP aprenderaprogramar.com

$time = time();

echo "<br/>";

echo $time;

echo "<br/>";

echo date("d-m-Y (H:i:s)", -3600);

Page 190: Hp_ Tutorial Básico Del Programador Web

echo "<br/>";

echo date("d-m-Y (H:i:s)", 0);

echo "<br/>";

echo date("d-m-Y (H:i:s)", 3600);

echo "<br/>";

echo date("Y-m-d (H:i:s)", $time);

echo "<br/>";

echo date("Y-m-d ", $time);

echo "<br/>";

echo ("Según el servidor la hora actual es: ". date("H:i:s", $time));

?>

 

 

 

Con este ejemplo podemos comprobar algunas cosas. En primer lugar, que la función time()

devuelve un número, mientras que la función date devuelve un String o cadena de texto.

En segundo lugar, que para obtener fechas anteriores al 1 de enero de 1970 debemos usar

números negativos.

Page 191: Hp_ Tutorial Básico Del Programador Web

En tercer lugar, que el momento 0 que es el 01-01-1970 00:00:00 GMT, cuando es mostrado

por un servidor concreto, es adaptado a su horario local. En el servidor del ejemplo, el horario

local es GMT + 01:00, es decir, su hora es la hora GMT +01:00, por eso nos devuelve como

hora cero la una de la mañana del 1 de enero de 1970. No te preocupes si te resulta un poco

confuso, simplemente ten en cuenta que debes hacer pruebas para ver cómo responde el

servidor con el que estés trabajando.

En cuarto lugar, que podemos hacer que la fecha se muestre en el formato u orden que

queramos, usando los términos clave “ d, m, Y, H, i, s” en el orden que queramos.

En quinto lugar, que podemos concatenar cómo se muestra una fecha (o almacenarla en otra

variable si quisiéramos) concatenando el resultado de la función date con una cadena de

texto cualquiera.

 

 

OTRAS FUNCIONES PARA FECHA, HORA Y TIEMPO PHP

PHP define otras funciones nativas para manejo de fechas, horas y tiempo. Vamos a ver

algunas de ellas:

FUNCIÓN UTILIDADEJEMPLOS

aprenderaprogramar.com

mktime(hora,min,seg,mes,dia,ano)

hora: 0 a 23

min y seg: 0 a 59

mes: 1 a 12

dia: 1 a 31

año: cuatro dígitos

Devuelve la hora UTC (GMT)

para una fecha local indicada,

expresada esta hora GMT en

segundos (el número de

segundos transcurridos desde el

1 de enero de 1970 00:00:00

GMT, valores negativos indican

momentos anteriores a esta

fecha). Si faltan uno o más

parámetros se tomarán los de la

fecha local actual de derecha a

izquierda. El valor obtenido

depende de la hora local del

echo "Tiempo Unix para el 15-Enero-

2089 a las 12h 0m 0s = " .

mktime(12,0,0,1,15,2089);

// Tiempo Unix para el 15-Enero-2089

a las 12h 0m 0s = 3753975600 (el

resultado variará según dónde esté

localizado el servidor, porque las 12 h

del 15 de enero de 2089 corresponden

a distintas fechas-horas GMT según

dónde se encuentre el servidor.

Page 192: Hp_ Tutorial Básico Del Programador Web

FUNCIÓN UTILIDADEJEMPLOS

aprenderaprogramar.com

servidor con el que estemos

trabajando.

gmmktime(hora,min,seg,mes,dia,ano)

hora: 0 a 23

min y seg: 0 a 59

mes: 1 a 12

dia: 1 a 31

año: cuatro dígitos

Devuelve la hora UTC (GMT)

expresada en segundos para una

fecha GMT indicada en los

argumentos recibidos. El valor

devuelto es el número de

segundos transcurridos desde el

1 de enero de 1970 00:00:00

GMT, valores negativos indican

momentos anteriores a esta

fecha. Si faltan uno o más

parámetros se tomarán los de la

fecha GMT actual de derecha a

izquierda. El valor obtenido no

depende del servidor, ya que la

hora GMT es única.

gmmktime(12,0,0,1,15,2089)

// 3756628800 independientemente de

la hora local del servidor

 

 

Nota: tener en cuenta que usamos UTC ó GMT como si fueran equivalentes.

Para entender cómo las funciones time y mktime trabajan con tiempo local hemos realizado

la siguiente prueba. Hemos colocado el siguiente código en un servidor en Denver (USA), y

en un servidor en Madrid (España):

echo "Tiempo Unix para el 15-Enero-2089 a las 12h 0m 0s = " . mktime(12,0,0,1,15,2089);

El resultado obtenido en Denver (USA) es 3756654000

El resultado obtenido en Madrid (España) es 3756625200

¿Por qué obtenemos un resultado diferente?

Page 193: Hp_ Tutorial Básico Del Programador Web

La diferencia entre uno y otro tiempo es de 28800 segundos, que equivalen a 8 horas.

Hemos comprobado la hora en Denver en el momento de realizar el test y eran las 06:20:00

de la mañana, mientras que en Madrid eran las 14:20:00 horas. Como vemos, tenemos una

diferencia horaria de 8 horas entre Denver y Madrid.  

Cuando en Madrid son las 12:00 horas del 15 de enero de 2089, en Denver serán las 04:00

horas del 15 de enero de 2089. Las 12:00 horas de un día tienen lugar en distintos instantes

de tiempo en Denver y en Madrid, por eso los resultados indican que cuando son las 12 horas

en Denver ha transcurrido más tiempo desde las 0 horas del 1 de enero de 1970 GMT que

cuando son las 12 horas en Madrid, o dicho de otra manera, las 12 horas de un día tienen

lugar antes en Madrid que en Denver. El tiempo Unix sí será igual si pedimos el valor

mktime(4,0,0,1,15,2089) en Denver: obtendremos 3756625200, el mismo resultado que en

Madrid a las 12 del mediodía. Esto indica que ese instante de tiempo (4 de la mañana de 15

de enero de 2089 en Denver y 12 de la mañana de la misma fecha en Madrid) es el mismo

instante, es decir, podríamos estar hablando por teléfono dos personas en ese momento,

siendo las 4 de la mañana en Denver y las 12 en Madrid.

Si pedimos la hora en Madrid para el 1 de enero de 1970 a las 00:00:00 de 1970 nos

devuelve <<Tiempo Unix para el 1 de enero de 1970 a las 00:00:00 = -3600>> ¿Qué

significa -3600? Este valor está referido al tiempo UTC e indica qué adelanto o atraso (en

segundos) tiene la hora local respecto al tiempo UTC. O dicho de otro modo, cuánto tiempo

ha transcurrido desde las 00:00 horas del 1 de enero de 1970 UTC dada una fecha local.

Cuando en Madrid son las 00:00:00 del 1 de enero de 1970 en el tiempo UTC de referencia

(podemos pensar que es la hora en Greenwich, meridiano de referencia, aunque esto no es

exacto) decimos que faltan 3600 segundos (1 hora) para llegar al 1 de enero de 1970. El

valor negativo indica que la fecha es anterior al 1 de enero de 1970 00:00:00 GMT, y en

concreto en este caso serían las 23 horas del 31 de diciembre de 1969 GMT cuando en

Madrid son las 00:00:00 horas del 1 de enero de 1970.

Si pedimos la hora en Denver para el 1 de enero de 1970 a las 00:00:00 de 1970 nos

devuelve <<Tiempo Unix para el 1 de enero de 1970 a las 00:00:00 = 25200>> ¿Qué

significa 25200? Este valor está referido al tiempo UTC  e indica que cuando en Denver son

las 00:00:00 del 1 de enero de 1970 el tiempo UTC de referencia está 7 horas por delante, es

decir, a las 0 horas en Denver son las 7 horas UTC.

-3600 segundos equivalen a 1 hora por delante de GMT. En invierno en Madrid la hora local

es GMT+0100

Page 194: Hp_ Tutorial Básico Del Programador Web

25200 segundos equivalen a 7 horas por detrás de GMT. En invierno en Denver la hora local

es GMT-0700

Tener en cuenta que la hora UTC (GMT) es única (la indicada por los organismos

internacionales encargados), mientras que las hora locales varían según el país, e incluso

según la zona de un país en que nos encontremos.

Existen más funciones para fechas y tiempo en PHP pero los programadores no las suelen

conocer todas, ya que algunas son para tareas muy específicas. No te preocupes por

memorizar las funciones ni por conocerlas todas, simplemente sé consciente de su existencia

y aprende a buscarlas cuando te resulten necearias. Si en algún momento necesitas realizar

tareas muy específicas con tiempo y fechas en PHP puedes conocer todas las funciones

existentes sobre esta materia acudiendo a la documentación oficial de PHP sobre fecha y

hora, disponible en http://php.net/manual/es/ref.datetime.php

 

 

EJERCICIO

Crea un documento HTML que conste de un título h1 con el texto <<Calendario>>. En la

página deberá mostrarse el mes y año actuales (en el momento en que hagas el ejercicio) y

para cada día del mes, indicar si es lunes, martes, miércoles, jueves, viernes, sábado o

domingo.

Ejemplo: suponiendo que hagas el ejercicio en mayo de 2050, debería mostrarse:

Día 1: Domingo, Día 2: Lunes, Día 3: Martes, Día 4: Miércoles, … etc. hasta Día 31: Martes.

Ampliación voluntaria del ejercicio: si tienes conocimiento de maquetación con HTML y CSS

te proponemos que cambies el aspecto para que en lugar de mostrarse como texto, el

calendario se muestre con aspecto de calendario habitual. Para la maquetación puedes usar

una tabla de 7 columnas por 7 filas (total 49 celdas) con ancho de tabla 300 píxeles y tamaño

de fuente en la tabla 24 píxeles. La primera columna corresponderá a lunes y la última a

domingo como mostramos en el siguiente ejemplo.

El aspecto, suponiendo que te encuentras en el mes de mayo de 2050, sería el siguiente:

MAYO DE 2050

Page 195: Hp_ Tutorial Básico Del Programador Web

Lu MaMi Ju Vi Sa Do

 1

 2  3  4  5  6  7  8

 9  10  11  12  13  14  15

 16  17  18  19  20  21  22

 23  24  25  26  27  28  29

 30  31 

 

Ten en cuenta que debe generarse el calendario del mes en que te encuentres según la hora

local del sistema (de tu servidor).

FUNCIONES PARA EXPRESAR FECHAS EN UN LENGUAJE

PHP es un lenguaje con marcada influencia anglosajona debido a sus orígenes y desarrollo.

Pero cuando estamos creando páginas web es frecuente que queremos obtener fechas

expresadas en el lenguaje con el que estamos desarrollando la web. Vamos a estudiar cómo

hacerlo.

 

 

 

SETLOCALE

La función setlocale es una función PHP utilizada para indicar la configuración regional que

debe ser usada para realizar determinadas tareas. Su sintaxis es la siguiente:

setlocale ( $procesosAfectados, $codConfiguracion1, $ codConfiguracion2, … , $ codConfiguracionN);

También se admite: setlocale ( $procesosAfectados, $arrayDeCodigosDeConfiguracion);

 

Page 196: Hp_ Tutorial Básico Del Programador Web

 

Esta función pretende que por ejemplo en lugar de 2089 July, Mon 21st pueda aparecer algo

como “21 de julio de 2089” si lo deseamos. Para ello indicaríamos que el proceso afectado es

la fecha y que la configuración es el español: setlocale (LC_TIME, "es_ES");

Esta idea, aparentemente buena, se topa con numerosas dificultades en la práctica:

a) No todos los servidores admiten todo tipo de cambios.

b) Según el servidor que estemos utilizando, será posible usar unos lenguajes o no.

c) La comunicación entre las aplicaciones web y otros entornos como bases de datos se

puede ver afectada y pueden surgir problemas.

d) No todos los servidores admiten el mismo nombre – código de configuración

e) Más problemas que no vamos a citar aquí.

 

En resumen, debes tener presente que el cambio de la configuración local del servidor puede

ser compleja o no responder como cabría esperar: podrás ver miles de consultas en foros

sobre este tipo de problemas, y muchas de ellas sin respuesta. Es recomendable hacer

pruebas y si es necesario programar pequeños scripts o funciones para lograr el

funcionamiento que nosotros deseamos. Con esto queremos decir que puede resultar más

sencillo trabajar del modo natural tal y como esté configurado el servidor, en lugar de tratar

de alterar esta configuración para que el servidor trabaje en nuestro idioma.

Los valores posibles para $procesosAfectados son los siguientes:

Valor $procesosAfectados Aplicación

LC_ALL Para todos los procesos

LC_COLLATE Para la comparación de strings

LC_CTYPE Para la clasificación y conversión de caracteres, por ejemplo cuando se use strtoupper()

LC_MONETARY Afecta a aspectos como el símbolo de moneda, separador de miles, etc.

Page 197: Hp_ Tutorial Básico Del Programador Web

LC_NUMERIC Para el separador decimal y otros aspectos como signos.

LC_TIME Para el formato de fecha y hora que se mostrará al usar la función strftime()

LC_MESSAGES Para las respuestas del sistema.

 

 

Nosotros en este curso vamos a limitarnos a estudiar y ver un ejemplo de uso para mostrar

fechas usando la función de php strftime que estudiaremos a continuación combinada con el

uso de setlocale con LC_TIME. El uso de setlocale puede tener efectos colaterales (afectar a

otros procesos) por lo que recomendamos no usarlo sin hacer pruebas exhaustivas para

verificar la respuesta esperada.

Los códigos de países dependen del sistema operativo con el que estemos trabajando. La

función setLocale admite que se introduzca una lista de códigos de países con la esperanza

de que algunos de ellos sea reconocido por el sistema (lo cual habla ya de las dificultades

que se encuentran para realizar este tipo de operaciones).

A continuación señalamos algunas formas de códigos de algunos países:

País Código (*) Otro código (*)

México es_MX.UTF-8 es_MX

España es_ES.UTF-8 es_ES

Argentina es_RA.UTF-8 es_RA

Colombia es_CO.UTF-8 es_CO

Venezuela es_VE.UTF-8 es_VE

Perú es_PE.UTF-8 es_PE

Chile es_CL.UTF-8 es_CL

Guatemala es_GT.UTF-8 es_GT

Ecuador es_EC.UTF-8 es_EC

Cuba es_CU.UTF-8 es_CU

Page 198: Hp_ Tutorial Básico Del Programador Web

País Código (*) Otro código (*)

Bolivia es_RB.UTF-8 es_RB

República Dominicana es_DO.UTF-8 es_DO

Honduras es_HN.UTF-8 es_HN

El Salvador es_SV.UTF-8 es_SV

Paraguay es_PY.UTF-8 es_PY

Nicaragua es_NI.UTF-8 es_NI

Costa Rica es_CR.UTF-8 es_CR

Puerto Rico es_PR.UTF-8 es_PR

Panamá es_PA.UTF-8 es_PA

Uruguay es_UY.UTF-8 es_UY

Guinea Ecuatorial es_GQ.UTF-8 es_GQ

 

(*) Tener en cuenta que no todos los códigos funcionarán, ya que depende del servidor con el

que estemos trabajando el que sean reconocidos o no. Recomendamos usar es_ES.UTF-8.

Hay más códigos aparte de los aquí indicados.

El ejemplo de uso de setlocale lo veremos a continuación junto al de la función strftime.

 

 

FUNCIÓN STRFTIME PHP

La función strftime es una función PHP utilizada para obtener una cadena de texto expresada

en el lenguaje de la configuración local del servidor (por defecto o establecida a través de

setlocale). Su sintaxis es la siguiente:

strftime ($cadenaConMarcas, $valorTiempoEnSegundos)

 

Page 199: Hp_ Tutorial Básico Del Programador Web

 

$valorTiempoEnSegundos indica los segundos transcurridos desde el 1 de enero de 1970

00:00:00 GMT.

Si se omite $valorTiempoEnSegundos se toma el valor correspondiente a la hora actual local

del servidor.

El valor $cadenaConMarcas hace referencia al uso de códigos especiales que devuelven un

determinado resultado. Por ejemplo echo strftime (Hoy es %A); nos devolverá “Hoy es lunes”

si la configuración de idioma del servidor es español, ó “Hoy es monday" si la configuración

de idioma del servidor es inglés, ya que el código %A equivale a “día de la semana”.

Otro ejemplo: echo 'Fecha actual: '.strftime("%A, %d de %B de %Y").'<br/>'; devolverá algo

similar a <<jueves, 04 de septiembre de 2089>> si la configuración de idioma del servidor

es español.

En la siguiente tabla se resumen los códigos disponibles:

Uso para Código Descripción Ejemplo valores devueltos

Día %a Día, en forma abreviada Dom hasta Sab

Día %A Día, completo Domingo hasta Sábado

Día %dEl día del mes con dos dígitos (con ceros

iniciales)01 a 31

Día %eEl día del mes, con un espacio precediendo si <

10.1 a 31

Día %j Día del año, 3 dígitos con ceros iniciales 001 a 366

Día %uRepresentación numérica ISO-8601 del día de

semana1 (para Lunes) hasta 7 (para Domingo)

Día %w Representación numérica del día de la semana 0 (para Domingo) hasta 6 (para Sábado)

Semana %UNúmero de semana del año dado, comenzando

con el primer Domingo como primera semana13 (para la 13ª semana del año)

Semana %V Número de semana según ISO-8601 01 hasta 53

Semana %WNúmero de semana del año, comenzando con el

primer Lunes como la primera semana46 (para la 46ª semana del año)

Page 200: Hp_ Tutorial Básico Del Programador Web

Mes %b Nombre del mes abreviado Ene hasta Dic

Mes %B Nombre del mes completo Enero hasta Diciembre

Mes %h Nombre del mes abreviado, igual que %b Ene hasta Dic

Mes %m Representación de dos dígitos del mes 01 (para Enero) hasta 12 (para Diciembre)

Año %CRepresentación de dos dígitos del siglo (año

dividido entre 100, truncado a un entero)19 para el Siglo XX

Año %gRepresentación de dos dígitos del año según ISO-

8601Ejemplo: 89 para 6 de Enero de 2089

Año %G La versión de cuatro dígitos completa de %g Ejemplo: 2089 para 13 de Enero de 2089

Año %y Representación de dos dígitos del año Ejemplo: 09 para 2009, 79 para 1979

Año %Y Representación de cuatro dígitos del año Ejemplo: 2038

Hora %H Representación de dos dígitos de la hora 00 hasta 23

Hora %kRepresentación de dos dígitos de la hora, con un

espacio precediendo a los dígitos simples0 hasta 23

Hora %I Representación de dos dígitos de la hora 01 hasta 12

Hora %l (ele)La hora en formato de 12 horas, con un espacio si

< 101 hasta 12

Hora %M Representación de dos dígitos de los minutos 00 hasta 59

Hora %p'AM' o 'PM' en MAYÚSCULAS basados en la

hora dadaEjemplo: AM para 00:31, PM para 22:23

Hora %P 'am' o 'pm' en minúsculas basados en la hora dada Ejemplo: am para 00:31, pm para 22:23

Hora %r Lo mismo que "%I:%M:%S %p" Ejemplo: 09:34:17 PM para 21:34:17

Hora %R Lo mismo que "%H:%M" Ejemplo: 16:44 para 4:44 PM

Hora %S Representación de dos dígitos de los segundos 00 hasta 59

Hora %T Lo mismo que "%H:%M:%S" Ejemplo: 21:34:17 para 09:34:17 PM

Hora %XRepresentación preferida de la hora basada en la

configuración regional, sin la fechaEjemplo: 03:59:16 o 15:59:16

Hora %z El índice de la zona horaria. Ejemplo: -0500 para Hora Este de EEUU

Page 201: Hp_ Tutorial Básico Del Programador Web

Hora %Z La abreviatura de la zona horariaEjemplo: EST para Hora del Este de

EEUU

Fecha y hora %cMarca preferida de la fecha y hora basadas en la

configuración regional

Ejemplo: Tue Feb 5 00:45:10 2009 para

el 5 de Febrero de 2009 a las 12:45:10

AM

Fecha y hora %D Lo mismo que "%m/%d/%y" Ejemplo: 02/05/89, 5 de Febrero de 2089

Fecha y hora %FLo mismo que "%Y-%m-%d" (normalmente

usado en las marcas de fecha de bases de datos)Ejemplo: 2089-02-05 para 5 Febrero 2089

Fecha y hora %xRepresentación preferida de la fecha basada en la

configuración local, sin la hora

Ejemplo: 02/05/09 para el 5 de Febrero de

2009

 

 

Además de las marcas indicadas existen otras como %n para insertar un salto de línea ó %t

para insertar una tabulación.

Ten en cuenta que no todos los servidores disponen de todos los códigos ni todos los

servidores responderán como se espera cuando trates de hacer que muestren una fecha en

un formato dado. Por ejemplo algunos servidores no admiten %p ni %P, en este caso si

intentas que se muestre AM/PM no se mostrará nada. Tendrás que resolverlo escribiendo

código específico para lograrlo.

Para probar el funcionamiento de esta función, en combinación con setlocale, escribe este

código y comprueba qué resultados obtienes:

<meta charset='utf-8'>

<?php

$miFecha= gmmktime(12,0,0,1,15,2089);

echo 'Antes de setlocale strftime devuelve: '.strftime("%A, %d de %B de %Y", $miFecha).'<br/>';

echo 'Antes de setlocale date devuelve: '.date("l, d-m-Y (H:i:s)", $miFecha).'<br/>';

setlocale(LC_TIME,"es_ES");

echo 'Después de setlocale es_ES date devuelve: '.date("l, d-m-Y (H:i:s)", $miFecha).'<br/>';

echo 'Después de setlocale es_ES strftime devuelve: '.strftime("%A, %d de %B de %Y", $miFecha).'<br/>';

Page 202: Hp_ Tutorial Básico Del Programador Web

setlocale(LC_TIME, 'es_ES.UTF-8');

echo 'Después de setlocale es_ES.UTF-8 date devuelve: '.date("l, d-m-Y (H:i:s)", $miFecha).'<br/>';

echo 'Después de setlocale es_ES.UTF-8 strftime devuelve: '.strftime("%A, %d de %B de %Y", $miFecha).'<br/>';

setlocale(LC_TIME, 'de_DE.UTF-8');

echo 'Después de setlocale de_DE.UTF-8 date devuelve: '.date("l, d-m-Y (H:i:s)", $miFecha).'<br/>';

echo 'Después de setlocale de_DE.UTF-8 strftime devuelve: '.strftime("%A, %d de %B de %Y", $miFecha).'<br/>';

?>

 

 

El resultado que nosotros hemos obtenido con un servidor ubicado en Denver (USA) es el

siguiente:

Antes de setlocale strftime devuelve: Saturday, 15 de January de 2089

Antes de setlocale date devuelve: Saturday, 15-01-2089 (05:00:00)

Después de setlocale es_ES date devuelve: Saturday, 15-01-2089 (05:00:00)

Después de setlocale es_ES strftime devuelve: s�bado, 15 de enero de 2089

Después de setlocale es_ES.UTF-8 date devuelve: Saturday, 15-01-2089 (05:00:00)

Después de setlocale es_ES.UTF-8 strftime devuelve: sábado, 15 de enero de 2089

Después de setlocale de_DE.UTF-8 date devuelve: Saturday, 15-01-2089 (05:00:00)

Después de setlocale de_DE.UTF-8 strftime devuelve: Samstag, 15 de Januar de 2089

 

 

Nota: comprueba que usas como codificación para tu archivo php “Codificación UTF-8 sin

BOM”. Ten en cuenta que los resultados que obtengas pueden ser distintos a estos ya que

dependen de la configuración que tenga establecida tu servidor.

Vamos a comentar los resultados obtenidos:

Hemos creado la variable $miFecha cuyo contenido es el número de segundos desde el 1 de

enero de 1970 00:00:00 GMT para la fecha 15 de enero de 2089 12:00:00 GMT. Como la hora

local tiene un retraso de 7 horas respecto de la hora GMT, al pedir que se muestre por

Page 203: Hp_ Tutorial Básico Del Programador Web

pantalla la fecha y hora con strftime se nos muestra <<Saturday, 15 de January de 2089>>.

Este valor nos viene en inglés porque la configuración local del servidor es “idioma inglés”.

Al cambiar la configuración local de idioma con setlocale a es_ES obtenemos la fecha en

español, pero en lugar de sábado se nos muestra s?bado. La función date sigue devolviendo

la fecha en inglés porque esta función no es sensible a la configuración local de idioma.

Al cambiar la configuración local de idioma con setlocale a 'es_ES.UTF-8' ya obtenemos la

fecha correctamente escrita en español.

A modo de ejemplo, hemos cambiado la configuración a alemán para comprobar lo que se

visualiza (la fecha escrita en alemán).

Podríamos haber escrito setlocale(LC_TIME, 'es_ES','es_ES.UTF-8'); ¿Qué ocurrirá en este

caso? Se tomará el primer código reconocido dentro de la lista de códigos. En este caso

es_ES es un código reconocido, aunque no es el que nos da los resultados deseados.

Como vemos, el trabajo relacionado con fecha, hora e idioma puede resultar problemático y

no tenemos más remedio que realizar pruebas hasta obtener el resultado deseado.

 

 

FUNCIÓN DATE_DEFAULT_TIMEZONE_SET PHP

La función date_default_timezone_set es una función PHP utilizada para establecer una zona

horaria específica como configuración local para el servidor. De esta manera, podemos hacer

que al pedir la fecha y hora actual nos muestre la fecha y hora de un país (o región de un

país) concreto. Su sintaxis es la siguiente:

date_default_timezone_set ($valorDeTimezone);

 

La configuración así establecida afectará a todas las funciones de fecha y hora.

Los valores de $valorDeTimezone han de escogerse entre los valores admitidos. En la

siguiente tabla se muestran algunos de ellos (nota: algunos valores pueden no ser

reconocidos, recomendamos hacer pruebas para comprobarlo):

Page 204: Hp_ Tutorial Básico Del Programador Web

Zonas horarias para México, España y Argentina:

País Zona Zona Zona

México America/Mexico_City America/Hermosillo America/Matamoros

America/Cancun America/Tijuana America/Mazatlan

America/Merida America/Santa_Isabel America/Chihuahua

America/Monterrey America/Bahia_Banderas America/Ojinaga

España Europe/Madrid Atlantic/Canary

Argentina America/Argentina/Buenos_Aires America/Argentina/Tucuman America/Argentina/Mendoza

America/Argentina/Cordoba America/Argentina/Catamarca America/Argentina/San_Luis

America/Argentina/Salta America/Argentina/La_Rioja America/Argentina/Rio_Gallegos

America/Argentina/Jujuy America/Argentina/San_Juan America/Argentina/Ushuaia

 

 

Zonas horarias para otros países:

País Zona País Zona

Colombia America/Bogota Honduras America/Tegucigalpa

Venezuela America/Caracas El Salvador America/El_Salvador

Perú America/Lima Paraguay America/Asuncion

Chile America/Santiago ó Pacific/Easter Nicaragua America/Managua

Guatemala America/Guatemala Costa Rica America/Costa_Rica

Ecuador America/Guayaquil ó Pacific/Galapagos Puerto Rico America/Puerto_Rico

Cuba America/Havana Panamá America/Panama

Bolivia America/La_Paz Uruguay America/Montevideo

República Dominicana America/Santo_Domingo Guinea Ecuatorial Africa/Malabo

Page 205: Hp_ Tutorial Básico Del Programador Web

 

 

Para probar el funcionamiento de esta función, en combinación con setlocale, escribe este

código y comprueba qué resultados obtienes:

<meta charset='utf-8'>

<?php

$miFecha= gmmktime(12,0,0,1,15,2089);

setlocale(LC_TIME, 'es_ES.UTF-8');

echo 'Después de setlocale es_ES.UTF-8 strftime devuelve: '.strftime("%A, %d de %B de %Y %H:%M", $miFecha).'<br/>';

echo 'Fecha actual: '.strftime("%A, %d de %B de %Y %H:%M").'<br/>';

date_default_timezone_set ('Europe/Madrid');

echo 'Establecida zona horaria Europe/Madrid obtenemos: '.strftime("%A, %d de %B de %Y %H:%M", $miFecha).'<br/>';

echo 'Ahora fecha actual es: '.strftime("%A, %d de %B de %Y %H:%M").'<br/>';

?>

 

 

El resultado que nosotros hemos obtenido con un servidor ubicado en Denver (USA) es el

siguiente:

Después de setlocale es_ES.UTF-8 strftime devuelve: sábado, 15 de enero de 2089 05:00

Fecha actual: jueves, 04 de septiembre de 2044 04:31

Establecida zona horaria Europe/Madrid obtenemos: sábado, 15 de enero de 2089 13:00

Ahora fecha actual es: jueves, 04 de septiembre de 2044 12:31

 

 

Fíjate cómo de obtener la hora local en Denver hemos pasado a obtener la hora local en

Madrid (8 horas adelantada respecto a la de Denver) gracias al uso de

date_default_timezone_set.

Page 206: Hp_ Tutorial Básico Del Programador Web

No siempre se obtienen los resultados deseados, por lo que es imprescindible realizar

pruebas.

 

 

EJERCICIO 1

Crea una función php de nombre mostrarDiasMes que reciba como argumentos un mes (valor

numérico de 1 a 12) y un año (valor numérico de 4 dígitos) y muestre por pantalla el texto

“extendido” correspondiente a la fecha en idioma español. Por ejemplo mostrarDiasMes(1,

2089) deberá devolver: 1 de enero de 2089, 2 de enero de 2089, 3 de enero de 2089, 4 de

enero de 2089… hasta 31 de enero de 2089”.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

 

EJERCICIO 2

Repite el ejercicio anterior, pero en esta ocasión mostrando la fecha en formato de hora tal y

como se usa en Holanda y en idioma holandés.

FORMAS DE ENVÍO DE LOS DATOS DE UN FORMULARIO. MÉTODOS GET Y POST.

EJEMPLOS

Cuando un usuario rellena un formulario en una página web los datos hay que enviarlos de

alguna manera. Vamos a considerar las dos formas de envío de datos posibles: usando el

método POST o usando el método GET. Debes conocer cómo se generan formularios HTML

antes de leer esta entrega.

 

 

Page 207: Hp_ Tutorial Básico Del Programador Web

Por ejemplo: <form action="http://aprenderaprogramar.com/prog/newuser.php"

method="get"> podría ser el encabezado de un formulario donde se usa el método get.

En el ejemplo anterior la acción que se ejecutará cuando el usuario pulse el botón “Enviar”

(submit) será el envío de los datos a la url especificada usando el método get.

Veamos el aspecto de un formulario cualquiera para hacernos una idea general.

 

 

Este formulario consta de varios campos que al usuario se le solicitan como Nombre,

Apellidos, Correo electrónico, País y Mensaje. Posiblemente los nombres de los campos en el

código HTML sean del tipo nombre_user, apellidos_user, email_user, pais_user y msg.

Un formulario se escribe en HTML. Si no tienes claro cómo se generan formularios HTML, te

recomendamos leas el curso HTML desde cero de aprenderaprogramar.com. Por ejemplo,

este es el código de un formulario:

Page 208: Hp_ Tutorial Básico Del Programador Web

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Ejemplo del uso de formularios - aprenderaprogramar.com</title>

</head>

<body>

<form method="get" action="action.php">

Selecciona tus intereses:

<br />

<input name="cbipeliculas" type="checkbox" />Películas

<br />

<input name="cbilibros" type="checkbox" checked="checked" />Libros

<br />

<input name="cbiinternet" type="checkbox" />Internet

</form>

</body>

</html>

 

 

 

Page 209: Hp_ Tutorial Básico Del Programador Web

La diferencia entre los métodos get y post radica en la forma de enviar los datos a la página

cuando se pulsa el botón “Enviar”. Mientras que el método GET envía los datos usando la

URL, el método POST los envía de forma que no podemos verlos.

Un resultado usando el método GET sería el siguiente:

http://aprenderaprogramar.com/newuser.php?

nombre=Pepe&apellido=Flores&email=h52turam%40uco.es&sexo=Mujer

 

En esta URL podemos distinguir varias partes: http://aprenderaprogramar.com/newuser.php

es la dirección web en sí.

El símbolo ? indica dónde empiezan los parámetros que se reciben desde el formulario que

ha enviado los datos a la página.

Las parejas dato1=valor1, dato2=valor2, dato3=valor3… reflejan son el nombre y el valor de

los campos enviados por el formulario.

Por ejemplo: nombre=Pepe, apellidos=Flores, etc. nos dice que el campo del formulario que

se denomina nombre llega con valor “Pepe” mientras que el campo del formulario que se

denomina apellidos llega con valor “Flores”

Tener en cuenta que para separar la primera pareja se usa el símbolo ‘?’ y para las restantes

el símbolo ‘&’.

Otro aspecto a tener en cuenta es que determinados caracteres no son recibidos en la URL

de la misma forma exactamente en que fueron escritos en el formulario. Por ejemplo, el valor

del campo email que se recibe en la URL es h52turam%40uco.es, mientras que el usuario en

el formulario habrá introducido con toda seguridad [email protected] . Como vemos, el

carácter @ ha sido sustituido por los caracteres %40. Estas equivalencias se introducen

automáticamente en la transmisión de datos debido a que las URLs no admiten determinados

caracteres como letras con tildes, arrobas y otros. No debes preocuparte por esta

codificación, ya que si posteriormente rescatamos los valores mediante otros mecanismos

volveremos a obtener el texto original. Simplemente, conviene conocer esta circunstancia

para no pensar que están ocurriendo cosas extrañas o errores.

Hemos visto el resultado de un envío por el método get. En el caso de un envío de datos

usando el método POST, aunque estos datos también serán enviados (de una forma que

podemos denominar “oculta”), no los podremos ver en la URL. Para poder recuperar los

Page 210: Hp_ Tutorial Básico Del Programador Web

valores de los campos en el caso de un envío con el método post necesitaríamos otras

herramientas (por ejemplo valernos del lenguaje PHP para recuperar el valor de esos

campos).

El resultado final con ambos métodos podemos decir que es el mismo: la información se

transmite de un lado a otro. La diferencia radica en que con el método GET podemos ver

directamente los parámetros pasados ya que están dentro de la URL mientras que con el

método POST los parámetros quedan ocultos y para rescatarlos hay que usar otras

herramientas.

Un ejemplo de uso del método post sería este: <form

action="http://aprenderaprogramar.com/prog/newuser.php" method="post">

Cuando usamos el método post los datos enviados desde el formulario no son visibles, pero

sí son recuperables usando las instrucciones adecuadas.

 

 

EJERCICIO

Crea un archivo HTML que contenga un formulario que contenga un checkbox (¿Desea recibir

factura?), dos input radio (Varón/Mujer), tres input tipo texto (Nombre, Dirección, Email) y un

combobox para forma de envío (normal, por avión o urgente), junto con un botón de envío.

Establece como url de envío la dirección recibe.php y método de envío get y comprueba que

se recuperan los datos enviados correctamente a través de la url.

RECUPERAR DATOS DE FORMULARIOS. VARIABLES $_REQUEST, $_GET y $_POST

Cuando un usuario pulsa el botón enviar de un formulario, la información que contenían sus

campos es enviada a una dirección URL desde donde tendremos que recuperarla para

tratarla de alguna manera. Por ejemplo, si realiza una compra, tendremos que recuperar los

datos para completar el proceso de pago. La información del formulario “viaja” almacenada

en variables que podremos recuperar y utilizar mediante PHP.

 

 

Page 211: Hp_ Tutorial Básico Del Programador Web

La recuperación de variables con PHP es bastante fácil, ya sean datos de un formulario

enviado por el método post (parámetros no visibles) o por el método get (parámetros en la

URL sí visibles). Antes que nada hay que aclarar que hay varios métodos para recuperar

variables con PHP. Para los formularios tenemos los métodos GET, POST, y REQUEST.

 

 

RECUPERAR VARIABLES CON GET

GET nos permite recuperar parámetros desde la URL o desde formularios enviados con el

método GET.

Escribe este código y guárdalo con un nombre de archivo como ejemplo1.html. A

continuación, sube el fichero al servidor, introduce un nombre en el campo del formulario y

visualiza el resultado.

<form name="formulario"method="get"action="ejemploGet.php">

       Nombre: <input type="text"name="nombre"value="">

       <input type="submit"/>

</form>

 

 

 

Antes de pulsar sobre el botón enviar, debemos crear el fichero ejemploGet.php que es el

indicado en el formulario para el envío de los datos.

Page 212: Hp_ Tutorial Básico Del Programador Web

Escribe este código y guárdalo con un nombre de archivo como ejemploGet.php. A

continuación, sube el fichero al servidor en la misma carpeta donde subiste el ejemplo1.html

<?php //Ejemplo aprenderaprogramar.com

       $nombre = $_GET['nombre'];

       echo$nombre;

?>

 

 

Fíjate que la instrucción $_GET['nombreDelParametro'] sirve para recuperar la información

recibida.

Una vez completemos el paso anterior, pulsaremos sobre el botón enviar del ejemplo1.html y

veremos una imagen similar a la siguiente.

 

 

Vamos a explicar el proceso que ha tenido lugar.

El primer archivo es un documento HTML. Para ser más correctos, deberíamos haberlo escrito

de esta manera:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

Page 213: Hp_ Tutorial Básico Del Programador Web

<title>Ejemplo aprenderaprogramar.com</title>

</head>

       <body>

              <form name="formulario"method="get"action="ejemploGet.php">

              Nombre: <input type="text"name="nombre"value="">

              <input type="submit"/>

             </form>

       </body>

</html>

 

 

Sin embargo, comprobamos que los navegadores tratan de interpretar y mostrar el resultado

de un código HTML (o PHP) incluso cuando la sintaxis o la definición del documento no es del

todo correcta. Esto debemos conocerlo, sin embargo recomendamos que siempre se trate de

ser lo más correctos posibles a la hora de escribir código web.

Vemos que hemos definido un formulario en cuya cabecera hemos puesto que el método de

envío de los datos va a ser el método get y que la URL de destino va a ser ejemploGet.php. A

su vez, el formulario tiene un campo cuyo atributo name es “nombre”. Ese atributo define el

nombre de la variable que vamos a poder recuperar en la URL de destino.

En el archivo php hemos incluido la línea $nombre = $_GET['nombre']; que significa que

creamos una variable php denominada $nombre donde almacenamos la información del

campo ‘nombre’ que recibe la URL a través del método get proviniente del formulario. Si

tuviéramos otros campos que hubiéramos definido como apellidos, teléfono, edad, el

tratamiento sería similar. Por ejemplo:

$apellidos = $_GET['apellidos'];

$telefono = $_GET['celular'];

$edadPersona = $_GET['edad'];

 

Page 214: Hp_ Tutorial Básico Del Programador Web

Fíjate en que una cosa es la variable en la que almacenamos la información recuperada, y

otra cosa es el nombre del campo del formulario de donde proviene. Por ejemplo en

$apellidos = $_GET['apellidos']; coinciden el nombre de la variable que utilizamos con el

nombre del campo del formulario. Sin embargo, en  $telefono = $_GET['celular']; no

coinciden. En este caso, el campo que proviene del formulario se llama ‘celular’ mientras que

la información que venga en ese campo la almacenamos en una variable a la que hemos

llamado $telefono. Finalmente, en $edadPersona = $_GET['edad']; estamos almacenando en

una variable a la que hemos llamado $edadPersona la información proviniente de un campo

del formulario denominado ‘edad’.

Con frecuencia los nombres de las variables y de los campos del formulario se hacen

coincidir, pero en otras ocasiones no. Esto queda a elección del programador.

Como podemos observar, recuperar datos enviados por un formulario con el método GET es

bastante simple usando PHP.

 

 

EJERCICIO RESUELTO Nº 1

Diseñar un formulario web que pida la altura y el diámetro de un cilindro en metros. Una vez

el usuario introduzca los datos y pulse el botón calcular, deberá calcularse el volumen del

cilindro y mostrarse el resultado en el navegador.

 

 

SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

 1.  Inicio [Ejemplo en pseudocódigo - aprenderaprogramar.com]

2.  Mostrar “Introduzca el diámetro, en metros” : Pedir D

3.  Mostrar “Introduzca la altura, en metros” : Pedir H

4.  R = D/2 : Pi = 3,141593

5.  V = Pi * (R ^ 2) * H

6.  Mostrar “El volumen del cilindro es de”, V, “metros cúbicos”

Page 215: Hp_ Tutorial Básico Del Programador Web

 7.  Fin

 

 

Esquematizar la solución en pseudocódigo es una buena idea antes de realizar la

programación, pues nos permite definir conceptualmente cómo va a ser nuestro código antes

de escribirlo. Es sobre todo adecuado para personas que se están iniciando en la

programación.

En primer lugar, crearemos el archivo html con el formulario.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Ejemplo aprenderaprogramar.com</title>

<meta charset="utf-8">

</head>

       <body>

              <form name="formularioDatos"method="get"action="ejemploGet1.php">

              <p>CÁLCULO DEL VOLUMEN DE UN CILINDRO </p>

             <br/>

             Introduzca el diámetro en metros: <input type="text"name="diam"value="">

              <br/> <br/>

             Introduzca la altura en metros: <input type="text"name="altu"value="">

              <br/> <br/>

             <input value="Calcular" type="submit" />

             </form>

       </body>

</html>

 

Page 216: Hp_ Tutorial Básico Del Programador Web

 

 

Por otro lado, crearemos el archivo php con el tratamiento de datos:

<?php //Ejemplo aprenderaprogramar.com

       $diametro = $_GET['diam'];

       $altura = $_GET['altu'];

       $radio = $diametro/2;

       $Pi = 3.141593;

       $volumen = $Pi*$radio*$radio*$altura;

       echo"<br/>   El volumen del cilindro es de". $volumen. "metros cúbicos";

?>

 

 

Fíjate que hemos escrito la potencia del radio como $radio * $radio. En otros lenguajes existe

el operador de exponenciación, pero en php esta operación se tiene que realizar recurriendo

a una función matemática. Esta función la estudiaremos en otro momento.

Page 217: Hp_ Tutorial Básico Del Programador Web

Finalmente obtenemos un resultado. Haz pruebas introduciendo como valores de diámetro y

altura 2,15 y 1,75 en vez de 2.15 y 1.75. Posiblemente no obtengas un resultado adecuado si

usas las comas, ya que en PHP el separador de la parte decimal de un número es el punto.

 

 

EJERCICIO RESUELTO Nº 2

Diseñar un desarrollo web simple con php que pida al usuario el precio de tres productos en

tres establecimientos distintos denominados “Tienda 1”, “Tienda 2” y “Tienda 3”. Una vez se

introduzca esta información se debe calcular y mostrar el precio medio del producto.

 

 

SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

 1.  Inicio [Ejemplo en pseudocódigo - aprenderaprogramar.com]

2.  Mostrar “Introduzca el precio del producto en el establecimiento número 1, en euros” : Pedir Precio1

3.  Mostrar “Introduzca el precio del producto en el establecimiento número 2, en euros” : Pedir Precio2

4.  Mostrar “Introduzca el precio del producto en el establecimiento número 3, en euros” : Pedir Precio3

     5.  Media = (Precio1 + Precio2 + Precio3) / 3

  6.  Mostrar “El precio medio del producto es”, Media, “euros”

 7.  Fin

Page 218: Hp_ Tutorial Básico Del Programador Web

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Ejemplo aprenderaprogramar.com</title>

<meta charset="utf-8">

</head>

       <body>

             <form name="formularioDatos" method="get" action="ejemploGet2.php">

             <p> CÁLCULO DEL PRECIO MEDIO DE UN PRODUCTO </p>

             <br/>

             Introduzca el precio del producto en el establecimiento número 1, en euros: <input type="text"

name="precio1" value="">

             <br/> <br/>

             Introduzca el precio del producto en el establecimiento número 1, en euros: <input type="text"

name="precio2" value="">

             <br/> <br/>

             Introduzca el precio del producto en el establecimiento número 3, en euros: <input type="text"

name="precio3" value="">

             <br/> <br/>

             <input value="Calcular" type="submit" />

             </form>

       </body>

</html>

 

 

Es posible que durante el desarrollo del curso te encuentres visualizaciones de este tipo,

donde podrás comprobar que los acentos o tildes no se ven bien.

Page 219: Hp_ Tutorial Básico Del Programador Web

 

 

Recordarte que la solución a esto es, cuando estamos trabajando con Notepad++, elegir en

el menú Formato la opción “Codificar en UTF-8 sin BOM”. En caso de que por error el archivo

esté en otro formato, elige la opción “Convertir en UTF-8 sin BOM” para dejar correctamente

la codificación del archivo. También puede ser necesario introducir la etiqueta: <meta

charset="utf-8"> entre las etiquetas <head> … </head> para lograr que la visualización sea

correcta.

Page 220: Hp_ Tutorial Básico Del Programador Web

 

 

 

Page 221: Hp_ Tutorial Básico Del Programador Web

Por otro lado necesitamos el archivo php para mostrar los resultados. El código sería:

<?php //Ejemplo aprenderaprogramar.com

       $precio1 = $_GET['precio1'];

       $precio2 = $_GET['precio2'];

       $precio3 = $_GET['precio3'];

       $media = ($precio1+$precio2+$precio3)/3;

       echo "<br/>   DATOS RECIBIDOS";

       echo "<br/>   Precio producto establecimiento 1: ". $precio1. " euros";

       echo "<br/>   Precio producto establecimiento 2: ". $precio2. " euros";

       echo "<br/>   Precio producto establecimiento 2: ". $precio3. " euros <br/>";

       echo "<br/>   El precio medio del producto es de ". $media. " euros";

?>

 

 

 

¿DESDE DÓNDE SE RECUPERAN LOS DATOS?

Si has realizado el ejercicio anterior habrás comprobado que la URL una vez se pulsa el botón

de envío del formulario es de este tipo:

Page 222: Hp_ Tutorial Básico Del Programador Web

 http://www.aprenderaprogramar.com/ejemploGet2.php?

precio1=18.55&precio2=21&precio3=27.55

Aquí podemos comprobar que los datos están en la URL. Ahora bien, los datos venían del

formulario. ¿Desde dónde se están recuperando los datos? Para responder a esta pregunta

escribe una URL de este tipo:

http://www.aprenderaprogramar.com/ejemploGet2.php?

precio1=10&precio2=15&precio3=20

  DATOS RECIBIDOS

  Precio producto establecimiento 1: 10 euros

  Precio producto establecimiento 2: 15 euros

  Precio producto establecimiento 2: 20 euros

  El precio medio del producto es de 15 euros

 

Llegamos a una conclusión: los datos pasan del formulario a la URL, y desde la URL son

recuperados por el intérprete PHP usando $_GET[‘nombreDelParametro’]. Por tanto los datos

no vienen directamente del formulario, sino que son recuperados a través de la URL.

 

 

EJERCICIO PROPUESTO

Diseñar un desarrollo web simple con PHP que dé respuesta a la necesidad que se plantea a

continuación.

Un operario de una fábrica recibe cada cierto tiempo un depósito cilíndrico de dimensiones

variables, que debe llenar de aceite a través de una toma con cierto caudal disponible. Se

desea crear una aplicación web que le indique cuánto tiempo transcurrirá hasta el llenado del

depósito. El caudal disponible se considera estable para los tiempos que tardan los llenados

de depósitos y lo facilita el propio operario, aportando el dato en litros por minuto.

 

Page 223: Hp_ Tutorial Básico Del Programador Web

 

ORIENTACIÓN PARA LA SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

 1.  Inicio

2.   Mostrar “Introduzca el caudal disponible en litros / minuto”: Pedir Q

3.  Mostrar “Introduzca el diámetro del depósito, en metros” : Pedir D

4.  Mostrar “Introduzca la altura del depósito, en metros” : Pedir H

5.  Pi = 3,141593

6.  R = D / 2

7.  V = Pi * (R ^ 2) * H : Vlitros = V * 1000

8.  tminutos = Vlitros / Q

    9.  Mostrar “El tiempo que transcurrirá hasta el llenado del depósito es de”, tminutos, “minutos”

 10.  Fin

 

 

Realiza el ejercicio y comprueba los resultados. Para que tengas una referencia, si el caudal

disponible es de 125 litros por minuto y los valores de diámetro y altura del cilindro son 2.15

y 1.75, el resultado que debes obtener es que el depósito tarda en llenarse será de

aproximadamente 50 minutos.

RECUPERAR DATOS DEL FORMULARIO. $_POST

Cuando un usuario pulsa el botón enviar de un formulario, la información que contenían sus

campos es enviada a una dirección URL desde donde tendremos que recuperarla para

tratarla de alguna manera. Por ejemplo, si realiza una compra, tendremos que recuperar los

datos para completar el proceso de pago. La información del formulario “viaja” almacenada

en variables que podremos recuperar y utilizar mediante PHP. Una de las formas de

recuperación consiste en usar $_POST.

 

Page 224: Hp_ Tutorial Básico Del Programador Web

 

RECUPERAR VARIABLES CON POST

POST nos permite recuperar datos enviados desde formularios con el método POST.

Escribe este código y guárdalo con un nombre de archivo como ejemplo1.html. A

continuación, sube el fichero al servidor, introduce un nombre en el campo y visualiza el

resultado.

<form name="formulario" method="post" action="ejemploPost.php">

Nombre: <input type="text" name="nombre" value="">

<input type="submit" />

</form>

 

 

 

Antes de pulsar sobre el botón enviar, debemos crear el fichero ejemploPost.php que es el

indicado en el formulario para el envío de los datos.

Escribe este código y guárdalo con un nombre de archivo como ejemploPost.php. A

continuación, sube el fichero al servidor en la misma carpeta donde subiste el fichero html.

<?php

$nombre = $_POST['nombre'];

echo $nombre;

?>

Page 225: Hp_ Tutorial Básico Del Programador Web

 

 

Una vez completemos el paso anterior, pulsaremos sobre el botón enviar del ejemplo1.html y

veremos una imagen similar a la siguiente.

 

 

Vamos a explicar el proceso que ha tenido lugar.

El primer archivo es un documento HTML. Para ser más correctos, deberíamos haberlo escrito

de esta manera:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Ejemplo aprenderaprogramar.com</title>

<meta charset="utf-8">

</head>

<body>

<form name="formulario" method="post" action="ejemploPost.php">

Nombre: <input type="text" name="nombre" value="">

<input type="submit" />

</form>

</body>

</html>

Page 226: Hp_ Tutorial Básico Del Programador Web

 

 

Sin embargo, comprobamos que los navegadores tratan de interpretar y mostrar el resultado

de un código HTML (o PHP) incluso cuando la sintaxis o la definición del documento no es del

todo correcta. Esto debemos conocerlo, sin embargo recomendamos que siempre se trate de

ser lo más correctos posibles a la hora de escribir código web.

Vemos que hemos definido un formulario en cuya cabecera hemos puesto que el método de

envío de los datos va a ser el método post y que la URL de destino va a ser ejemploPost.php.

A su vez, el formulario tiene un campo cuyo atributo name es “nombre”. Ese atributo define

el nombre de la variable que vamos a poder recuperar en la URL de destino.

En el archivo php hemos incluido la línea $nombre = $_POST['nombre']; que significa que

creamos una variable php denominada $nombre donde almacenamos la información del

campo ‘nombre’ a través del método post proveniente del formulario. Si tuviéramos otros

campos que hubiéramos definido como apellidos, teléfono, edad, el tratamiento sería similar.

Por ejemplo:

$apellidos = $_POST['apellidos'];

$telefono = $_POST['celular'];

$edadPersona = $_POST['edad'];

 

Fíjate en que una cosa es la variable en la que almacenamos la información recuperada, y

otra cosa es el nombre del campo del formulario de donde proviene. Por ejemplo en

$apellidos = $_POST['apellidos']; coinciden el nombre de la variable que utilizamos con el

nombre del campo del formulario. Sin embargo, en $telefono = $_POST['celular']; no

coinciden. En este caso, el campo que proviene del formulario se llama ‘celular’ mientras que

la información que venga en ese campo la almacenamos en una variable a la que hemos

llamado $telefono. Finalmente, en $edadPersona = $_POST['edad']; estamos almacenando

en una variable a la que hemos llamado $edadPersona la información proveniente de un

campo del formulario denominado ‘edad’.

Con frecuencia los nombres de las variables y de los campos del formulario se hacen

coincidir, pero en otras ocasiones no. Esto queda a elección del programador.

Page 227: Hp_ Tutorial Básico Del Programador Web

Como podemos observar, recuperar datos enviados por un formulario con el método POST es

bastante simple usando PHP.

 

 

EJERCICIO RESUELTO Nº 1

Diseñar un formulario web que pida la altura y el diámetro de un cilindro en metros. Una vez

el usuario introduzca los datos y pulse el botón calcular, deberá calcularse el volumen del

cilindro y mostrarse el resultado en el navegador.

 

 

SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

1. Inicio

2. Mostrar “Introduzca el diámetro, en metros” : Pedir D

3. Mostrar “Introduzca la altura, en metros” : Pedir H

4. R = D/2 : Pi = 3,141593

5. V = Pi * (R ^ 2) * H

6. Mostrar “El volumen del cilindro es de”, V, “metros cúbicos”

7. Fin

 

 

Esquematizar la solución en pseudocódigo es una buena idea antes de realizar la

programación, pues nos permite definir conceptualmente cómo va a ser nuestro código antes

de escribirlo. Es sobre todo adecuado para personas que se están iniciando en la

programación.

En primer lugar, crearemos el archivo html con el formulario.

Page 228: Hp_ Tutorial Básico Del Programador Web

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Ejemplo aprenderaprogramar.com</title>

<meta charset="utf-8">

</head>

<body>

<form name="formularioDatos" method="post" action="ejemploPost1.php">

<p> CÁLCULO DEL VOLUMEN DE UN CILINDRO </p>

<br/>

Introduzca el diámetro en metros: <input type="text" name="diam" value="">

<br/> <br/>

Introduzca la altura en metros: <input type="text" name="altu" value="">

<br/> <br/>

<input value="Calcular" type="submit" />

</form>

</body>

</html>

 

Page 229: Hp_ Tutorial Básico Del Programador Web

 

 

Por otro lado, crearemos el archivo php con el tratamiento de datos:

<?php //Ejemplo aprenderaprogramar.com

$diametro = $_POST['diam'];

$altura = $_POST['altu'];

$radio = $diametro/2;

$Pi = 3.141593;

$volumen = $Pi*$radio*$radio*$altura;

echo "<br/>   El volumen del cilindro es de". $volumen. "metros cúbicos";

?>

 

 

Fíjate que hemos escrito la potencia del radio como $radio * $radio. En otros lenguajes existe

el operador de exponenciación, pero en php esta operación se tiene que realizar recurriendo

a una función matemática. Esta función la estudiaremos en otro momento.

Finalmente obtenemos un resultado. Haz pruebas introduciendo como valores de diámetro y

altura 2,15 y 1,75 en vez de 2.15 y 1.75. Posiblemente no obtengas un resultado adecuado si

usas las comas, ya que en PHP el separador de la parte decimal de un número es el punto.

 

Page 230: Hp_ Tutorial Básico Del Programador Web

 

EJERCICIO RESUELTO Nº 2

Diseñar un desarrollo web simple con php que pida al usuario el precio de tres productos en

tres establecimientos distintos denominados “Tienda 1”, “Tienda 2” y “Tienda 3”. Una vez se

introduzca esta información se debe calcular y mostrar el precio medio del producto.

 

 

SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

1. Inicio

2. Mostrar “Introduzca el precio del producto en el establecimiento número 1, en euros” : Pedir Precio1

3. Mostrar “Introduzca el precio del producto en el establecimiento número 2, en euros” : Pedir Precio2

4. Mostrar “Introduzca el precio del producto en el establecimiento número 3, en euros” : Pedir Precio3

5. Media = (Precio1 + Precio2 + Precio3) / 3

6. Mostrar “El precio medio del producto es”, Media, “euros”

7. Fin

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Ejemplo aprenderaprogramar.com</title>

<meta charset="utf-8">

</head>

<body>

<form name="formularioDatos" method="post" action="ejemploPost2.php">

<p> CÁLCULO DEL PRECIO MEDIO DE UN PRODUCTO </p>

<br/>

Introduzca el precio del producto en el establecimiento número 1, en euros: <input type="text" name="precio1" value="">

Page 231: Hp_ Tutorial Básico Del Programador Web

<br/> <br/>

Introduzca el precio del producto en el establecimiento número 1, en euros: <input type="text" name="precio2" value="">

<br/> <br/>

Introduzca el precio del producto en el establecimiento número 3, en euros: <input type="text" name="precio3" value="">

<br/> <br/>

<input value="Calcular" type="submit" />

</form>

</body>

</html>

 

 

Es posible que durante el desarrollo del curso te encuentres visualizaciones de este tipo,

donde podrás comprobar que los acentos o tildes no se ven bien.

 

 

Page 232: Hp_ Tutorial Básico Del Programador Web

Recordarte que la solución a esto es, cuando estamos trabajando con Notepad++, elegir en

el menú Formato la opción “Codificar en UTF-8 sin BOM”. En caso de que por error el archivo

esté en otro formato, elige la opción “Convertir en UTF-8 sin BOM” para dejar correctamente

la codificación del archivo. También puede ser necesario introducir la etiqueta: <meta

charset="utf-8"> entre las etiquetas <head> … </head> para lograr que la visualización sea

correcta.

 

 

Por otro lado necesitamos el archivo php.

<?php //Ejemplo aprenderaprogramar.com

$precio1 = $_POST['precio1'];

$precio2 = $_POST['precio2'];

$precio3 = $_POST['precio3'];

$media = ($precio1+$precio2+$precio3)/3;

echo "<br/>   DATOS RECIBIDOS";

echo "<br/>   Precio producto establecimiento 1: ". $precio1. " euros";

echo "<br/>   Precio producto establecimiento 2: ". $precio2. " euros";

echo "<br/>   Precio producto establecimiento 2: ". $precio3. " euros <br/>";

Page 233: Hp_ Tutorial Básico Del Programador Web

echo "<br/>   El precio medio del producto es de ". $media. " euros";

?>

 

 

 

EJERCICIO PROPUESTO

Diseñar un desarrollo web simple con PHP que dé respuesta a la necesidad que se plantea a

continuación.

Un operario de una fábrica recibe cada cierto tiempo un depósito cilíndrico de dimensiones

variables, que debe llenar de aceite a través de una toma con cierto caudal disponible. Se

desea crear una aplicación web que le indique cuánto tiempo transcurrirá hasta el llenado del

depósito. El caudal disponible se considera estable para los tiempos que tardan los llenados

de depósitos y lo facilita el propio operario, aportando el dato en litros por minuto.

 

 

ORIENTACIÓN PARA LA SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

Page 234: Hp_ Tutorial Básico Del Programador Web

1. Inicio

2. Mostrar “Introduzca el caudal disponible en litros / minuto”: Pedir Q

3. Mostrar “Introduzca el diámetro del depósito, en metros” : Pedir D

4. Mostrar “Introduzca la altura del depósito, en metros” : Pedir H

5. Pi = 3,141593

6. R = D / 2

7. V = Pi * (R ^ 2) * H : Vlitros = V * 1000

8. tminutos = Vlitros / Q

9. Mostrar “El tiempo que transcurrirá hasta el llenado del depósito es de”, tminutos, “minutos”

10. Fin

 

 

Realiza el ejercicio y comprueba los resultados. Para que tengas una referencia, si el caudal

disponible es de 125 litros por minuto y losvalores de diámetro y altura del cilindro son 2.15 y

1.75, el resultado que debes obtener es que el depósito tarda en llenarse será de

aproximadamente 50 minutos.

Leer y escribir archivos de texto con PHP.

Función fopen (modo), fgets, fputs, fclose y

feof. Ejemplo (CU00836B)

Escrito por Enrique González

Resumen: Entrega nº36 del Tutorial básico del programador web: PHP desde

cero.

Codificación aprenderaprogramar.com: CU00836B 

 

 

INTRODUCCIÓN AL MANEJO DE ARCHIVOS CON PHP.

Page 235: Hp_ Tutorial Básico Del Programador Web

Cuando necesitamos crear, guardar, leer o escribir archivos en la creación de sitios web, el

manejo de éstos se convierte en una prioridad. Para ello, vamos a ver una serie de funciones

y algunos ejemplos para familiarizarnos con el manejo de archivos a nivel básico en php.

 

 

FUNCIÓN FOPEN

La función fopen() sirve para abrir ficheros (archivos). Su sintaxis general:

<?php //Ejemplo aprenderaprogramar.com

$fp = fopen(fichero, modoDeApertura);

?>

 

 

Donde $fp es el descriptor o identificador del fichero abierto que necesitaremos más tarde.

fichero puede ser un archivo de texto, un archivo con extensión .php, o incluso la URL de una

página web (por ejemplo http://www.paginaweb.com/). “Abrir” una web con fopen() puede

ser muy útil cuando queremos comprobar si la web existe, o si está activa.

Si fichero empieza con "http://", se abre una conexión hacia la web especificada. Siempre

debe ponérsele una barra ( / ) al final.

Si fichero empieza con “ftp://", se abre una conexión al servidor especificado.

Si fichero no empieza con ninguna de las cosas anteriormente dichas, se abre una conexión

"directa" con el archivo especificado. Si no existe el archivo o dirección especificadas, se

devuelve un error.

Hay distintos modos de apertura de archivos, vamos a ver los más habituales.

Page 236: Hp_ Tutorial Básico Del Programador Web

A la hora de abrir un archivo, hay que saber de qué forma queremos abrirlo. Podemos abrirlo

para escritura y lectura, pero de distintas formas:

Modo Observaciones

r Abre el archivo sólo para lectura. La lectura comienza al inicio del archivo.

r+ Abre el archivo para lectura y escritura. La lectura o escritura comienza al inicio del archivo.

w Abre el archivo sólo para escritura. La escritura comienza al inicio del archivo, y elimina el contenido

previo. Si el archivo no existe, intenta crearlo.

w+ Abre el archivo para escritura y lectura. La lectura o escritura comienza al inicio del archivo, y elimina el

contenido previo. Si el archivo no existe, intenta crearlo.

a Abre el archivo para sólo escritura. La escritura comenzará al final del archivo, sin afectar al contenido

previo. Si el fichero no existe se intenta crear.

a+ Abre el archivo para lectura y escritura. La lectura o escritura comenzará al final del fichero, sin afectar al

contenido previo. Si el fichero no existe se intenta crear.

 

 

Ejemplos

<?php //Ejemplo aprenderaprogramar.com

$fp = fopen("/apr2/fichero.txt", "r");

$fp = fopen("/apr2/fichero2.txt", "w");

$fp = fopen("http://www.aprenderaprogramar.com/texto.txt", "a+");

$fp = fopen("ftp://ftp.elmundo.es/fichero.txt", "w");

?>

 

Ahora bien, con esta simple instrucción sólo tendremos el archivo abierto para leer, escribir,

o leer y escribir. Pero ahora tendremos que hacer uso de las otras instrucciones para escribir

o recuperar los datos que estimemos oportunos.

Page 237: Hp_ Tutorial Básico Del Programador Web

 

 

FUNCIÓN FCLOSE

La función fclose(identificadorDelFichero) cierra un archivo abierto.

Esta función debe ser utilizada después de abrir y manipular el archivo como veremos en los

siguientes ejemplos.

 

 

FUNCIONES FGETS Y FEOF

La función fgets() recupera el contenido de una línea de un archivo. Su sintaxis general es:

<?php

//Ejemplo aprenderaprogramar.com

fgets(descriptorDelFichero);

?>

 

 

Ejemplo

<?php

// Ejemplo aprenderaprogramar.com

// Leemos la primera línea de fichero.txt

// fichero.txt tienen que estar en la misma carpeta que el fichero php

// fichero.txt es un archivo de texto normal creado con notepad, por ejemplo.

$fp = fopen("fichero.txt", "r");

$linea = fgets($fp);

fclose($fp);

Page 238: Hp_ Tutorial Básico Del Programador Web

?>

 

 

Ahora bien, con esto sólo leeremos la primera línea del fichero de texto, si quisiéramos leer

línea a línea hasta el final necesitaríamos el uso de un bucle while, por ejemplo.

<?php // Ejemplo aprenderaprogramar.com

// Iremos leyendo línea a línea del fichero.txt hasta llegar al fin (feof($fp))

// fichero.txt tienen que estar en la misma carpeta que el fichero php

// fichero.txt es un archivo de texto normal creado con notepad, por ejemplo.

$fp = fopen("fichero.txt", "r");

while(!feof($fp)) {

$linea = fgets($fp);

echo $linea . "<br />";

}

fclose($fp);

?>

 

 

Esto nos mostrará el contenido del fichero de texto línea a línea. Comprobarás que hemos

incluido una nueva función denominada feof (que viene significando algo así como file end of

file o “marca de final de archivo”). La sintaxis general para esta función es: feof

(identificadorDelArchivo)

La función feof nos devuelve true cuando hemos llegado al final de archivo y false si no lo

hemos alcanzado todavía. La condición while (!feof($fp)) podríamos haberla escrito también

de la siguiente manera: while (feof($fp)==false) . Esta sintaxis es equivalente, puedes

utilizar la que prefieras, pero debes acostumbrarte a entender ambas formas de escritura.

Page 239: Hp_ Tutorial Básico Del Programador Web

Finalmente, fíjate como una vez hemos de terminado de operar con el fichero escribimos la

instrucción fclose(identificadorDelFichero) para cerrar la conexión, cosa que debemos hacer

siempre.

 

 

FUNCIÓN FPUTS

La función fputs() escribe una línea en un archivo. Su sintaxis general es:

<?php //Ejemplo aprenderaprogramar.com

fputs(descriptorDelFichero, cadena);

?>

 

 

Ejemplo

<?php // Ejemplo aprenderaprogramar.com

// Escribimos una primera línea en fichero.txt

// fichero.txt tienen que estar en la misma carpeta que el fichero php

$fp = fopen("fichero.txt", "w");

fputs($fp, "Prueba de escritura aprenderaprogramar.com");

fclose($fp);

?>

 

 

Fíjate que al realizar la apertura del fichero en modo w, si el fichero no existe, será creado.

Fíjate también como una vez hemos de terminado de operar con el fichero escribimos la

instrucción fclose(identificadorDelFichero) para cerrar la conexión, cosa que debemos hacer

siempre.

Page 240: Hp_ Tutorial Básico Del Programador Web

Si ahora abrimos el fichero con algún editor de textos como Notepad, Bloc de notas o

cualquier otro, veremos lo siguiente:

 

 

EJERCICIO

Crea las siguientes funciones en PHP:

a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirTresNumeros

que reciba tres números enteros como parámetros y proceda a escribir dichos números en

tres líneas en un archivo denominado datosEjercicio.txt. Si el archivo no existe, debe crearlo.

b) Una función denominada obtenerSuma (tipo función, devolverá un valor numérico) que

reciba una ruta de archivo como parámetro, lea los números existentes en cada línea del

archivo, y devuelva la suma de todos esos números.

c) Una función denominada obtenerArrNum (tipo función, devolverá un array de valores

numéricos) que reciba una ruta de archivo como parámetro, lea los números existentes en

cada línea del archivo, y devuelva un array cuyo índice 0 contendrá el número existente en la

primera línea, cuyo índice 1 contendrá el número existente en la segunda línea y así

sucesivamente.

d) Crea código php donde a través de la función escribirTresNumeros escribas en el fichero

los números 2, 8, 14. Luego, mediante la función obtenerSuma muestra por pantalla el

resultado de sumar los números existentes en el archivo. Finalmente, mediante la función

obtenerArrNum obtén el array, recórrelo y muestra cada uno de los elementos del array.

Page 241: Hp_ Tutorial Básico Del Programador Web

fwrite PHP. Lectura y escritura fichero txt.

Modo acceso. PHP_EOL salto de línea.

Ejercicio ejemplo (CU00837B)

Escrito por Enrique González

Resumen: Entrega nº37 del Tutorial básico del programador web: PHP desde

cero.

Codificación aprenderaprogramar.com: CU00837B 

 

 

LECTURA Y ESCRITURA DE ARCHIVOS DE TEXTO CON PHP.

En esta ocasión veremos unos ejemplos prácticos de lectura y escritura de ficheros de texto

usando PHP. El primer lugar, debemos crear un archivo de texto (con cualquier editor,

notepad por ejemplo, aunque también puede valer el bloc de notas de Windows) con algunas

líneas de texto.

 

 

LECTURA DE FICHEROS

Para leer un archivo de texto línea a línea en PHP vamos a utilizar la función fgets(). Por

ejemplo si queremos leer línea por línea el archivo 'archivo.txt' que se encuentra ubicado en

la misma carpeta que el archivo 'leer.php', tenemos que escribir en el archivo PHP:

<?php //Ejemplo aprenderaprogramar.com

$file = fopen("archivo.txt", "r");

while(!feof($file)) {

echo fgets($file). "<br />";

}

Page 242: Hp_ Tutorial Básico Del Programador Web

fclose($file);

?>

 

 

Como podemos observar, lo primero que debemos hacer es abrir el fichero 'archivo.txt' y

luego ir leyendo línea a línea hasta llegar al final. Recordemos que “r” es el modo de

apertura que abre el archivo sólo para lectura. La lectura comienza al inicio del archivo.

Después cerramos el fichero.

Con esto conseguiremos mostrar por pantalla el contenido del fichero 'archivo.txt' tal y como

podemos ver en la siguiente imagen de ejemplo.

 

 

El contenido del fichero de texto “archivo.txt” se supone que era el siguiente:

Prueba de escritura de aprenderaprogramar.com

esto es una linea de texto

Page 243: Hp_ Tutorial Básico Del Programador Web

esto es una linea de texto

esto es una linea de texto

esto es una linea de texto

esto es una linea de texto

fin de la prueba de aprenderaprogramar.com

 

 

Lo que hemos hecho con nuestro pequeño programa es ir extrayendo líneas mientras no se

detecta el final del fichero (feof). La condición while(!feof($file)) también podría haberse

escrito de esta otra manera: while(feof($file)==false), con lo que obtendríamos el mismo

resultado.

 

 

ESCRITURA DE FICHEROS

Para escribir un archivo de texto en PHP podemos utilizar la función fwrite(). Por ejemplo si

queremos escribir línea por línea un archivo 'archivo.txt' que se encuentre ubicado en la

misma carpeta que el archivo 'escribir.php', tenemos que escribir en el archivo PHP:

<?php //Ejemplo aprenderaprogramar.com, archivo escribir.php

$file = fopen("archivo.txt", "w");

fwrite($file, "Esto es una nueva linea de texto" . PHP_EOL);

fwrite($file, "Otra más" . PHP_EOL);

fclose($file);

?>

 

 

Page 244: Hp_ Tutorial Básico Del Programador Web

Nota: PHP_EOL (end of line) introduce un salto de línea en PHP. Mediante la concatenación

con un punto forzamos el salto de línea después del texto introducido.

Una vez escribimos en nuestro navegador la ruta del fichero escribir.php se ejecuta el código

asociado. Después de la ejecución, podemos ver el fichero creado con un editor de texto

cualquiera y observaremos el siguiente contenido:

 

 

Tener en cuenta que el modo de apertura de archivo que hemos usado es w. Si recordamos

el significado de este modo:

w: Abre el archivo sólo para escritura. La escritura comienza al inicio del archivo, y elimina el

contenido previo del archivo. Si el archivo no existe, intenta crearlo.

 

 

AÑADIR CONTENIDO A UN FICHERO DE TEXTO

A veces no queremos reemplazar el contenido que exista en un fichero de texto, sino añadir

un contenido adicional al final de lo que ya exista en el mismo. Vamos a ver cómo podemos

hacerlo.

A modo de ejemplo añadiremos unas líneas de texto al final del fichero anteriormente

escrito:

<?php //Ejemplo aprenderaprogramar.com

$file = fopen("archivo.txt", "a");

fwrite($file, "Añadimos línea 1" . PHP_EOL);

fwrite($file, "Añadimos línea 2" . PHP_EOL);

Page 245: Hp_ Tutorial Básico Del Programador Web

fclose($file);

?>

 

 

Tener en cuenta que el modo de apertura de archivo que hemos usado es a. Si recordamos el

significado de este modo:

a: Abre el archivo para sólo escritura. La escritura comenzará al final del archivo sin eliminar

el contenido previo existente. Si el fichero no existe se intenta crear.

 

Ahora podemos ver el fichero creado con un editor de texto cualquiera y observaremos el

siguiente contenido (no se ha reemplazado el contenido existente, sino que se ha ampliado):

 

 

Observamos que hemos añadido las dos nuevas líneas al final del archivo.

 

 

EJERCICIO

Crea el siguiente código PHP:

a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirNumerosMod

que reciba dos parámetros: un array de valores enteros y una cadena de texto que puede ser

Page 246: Hp_ Tutorial Básico Del Programador Web

"sobreescribir" ó "ampliar". La función debe proceder a: escribir cada uno de los números que

forman el contenido del array en una línea de un archivo datosEjercicio.txt usando el modo

de operación que se indique con el otro parámetro. Si el archivo no existe, debe crearlo.

Ejemplo: El array que se pasa es $numeros = array(5, 9, 3, 22); y la invocación que se utiliza

es escribirNumerosMod($numeros, "sobreescribir"); En este caso, se debe eliminar el

contenido que existiera previamente en el archivo y escribir en él 4 líneas, cada una de las

cuales contendrá los números 5, 9, 3 y 22.

b) Una función (tipo procedimiento, no hay valor devuelto) denominada leerContenidoFichero

que reciba como parámetro la ruta del fichero y muestre por pantalla el contenido de cada

una de las líneas del fichero.

c) Crea código php donde a través de la función escribirNumerosMod escribas en el fichero

los números 2, 8, 14. Luego, mediante la función leerContenidoFichero muestra el contenido

del fichero. Ahora con la función escribirNumerosMod amplía el contenido del fichero y

añádele los números 33, 11 y 16. Muestra nuevamente el contenido del fichero por pantalla.

Finalmente, escribe el fichero pasándole un array con los número 4, 99, 12 y parámetro

<<sobreescribir>> para eliminar los datos que existieran previamente. Muestra el contenido

del fichero por pantalla y un mensaje de despedida.

Extraer código fuente de página web con

PHP. Leer archivos completos:

file_get_contents y nl2br (CU00838B)

Escrito por Enrique González

Resumen: Entrega nº38 del Tutorial básico del programador web: PHP desde

cero.

Codificación aprenderaprogramar.com: CU00838B 

 

 

LECTURA ARCHIVOS DE TEXTO CON PHP USANDO LA FUNCIÓN

FILE_GET_CONTENTS.

Además de con la función fopen podemos realizar la lectura de ficheros de texto usando la

función file_get_contents de PHP. La lectura de ficheros usando esta función es relativamente

Page 247: Hp_ Tutorial Básico Del Programador Web

sencilla. Como podremos observar en los siguientes ejemplos y ejercicios, con dicha función

podremos leer archivos de texto sin necesidad de ir recorriéndolos línea a línea para obtener

su contenido.

 

 

FUNCIÓN FILE_GET_CONTENTS.

La sintaxis general a emplear es: file_get_contents($ruta_del_fichero);

Ejemplo: crea un archivo denominado archivo.txt con diferentes líneas de texto. Para

recuperar el contenido del archivo escribe este código php:

<?php //Ejemplo aprenderaprogramar.com

$texto = file_get_contents("archivo.txt");

echo $texto;

?>

 

 

 

Como podrás observar, el fichero es mostrado sin saltos de línea. Para convertir esos

caracteres de salto de línea a etiquetas <br /> que den lugar a que se visualice el salto de

línea en HTML y poder así, visualizarlos en un navegador, necesitamos usar la función nl2br.

 

Page 248: Hp_ Tutorial Básico Del Programador Web

 

FUNCIÓN NL2BR

La función nl2br convierte los saltos de línea a etiquetas <br /> con lo que podremos ver

esos saltos de línea en cualquier navegador. Para el ejemplo anterior podemos incluirla y así

poder ver los saltos de línea correctamente. Escribe este código en un archivo como

ejemplo1.php y visualiza el resultado.

<?php //Ejemplo aprenderaprogramar.com

$texto = file_get_contents("archivo.txt");

$texto = nl2br($texto);

echo $texto;

?>

 

 

 

OTROS USOS DE FILE_GET_CONTENTS

Como dato adicional, la función file_get_contents, puede obtener el contenido de una página

web en forma de código HTML, es decir, su código fuente. Para ello escribiremos la dirección

de la web como parámetro de la función.

 

Ejemplo.

Page 249: Hp_ Tutorial Básico Del Programador Web

<?php //Ejemplo aprenderaprogramar.com

$texto = file_get_contents("http://www.aprenderaprogramar.com");

echo $texto;

?>

 

 

 

Haciendo un uso más avanzado de esta función podrías hacer cosas como:

- Introducir un fragmento de código de otra página web dentro de tu propia página web. Para

ello extraerías el contenido usando esta función y seleccionarías aquella parte que quieres

mostrar dentro de tu página web.

- Hacer búsquedas de forma similar a como las hacen buscadores tipo Google o Yahoo. Una

vez capturada la información de la página, tendrías que analizarla y almacenarla en bases de

datos para darle el tratamiento que quisieras.

- Copiar el contenido de una web en otra web.

- Diversas aplicaciones adicionales.

 

Page 250: Hp_ Tutorial Básico Del Programador Web

 

EJERCICIO

Crea un fichero que lleve por nombre miArchivoDePrueba.txt e introduce en él el siguiente

texto:

Una base de datos es un sistema informático a modo de almacén.

En este almacén se guardan grandes volúmenes de información.

Por ejemplo, imaginemos que somos una compañía telefónica y deseamos tener

almacenados los datos personales y los números de teléfono de todos nuestros clientes,

que posiblemente sean millones de personas.

 

 

A continuación crea un archivo denominado ejemplo2.php donde usando la

funciónfile_get_contents recuperes en una variable el texto que se encuentra en ese fichero y

lo muestres en el navegador.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

 

EJERCICIO 2

Recupera el código fuente de tres páginas web diferentes y usando las funciones para

cadenas de php muestra por pantalla cuántas veces aparece la etiqueta <h1> en cada una

de ellas. Ejemplo de resultado a obtener: La etiqueta h1 aparece 34 veces en

aprenderaprogramar.com. La etiqueta h1 aparece 45 veces en elmercurio.cl. La etiqueta h1

aparece 88 veces en clarin.com

Page 251: Hp_ Tutorial Básico Del Programador Web

Cómo crear una base de datos MySQL para

webs PHP. Acceso al gestor phpMyAdmin

en hosting (CU00839B)

Escrito por Enrique González

Resumen: Entrega nº39 del Tutorial básico del programador web: PHP desde

cero.

Codificación aprenderaprogramar.com: CU00839B 

 

 

¿QUÉ ES UNA BASE DE DATOS?

Una base de datos, básicamente, es un lugar físico y software que permite almacenar,

modificar y eliminar información. Dicho sistema se suele denominar “servidor de base de

datos” y comercialmente existen distintas marcas comerciales o fabricantes de estos

sistemas como puede ser Oracle, MySQL, Microsoft SQL SERVER, etc.

 

Para tener una idea más precisa sobre qué es y para qué sirve una base de datos puedes

consultar la siguiente dirección:

http://www.aprenderaprogramar.com/index.php?

option=com_content&view=article&id=554:que-es-y-para-que-sirve-una-base-de-datos-

principales-tipos-oracle-mysql-sqlserver-postgre&catid=46:lenguajes-y-entornos&Itemid=163

 

 

CREAR UNA BASE DE DATOS MySQL EN NUESTRO SERVIDOR. CREAR UNA TABLA.

TIPOS DE DATOS BÁSICOS.

Page 252: Hp_ Tutorial Básico Del Programador Web

En primer lugar tendremos que acceder al Panel de Control de nuestro servidor. Para ello,

tendremos que teclear en nuestro navegador la dirección URL de acceso al panel de

administración e introducir el login y password. Si no dispones de servidor o no recuerdas

cómo acceder, cuestiones que hemos explicado anteriormente en este curso, vuelve a leer el

apartado 'ACCEDER VÍA PANEL DE CONTROL (CPANEL)' disponible en esta dirección web:

http://www.aprenderaprogramar.com/index.php?

option=com_content&view=article&id=529:crear-una-cuenta-de-hosting-gratuita-en-un-

servidor-php-y-acceder-via-cpanel-y-via-ftp-cu00813b&catid=70:tutorial-basico-programador-

web-php-desde-cero&Itemid=193

 

Una vez nos encontremos dentro del Panel de Control, se nos mostrará una pantalla con

distintas opciones. Ten en cuenta que el aspecto puede variar porque hay diversos tipos de

panel de control.

Page 253: Hp_ Tutorial Básico Del Programador Web

 

 

Dentro de un panel de control de un hosting suelen aparecer apartados como: Información de

la cuenta, Administración FTP, Correo electrónico, Bases de datos, etc.

Nosotros vamos a buscar el enlace a bases de datos ó al gestor de bases de datos

phpMyAdmin (en otros paneles este enlace aparece con el nombre webAdmin). Buscaremos

el enlace “phpMyAdmin”. Si hacemos click sobre dicho enlace, al no tener ninguna base de

datos creada nos mostrará un mensaje indicándonos que no existe ninguna base de datos

creada. Por tanto el primer paso que tenemos que dar es crear la base de datos (create

database).

Page 254: Hp_ Tutorial Básico Del Programador Web

 

 

Pulsaremos sobre la opción Create Database ó New Database para crear una nueva base de

datos. En otros servidores quizás sea necesario acceder a un apartado denominado “MySql”,

“Databases” o similar para poder acceder a crear una base de datos.

En el momento en que se nos pida, indicaremos un nombre para nuestra base datos (nombre

que tendremos que recordar) y haremos click en Create Database. Ten en cuenta que el

proceso puede ser ligeramente distinto según el hosting que estemos utilizando.

Page 255: Hp_ Tutorial Básico Del Programador Web

 

 

Una vez tengamos nuestra base de datos creada nos aparecerá un mensaje informativo y

podremos ver datos importantes para nosotros como el nombre de la base de datos (por

ejemplo el nombre de base de datos podría ser b7_10356956_nombreElegido):

 

 

En el hosting que estamos utilizando como ejemplo, el nombre de nuestra base de datos se

indica con nuestro identificador de usuario seguido del nombre que le pusimos a la base de

datos, es decir: b7_10356956_mibasededatos

Pero en otros hosting el nombre de la base de datos podrá crearse de forma diferente. El

nombre de la base de datos es algo que debemos apuntar pues nos hará falta más adelante.

Ahora para administrar la base de datos usaremos una aplicación denominada phpMyAdmin.

Se trata de una aplicación específicamente preparada para administración de bases de datos

MySql (MySql es uno de los sistemas de bases de datos gratuito más usados en todo el

mundo).

El acceso a base de datos suele estar protegido con nombre de usuario y password. Es

posible que el nombre de usuario y password para acceder a tu base de datos sea la misma

que para acceder al panel del hosting, pero también es posible que debas establecer un

usuario y password específicos.

Page 256: Hp_ Tutorial Básico Del Programador Web

 

 

EJERCICIO

Responde a las siguientes preguntas:

a) ¿Cómo se llama tu proveedor de hosting?

b) ¿Cuál es la dirección url raíz de que dispones en dicho hosting?

c) ¿Cuántas bases de datos te permite crear tu hosting?

d) ¿De qué panel de administración dispones en tu hosting (cPanel, Plesk, DirectAdmin, etc.)?

e) ¿Cuál es el nombre de la base de datos que has creado?

Crear tablas MySql con phpMyAdmin. Tipos

de datos básicos (Varchar, Int, Float).

Insertar filas. (CU00840B)

Escrito por Enrique González

Resumen: Entrega nº40 del Tutorial básico del programador web: PHP desde

cero.

Codificación aprenderaprogramar.com: CU00840B 

 

 

PHPMYADMIN PARA ADMINISTRAR BASES DE DATOS

En la entrega anterior del curso hemos creado una base de datos y para administrar la base

de datos usaremos la aplicación denominada phpMyAdmin, una aplicación específicamente

preparada para administración de bases de datos MySql. Para ir a phpMyAdmin pulsaremos

sobre el enlace 'phpMyAdmin'. En otros servidores es posible que haya que acceder de otra

manera.

Page 257: Hp_ Tutorial Básico Del Programador Web

 

 

Las bases de datos organizan la información en tablas. El primer paso que vamos a dar es

crear una tabla donde introducir algunos datos a modo de ejemplo. Pinchamos sobre el

nombre de la base de datos y la pantalla que se nos muestra a continuación nos permite

crear una tabla en dicha base de datos (si no te aparece esta opción pulsa en la pestaña

“Operaciones”). Nosotros vamos a suponer que queremos almacenar el nombre, apellidos,

dirección, teléfono, edad y altura de personas. Para ello crearemos una tabla que llamaremos

<<agenda>> con 6 columnas. Por tanto escribimos como nombre “agenda”, número de

columnas 6 y pulsamos continuar.

 

 

El siguiente paso es indicar los nombres y tipos de las columnas.

Page 258: Hp_ Tutorial Básico Del Programador Web

 

 

Los nombres de columnas que pondremos serán: nombre, apellidos, direccion, telefono, edad

y altura (escribimos estos nombres sin tildes). En tipo elegimos VARCHAR para todos las

columnas de tipo cadena de caracteres. El significado de VARCHAR podemos verlo como

“texto de longitud variable”. En vez de texto de longitud variable podríamos haber escogido

otro tipo de datos como números enteros, números autoincrementados de uno en uno para

los campos tipo identificador, fechas, etc. El campo edad lo ponemos de tipo número entero

(INT), mientras que el campo altura lo ponemos de tipo número decimal (FLOAT). De

momento no nos interesa saber más y, por tanto, con las cuatro columnas tipo VARCHAR,

una columna tipo entero y otra columna tipo flotante, es más que suficiente para nuestro

objetivo (en este curso no vamos a tratar MySQL más que en aspectos básicos para

comprender cómo interacciona con PHP). Como longitud/valores para los tipos de datos

VARCHAR pondremos 100 que será la longitud máxima en caracteres que podrán ocupar las

columnas.

En resumen, al introducir estos datos hemos declarado que vamos a crear una tabla con seis

columnas, denominadas nombre, apellidos, direccion, telefono, edad y altura. El número de

filas no está determinado. Además los datos que se almacenen no podrán tener más de 100

caracteres de longitud para los tipos VARCHAR.

Page 259: Hp_ Tutorial Básico Del Programador Web

Para finalizar la creación de la tabla 'agenda', pulsamos sobre Guardar y finalizaremos el

proceso. La tabla creada podemos verla como algo similar a esto:

nombre apellidos direccion telefono edad altura

 

 

Como vemos ahora la tabla está vacía porque todavía no hemos introducido ningún dato.

Una vez creada la tabla 'agenda' introduciremos algunos datos de prueba. Para ello,

pulsaremos sobre el nombre de la tabla (fíjate que en el lateral izquierdo de phpMyAdmin

existe una especie de navegador que nos permite elegir la tabla a la que queremos ir). Una

vez seleccionada una tabla, veremos que hay varias pestañas (Estructura, SQL, Insertar,

Exportar, Importar, Operaciones). Fíjate en la parte de arriba y verás que te indica el nombre

de la base de datos y la tabla en que te encuentras. Pulsaremos sobre la pestaña 'Insertar'

para acceder a introducir los datos para una fila de nuestra tabla.

 

 

Nos aparecerá una imagen similar a la siguiente. Nos indica un nombre de columna y los

valores para una fila (nombre, apellidos, direccion, telefono). Añadiremos algunos datos de

prueba como: nombre “Manuel Jesús”, apellidos “López de la Rosa”, dirección “C/Juan

Bautista Nº 3”, telefono “658954875”, edad 32 y altura 1.80. Añadiremos también otros

datos como nombre “María”, apellidos “Manzano Cabezas”, direccion “C/Arco del triunfo Nº

7”, telefono 695001002, edad 19 y altura 1.99.

Page 260: Hp_ Tutorial Básico Del Programador Web

 

 

Después pulsaremos sobre continuar y ya tendremos los datos guardados en la tabla. Ahora

la tabla tendrá este aspecto:

nombre apellidos direccion telefono edad altura

Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80

María Manzano Cabezas C/Arco del triunfo Nº 7 695001002 19 1.99

 

 

Page 261: Hp_ Tutorial Básico Del Programador Web

Es muy habitual introducir en las tablas una columna denominada id que actúa como

identificador único de cada fila, aunque no es obligatorio (de hecho en este caso no la

tenemos).

A partir de aquí, podremos realizar consultas, insertar datos o borrar datos usando PHP tal y

como veremos en los próximos apartados del curso.

 

 

EJERCICIO

De la misma forma que has creado la tabla denominada agenda, crea otra tabla denominada

<<ciudades>> que conste de los siguientes 6 campos:

id ciudad pais habitantessuperficie

tieneMetro

 

 

Como tipo de dato para cada campo tendremos: id INT con índice PRIMARY y opción A_I

marcada (A_I significa auto-increment, este campo se incrementará en 1 ud cada vez que se

inserte una fila en la tabla), ciudad VARCHAR con largo máximo 80, pais VARCHAR con largo

máximo 50, habitantes BIGINT (entero largo), superficie DOUBLE (decimal largo), tieneMetro

BOOLEAN (valor booleano, verdadero o falso. Tener en cuenta que posiblemente esto se

refleje como tipo TinyInt: los valores posibles son 0 como equivalente a falso ó 1 como

equivalente a verdadero).

A continuación inserta los siguientes datos en la tabla:

id ciudad pais habitantes superficie tieneMetro

1 México D.F. México 555666 23434.34 1

2 Barcelona España 444333 1111.11 0

3 Buenos Aires Argentina 888111 333.33 1

Page 262: Hp_ Tutorial Básico Del Programador Web

4 Medellín Colombia 999222 888.88 0

5 Lima Perú 999111 222.22 0

6 Caracas Venezuela 111222 111.11 1

7 Santiago Chile 777666 222.22 1

8 Antigua Guatemala 444222 877.33 0

9 Quito Ecuador 333111 999.11 1

10 La Habana Cuba 111222 333.11 0

 

 

Visualiza el contenido de la tabla y comprueba que es correcto conforme a lo esperado.

PHP: consultas MySql. mysqli_connect,

select_db, query, fetch_array, free_result,

close. Ejemplos (CU00841B)

Escrito por Enrique González

Resumen: Entrega nº41 del Tutorial básico del programador web: PHP desde

cero.

Codificación aprenderaprogramar.com: CU00841B 

 

 

USO DE PHP CON MySQL. CONSULTAS BÁSICAS

Estas próximas entregas no pretenden ser un manual de MySQL aunque sí explicaremos

como realizar consultas básicas desde PHP. Veremos algunas funciones básicas para acceder

a una base de datos MySQL desde PHP para recuperar información, insertar información o

borrar información.

Page 263: Hp_ Tutorial Básico Del Programador Web

 

 

Describiremos una serie de funciones básicas que nos servirán para ilustrar cómo utilizar PHP

para realizar consultas a una base de datos: añadir nuevos registros, actualizar registros,

borrar registros, etc. No vamos a estudiar en profundidad las bases de datos ni el lenguaje

SQL. Vamos a tratar de ser prácticos, conocer algunas funciones para acceder a bases de

datos con PHP y aprender a usarlas a través de ejemplos.

Una cuestión a comentar es que el acceso a base de datos con PHP admite dos formas

distintas: las funciones tipo mysql, por ejemplo mysql_connect, son las más antiguas, cuyo

uso se desaconseja si se está trabajando con un servidor con una versión de MySql moderna.

Las funciones tipo mysqli, por ejemplo mysqli_connect, son las más modernas, cuyo uso se

recomienda siempre que se esté trabajando con servidores actualizados. Las funciones

mysqli pueden escribirse de dos formas: con estilo orientado a objetos o con estilo por

procedimientos. Nosotros vamos a ver cómo usar estas funciones con el estilo por

procedimientos, que es más sencillo inicialmente.

 

 

FUNCIÓN mysqli_connect (mysql_connect)

Esta función nos permite crear una conexión con una base de datos concreta.

La sintaxis que usaremos para esta función es:

$nombreConexion = mysqli_connect($hostname , $nombreUsuario , $contraseña);

Para servidores no actualizados usar mysql_connect en lugar de mysqli_connect

 

 

Page 264: Hp_ Tutorial Básico Del Programador Web

La función devuelve una conexión almacenada en la variable $nombreConexion, o FALSE en

caso de error. Los parámetros que hemos indicado son:

$hostname es un nombre de servidor (dato que debemos consultar en nuestra cuenta de

hosting).

$nombreUsuario es el nombre de usuario de base de datos, nombre que habremos

especificado al crear la base de datos (si no lo hemos hecho, puede ser el mismo que para

acceder a cPanel ó root).

$contraseña es la contraseña de acceso para el usuario de base de datos, contraseña que

habremos especificado al crear la base de datos (si no lo hemos hecho, puede ser la misma

que para acceder a cPanel ó root).

Esta función la entenderemos mejor con el ejemplo que veremos más adelante.

 

 

FUNCIÓN mysqli_close (mysql_close)

Esta función nos permite cerrar la conexión con una base de datos anteriormente abierta.

Siempre es recomendable cerrar una conexión cuando hayamos terminado de usarla.

La sintaxis que usaremos es:

mysqli_close($nombreConexión);Para servidores no actualizados usar mysql_close en lugar de mysqli_close

 

 

La función devuelve TRUE si se ha cerrado correctamente ó FALSE en caso de errror.

El identificador o nombre de conexión será aquel que hayamos obtenido previamente usando

la función mysqli_connect.

Esta función la entenderemos mejor con el ejemplo que veremos más adelante.

Page 265: Hp_ Tutorial Básico Del Programador Web

 

 

FUNCIÓN mysqli_select_db (mysql_select_db)

Esta función nos permite seleccionar una base de datos concreta dentro de todas las

existentes en el servidor al que nos conectemos.

La sintaxis que vamos a emplear es:

mysqli_ select_db ($nombreConexión, $nombreBaseDatos);Para servidores no actualizados usar mysql_select_db ($nombreBaseDatos, $nombreConexión);

 

 

La función devuelve TRUE si se ha realizado la selección correctamente ó FALSE en caso de

errror.

El nombre de conexión será aquel que hayamos obtenido previamente con la función

mysqli_connect.

Esta función la entenderemos mejor con el ejemplo que veremos más adelante.

 

 

FUNCIÓN mysqli_query (mysql_query)

Esta función nos permite ejecutar una consulta a la base de datos que especifiquemos.

La sintaxis que emplearemos es:

$result = mysqli_query($nombreConexion, "Consulta aquí"); ó mysqli_query($nombreConexion, $query);Para servidores no actualizados usar $result = mysql_query("Consulta aquí", $nombreConexion);

Page 266: Hp_ Tutorial Básico Del Programador Web

 

 

Donde "Consulta aquí" se refiere a una consulta realizada utilizando el lenguaje SQL de

consultas a bases de datos, por ejemplo una consulta puede ser "SELECT * FROM agenda",

que podría traducirse como “selecciona todas las filas de la tabla agenda”.

Esta función devuelve TRUE o FALSE para indicar si las operaciones UPDATE, INSERT o

DELETE han tenido éxito. Para la operación SELECT devuelve un nuevo identificador de

resultado. UPDATE significa “actualizar”, INSERT significa “insertar” y DELETE significa

“BORRAR”. SELECT significa “seleccionar”.

El nombre de conexión será aquel que hayamos obtenido previamente con la función

mysqli_connect.

Esta función la entenderemos mejor con el ejemplo que veremos más adelante.

 

 

RECUPERAR UN RESULTADO: DATA_SEEK, FETCH_ASSOC (MYSQL_RESULT)

Una sentencia de consulta normalmente devuelve “un conjunto de resultados” que según el

ejemplo de sintaxis anterior tendríamos en una variable denominada $result. Por ejemplo,

podríamos tener como resultados de una consulta lo siguiente:

nombre apellidos direccion telefono edad altura

Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80

María Manzano Cabezas C/Arco del triunfo Nº 7 695001002 19 1.99

 

 

La cuestión que nos planteamos ahora es: ¿Cómo extraer el dato de una celda concreta? Por

ejemplo el nombre de la primera fila?

Page 267: Hp_ Tutorial Básico Del Programador Web

Para ello, usando la sintaxis mysqli escribiríamos esto:

mysqli_data_seek ($result, numeroDeFila); ó también válido $result->data_seek(numeroDeFila);$extraido= mysqli_fetch_array($result); ó también válido $extraido=$result->fetch_array();

 

 

Aquí estamos dando dos pasos: una sentencia como mysqli_data_seek ($result, 0);

significaría “posiciónate en la fila 0 de los resultados” (la primera fila). También es válido

escribir $result->data_seek(0); que tiene el mismo efecto. Si escribiéramos $result-

>data_seek(15); signficaría “posiciónate en la fila 16 de los resultados” (tener en cuenta que

se empieza a contar por cero, de ahí que 0, 1, 2, … , 15 resulten 16 filas).

La sentencia $extraido= mysqli_fetch_array($result); indica que los valores existentes en la

fila se introduzcan en un array cuyos índices en principio pueden ser tanto asociativos (el

nombre de la columna) como numéricos (empezanso por cero). Por ejemplo si la primera

columna en la tabla de la base de datos es <<ciudad>> podemos usar $extraido['ciudad']

para acceder al valor existente en la fila con la que estemos trabajando para la columna

ciudad. Igualmente podríamos usar $extraido[0] para referirnos a la primera columna,

$extraido[1] para referirnos a la segunda columna, $extraido[2] para referirnos a la tercera

columna y así sucesivamente.

 

 

Sintaxis mysql: mysql_result

En servidores no actualizados se puede usar la función mysql_result aunque al no pertenecer

a la serie de funciones mysqli no está recomendado su uso.

La sintaxis es: mysql_result($result, $numeroDeFila, "identificadorDeLaColumna");

Esta función nos devuelve el contenido de la celda en la fila y columna indicadas en forma de

string (cadena de caracteres) en caso de éxito, o FALSE en caso de error.

$result es el resultado obtenido previamente con una invocación a la función mysql_query.

Page 268: Hp_ Tutorial Básico Del Programador Web

numeroDeFila es un número de fila dentro del resultado obtenido teniendo en cuenta que los

números de fila se cuentan empezando desde cero.

identificadorDeLaColumna puede ser el índice del campo (por ejemplo 0), el nombre del

campo (por ejemplo ciudad), o el nombre de la tabla punto nombre del campo (por ejemplo

agenda.ciudad)

Finalmente, se puede especificar el nombre del campo que queremos extraer dentro de la

fila (esto es opcional). Esta función la entenderemos mejor con el ejemplo que veremos a

continuación.

 

 

EJEMPLO DE USO DE LAS FUNCIONES ANTERIORES.

Escribe este código en un editor y guárdalo en un archivo de nombre ejemplo1.php (recuerda

que antes debes haber creado la base de datos y creado datos de ejemplo como hemos visto

anteriormente). Recuerda también que debes cambiar y poner tus propios valores en las

funciones mysqli_connect y mysqli_select_db.

<html><head><meta charset="utf-8"></head>

<body>

<?php

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysqli_select_db($link, "b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes

$result = mysqli_query($link, "SELECT * FROM agenda");

mysqli_data_seek ($result, 0);

$extraido= mysqli_fetch_array($result);

echo "- Nombre: ".$extraido['nombre']."<br/>";

echo "- Apellidos: ".$extraido['apellidos']."<br/>";

echo "- Dirección: ".$extraido['direccion']."<br/>";

echo "- Teléfono: ".$extraido['telefono']."<br/>";

echo "- Edad: ".$extraido['edad']."<br/>";

mysqli_free_result($result);

Page 269: Hp_ Tutorial Básico Del Programador Web

mysqli_close($link);

?>

</body></html>

 

 

El código con la sintaxis que no usa mysqli (no recomendado) sería:

<html>

<body>

<?php

$link = mysql_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysql_select_db("b7_10356956_mibasededatos", $link);

mysql_query("SET NAMES 'utf8'"); //Para que se muestren las tildes

$result = mysql_query("SELECT * FROM agenda", $link);

echo"Nombre: ".mysql_result($result, 0, "nombre")."<br>";

echo"Apellidos: ".mysql_result($result, 0, "apellidos")."<br>";

echo"Dirección: ".mysql_result($result, 0, "direccion")."<br>";

echo"Teléfono:".mysql_result($result, 0, "telefono")."<br>";

echo"Edad:".mysql_result($result, 0, "edad")."<br>";

echo"Altura:".mysql_result($result, 0, "altura")."<br>";

mysql_free_result($result);

mysql_close($link);

?>

</body></html>

 

 

Page 270: Hp_ Tutorial Básico Del Programador Web

En este código lo que hemos hecho es usar las funciones vistas anteriormente y la base de

datos y tablas que creamos en anteriores apartados del curso. Con todo ello lo que hacemos

es realizar una consulta a la base de datos y mostrar los resultados por pantalla.

Interpretemos las líneas que hemos escrito:

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

Con esta línea introducimos el identificador de conexión en una variable denominada $link.

Invocamos la función mysqli_connect pasándole como parámetros el nombre del hosting, el

nombre de usuario y la contraseña. Estos datos debemos conocerlos (o consultarlos)

previamente.

 

mysqli_select_db($link, "b7_10356956_mibasededatos");

Con esta línea seleccionamos la base de datos pasándole a la función como parámetros el

identificador de conexión (que hemos obtenido y guardado en una variable previamente) y el

nombre de base de datos.

 

$result = mysqli_query($link, "SELECT * FROM agenda");

Con esta línea seleccionamos todos los registros (filas) y campos (columnas) existentes en

nuestra base de datos. Para seleccionar todos los registros escribimos SELECT *. A

continuación indicamos la tabla de la cual queremos obtener dichos registros y esto lo

expresamos con la sintaxis FROM agenda, siendo agenda el nombre de la tabla en la base de

datos. En la llamada a la función incluirmos el identificador de conexión que hemos obtenido

previamente.

 

Con la sentencia mysqli_data_seek ($result, 0); nos posicionamos en la primera fila (fila cero)

de los resultados de la consulta.

Con la sentencia $extraido= mysqli_fetch_array($result); introducimos en un array al que

denominamos $extraido los datos de la fila cero obtenidos de la consulta.

Finalmente mostramos por pantalla los resultados.

Page 271: Hp_ Tutorial Básico Del Programador Web

En la versión que no usa mysqli (no recomendada) con la sentencia mysql_result($result, 0,

"nombre") obtenemos el campo “nombre” del primer registro (registro 0) del resultado de la

consulta que hemos almacenado previamente en $result.

El resultado de invocar el archivo que hemos creado será que se nos muestre por pantalla el

nombre, apellidos, dirección, teléfono, edad y altura almacenados en la primera fila de

nuestra base de datos. Algo similar a esto:

 

 

Resumiendo lo que hemos hecho, hemos usado la función mysqli_connect(), que abre una

conexión con el servidor MySQL en el Host especificado (en este ejemplo la máquina donde

está alojada el servidor MySQL es sql203.byethost7.com, pero tú tendrás que introducir tu

propio dato). También hemos especificado un usuario (b7_10356956 en este ejemplo, pero tú

tendrás que introducir tu propio dato), y un password para el usuario indicado (tendrás que

escribir tu password de usuario de base de datos).

Si la conexión ha tenido éxito, la función mysqli_connect() devuelve un identificador de dicha

conexión  que es almacenado en la variable $link. Si no tuviera éxito, devuelve 0 (FALSE).

Con mysqli_select_db() PHP le hemos dicho al servidor que en la conexión $link nos

queremos conectar a la base de datos indicada.

La siguiente función mysqli_query(), usando el identificador de la conexión ($link), envía una

instrucción SQL al servidor MySQL para que éste la procese. El resultado de ésta operación es

almacenado en la variable $result.

Page 272: Hp_ Tutorial Básico Del Programador Web

Finalmente, elegimos la fila de resultados cero con mysqli_data_seek ($result, 0); y

guardamos los resultados de esa fila en un array con $extraido= mysqli_fetch_array($result);

. Si quisiéramos mostrar los siguientes registros tendríamos que incluir instrucciones con los

números 1, 2, …

La sentencia mysqli_free_result($result); libera la conexión establecida con la base de datos.

La sentencia mysqli_close($link); cierra la conexión con la base de datos.

 

*Nota: Si tenemos algún problema en localizar la información de nuestro proveedor (nombre

de base de datos, usuario, etc.). recordar que dicha información normalmente está

disponible en el panel de control del servidor (cpanel o similar) tal y como vimos en entregas

anteriores.

Page 273: Hp_ Tutorial Básico Del Programador Web

 

 

En el panel de control que estamos usando nosotros para este ejemplo, si bajamos con el

scroll hacia abajo, después de la información ftp que nos aparece marcada con un recuadro

rojo, aparecerá la información relativa al servidor de base de datos. Si estás utilizando otro

panel de control, tendrás que buscar el lugar específico donde figura esta información.

 

 

EJERCICIO

Utilizando la tabla <<ciudades>> que hemos creado para el ejercicio de la entrega anterior

del curso, cuyo contenido era:

id ciudad pais habitantes superficie tieneMetro

1 México D.F. México 555666 23434.34 1

2 Barcelona España 444333 1111.11 0

3 Buenos Aires Argentina 888111 333.33 1

4 Medellín Colombia 999222 888.88 0

5 Lima Perú 999111 222.22 0

6 Caracas Venezuela 111222 111.11 1

7 Santiago Chile 777666 222.22 1

8 Antigua Guatemala 444222 877.33 0

9 Quito Ecuador 333111 999.11 1

10 La Habana Cuba 111222 333.11 0

 

Page 274: Hp_ Tutorial Básico Del Programador Web

 

Crea un archivo php donde se realice una consulta a la base de datos para extraer todos los

datos de la tabla y a continuación muestra por pantalla los valores de país y ciudad de cada

fila.

Ejemplo de resultados a obtener:

Los resultados de la consulta a la base de datos son los siguientes:

País: México --- Ciudad: México D.F.

País: España --- Ciudad: Barcelona

País: Argentina --- Ciudad: Buenos Aires

País: Cuba --- Ciudad: La Habana

Ejemplo consulta PHP MySql. SELECT. Bucle

while, mysqli_fetch_array: recorrer

resultados query (CU00842B)

Escrito por Enrique González

Resumen: Entrega nº42 del Tutorial básico del programador web: PHP desde

cero.

Codificación aprenderaprogramar.com: CU00842B 

 

 

CONSULTAS MEJORADAS A BASE DE DATOS MySQL CON PHP.

Ahora que conocemos de una forma básica como interactuar con una base de datos MySQL

haciendo uso de distintas funciones o instrucciones PHP, vamos a profundizar un poco más

en dichas consultas para, por ejemplo, recorrer todos los registros de la tabla agenda y

Page 275: Hp_ Tutorial Básico Del Programador Web

visualizarlos de manera correcta (recordar que en apartados anteriores del curso sólo se

mostraban los valores para el primer registro que se encontraba en la base de datos).

 

 

Para conseguir nuestro objetivo nos basaremos en el mismo código que ya hemos utilizado

anteriormente y realizaremos una serie de cambios.

Para empezar, añade algunas filas más a la tabla agenda de la base de datos para que quede

así:

nombre apellidos direccion telefono edad altura

Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80

María Manzano Cabezas C/Arco del triunfo Nº 7 695001002 19 1.99

Pedro Somoza Castro C/Solera nº88, B 88834321 44 1.66

Juana Pérez Rozas Avda. Luarcato nº22 888111222 22 1.77

 

 

Lo primero que vamos a tratar de ver es cómo una invocación de mysqli_fetch_array

devuelve un registro (una fila) de los resultados obtenidos en una consulta a la tabla de la

base de datos. ¿Qué fila de los resultados es la que nos devuelve? Si la fila ha sido

establecida usando mysqli_data_seek, nos devolverá la fila que hayamos especificado. Si no

usamos mysqli_data_seek nos devuelve la primera fila de los resultados.

Si mysqli_fetch_array vuelve a ser invocada sin especificar la fila a extraer, devuelve el

siguiente registro o fila, siguiendo el orden que tienen los resultados de la consulta. Decimos

que mysqli_fetch_array tiene vinculado un puntero o referencia a la fila que debe devolver.

Este puntero o referencia puede definirse usando data seek, o en caso de no definirse, es

Page 276: Hp_ Tutorial Básico Del Programador Web

inicialmente 0 (lo que significa que nos devolverá inicialmente la fila 0). Una vez invocada

mysqli_fetch_array y devueltos los resultados de la fila 0, el puntero queda apuntando al

siguiente registro, es decir, a la fila 1.   Este proceso puede repetirse tantas veces como se

desee y por cada llamada mysqli_fetch_array va avanzando una fila. Cuando ya no existen

más filas en los resultados de la consulta la función devuelve NULL (no hay resultados).

Para comprender el funcionamiento que hemos descrito ejecuta este código (que podemos

denominar “bruto”, pero no te preocupes ahora por la eficiencia del código, céntrate en

entender el funcionamiento de mysqli_fetch_array). Recuerda que debes cambiar los datos

relacionados con la base de datos (nombre de servidor, nombre de base de datos, usuario,

password) y escribir los que estés usando tú.

<html><head><meta charset="utf-8"> </head>

<body>

<?php

//Ejemplo aprenderaprogramar.com

function mostrarDatos ($resultados) {

if ($resultados !=NULL) {

echo "- Nombre: ".$resultados['nombre']."<br/> ";

echo "- Apellidos: ".$resultados['apellidos']."<br/>";

echo "- Dirección: ".$resultados['direccion']."<br/>";

echo "- Teléfono: ".$resultados['telefono']."<br/>";

echo "- Edad: ".$resultados['edad']."<br/>";}

else {echo "<br/>No hay más datos: <br/>".$resultados;}

}

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysqli_select_db($link, "b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente

$result = mysqli_query($link, "SELECT * FROM agenda");

$extraido1= mysqli_fetch_array($result);

mostrarDatos($extraido1);

$extraido2= mysqli_fetch_array($result);

mostrarDatos($extraido2);

$extraido3= mysqli_fetch_array($result);

mostrarDatos($extraido3);

Page 277: Hp_ Tutorial Básico Del Programador Web

$extraido4= mysqli_fetch_array($result);

mostrarDatos($extraido4);

$extraido5= mysqli_fetch_array($result);

mostrarDatos($extraido5);

$extraido6= mysqli_fetch_array($result);

mostrarDatos($extraido6);

mysqli_free_result($result);

mysqli_close($link);

?>

</body></html>

 

 

En este ejemplo sólo tenemos cuatro registros. Si tuviéramos más registros el listado se

alargaría para mostrarlos todos ellos. ¿Qué ocurre si la información existente en base de

datos comprende muchos registros? En este caso la información se habrá almacenado en

memoria y esto consume recursos del sistema. Para liberar esta memoria se utiliza la

instrucción mysqli_free_result($result);

Escribe ahora este código y fíjate cómo hemos sintetizado el proceso eliminando variables

auxiliares. Recuerda que debes cambiar los datos relacionados con la base de datos (nombre

de servidor, nombre de base de datos, usuario, password) y escribir los que estés usando tú.

<html><head><meta charset="utf-8"> </head>

<body>

<?php

//Ejemplo aprenderaprogramar.com

function mostrarDatos ($resultados) {

if ($resultados !=NULL) {

echo "- Nombre: ".$resultados['nombre']."<br/> ";

echo "- Apellidos: ".$resultados['apellidos']."<br/>";

echo "- Dirección: ".$resultados['direccion']."<br/>";

Page 278: Hp_ Tutorial Básico Del Programador Web

echo "- Teléfono: ".$resultados['telefono']."<br/>";

echo "- Edad: ".$resultados['edad']."<br/>";}

else {echo "<br/>No hay más datos!!! <br/>";}

}

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysqli_select_db($link, "b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente

$result = mysqli_query($link, "SELECT * FROM agenda");

mostrarDatos(mysqli_fetch_array($result));

mostrarDatos(mysqli_fetch_array($result));

mostrarDatos(mysqli_fetch_array($result));

mostrarDatos(mysqli_fetch_array($result));

mostrarDatos(mysqli_fetch_array($result));

mostrarDatos(mysqli_fetch_array($result));

mysqli_free_result($result);

mysqli_close($link);

?></body></html>

 

 

Fíjate como mysqli_fetch_array($result) nos devuelve un array con los datos de una fila de las

obtenidas como resultado y cada vez que lo invocamos nos devuelve la siguiente fila hasta

que ya no existen más filas de resultados, momento en que nos devuelve NULL o vacío.

Con una expresión como mostrarDatos(mysqli_fetch_array($result)); estamos pasándole a la

función mostrarDatos el array que nos devuelve mysqli_fetch_array. Si la consulta nos ha

devuelto 4 filas, podemos hacer 4 invocaciones obteniendo en cada invocación una fila. En la

quinta invocación, ya obtenemos NULL (vacío) como resultado.

 

 

USO DE WHILE PARA EXTRAER TODOS LOS RESULTADOS DE UNA CONSULTA

Page 279: Hp_ Tutorial Básico Del Programador Web

Hasta ahora hemos tratado de comprender el funcionamiento de mysqli_fetch_array. Pero

obviamente ir recuperando resultados uno a uno no resulta eficiente. Piensa que el resultado

de una consulta pueden ser cientos o miles de filas y no sería eficiente escribir línea a línea

una extracción de datos.

Vamos a recurrir por tanto a crear un bucle de forma que se extraigan de forma

automatizada todos los registros que nos devuelve una consulta.

La sintaxis que emplearemos es de este tipo:

while ($fila = mysqli_fetch_array($result)){

// Operaciones con los resultados que tenemos en $fila

}

 

 

Esta expresión es una forma compacta donde se hacen varias cosas al mismo tiempo. Por un

lado, se ejecuta $fila = mysqli_fetch_array($result) con lo cual $fila toma un valor que puede

ser un array resultado ó vacío.

Luego se evalúa el while. while ($variable) lo que hace es entrar al bucle si $variable existe

(no está vacío). while ($fila = mysqli_fetch_array($result)) da lugar a la entrada al bucle

mientras no se hayan extraído todas las filas del resultado.

Esta expresión sintética es útil porque nos permite recorrer muchas filas escribiendo un

mínimo de código. También podríamos escribir esto:

$hayResultados = true; //Forzamos la entrada al bucle

while ($hayResultados==true){

$fila = mysqli_fetch_array($result);

if ($fila) { //operaciones a realizar

} else {$hayResultados = false;}

}

 

Page 280: Hp_ Tutorial Básico Del Programador Web

O también esto:

while (($fila = mysqli_fetch_array($result))!=NULL){

//Operaciones a realizar

}

 

 

De las diversas alternativas planteadas la que requiere menos código y una vez se entiende

resulta más clara es while ($fila = mysqli_fetch_array($result)), por eso es la que vamos a

usar. Escribe el siguiente código y comprueba los resultados. Recuerda que debes cambiar

los datos relacionados con la base de datos (nombre de servidor, nombre de base de datos,

usuario, password) y escribir los que estés usando tú.

De una forma u otra cada vez que invocamos la función mysql_fetch_array($result)

obtenemos un array asociativo con índice del array los nombres de las columnas, por

ejemplo $fila['nombre'], $fila['apellidos'], $fila['direccion'], $fila['telefono'], $fila['edad'],

$fila['altura']. Si ya se han extraido todas las filas se produce la salida del bucle while. Los

programadores suelen llamar a la variable donde se van extrayendo los resultados $row (en

inglés, row es fila). Con mysql_fetch_array($result) también podemos acceder a través de

índices numéricos, por ejemplo $fila[0], $fila[1], $fila[2], $fila[3], $fila[4], $fila[5].

<html><head><meta charset="utf-8"> </head>

<body>

<?php

//Ejemplo aprenderaprogramar.com

function mostrarDatos ($resultados) {

if ($resultados !=NULL) {

echo "- Nombre: ".$resultados['nombre']."<br/> ";

echo "- Apellidos: ".$resultados['apellidos']."<br/>";

echo "- Dirección: ".$resultados['direccion']."<br/>";

echo "- Teléfono: ".$resultados['telefono']."<br/>";

echo "- Edad: ".$resultados['edad']."<br/>";

echo "**********************************<br/>";}

Page 281: Hp_ Tutorial Básico Del Programador Web

else {echo "<br/>No hay más datos!!! <br/>";}

}

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysqli_select_db($link, "b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente

$result = mysqli_query($link, "SELECT * FROM agenda");

while ($fila = mysqli_fetch_array($result)){

mostrarDatos($fila);

}

mysqli_free_result($result);

mysqli_close($link);

?></body></html>

 

El resultado esperado es que se muestren por pantalla todos los resultados de la consulta:

- Nombre: Manuel Jesús - Apellidos: López de la Rosa - Dirección: C/Juan Bautista Nº 3

- Teléfono: 658954875 - Edad: 32

**********************************

- Nombre: María - Apellidos: Manzano Cabezas - Dirección: C/Arco del triunfo Nº 7

- Teléfono: 695001002 - Edad: 19

**********************************

- Nombre: Pedro - Apellidos: Somoza Castro - Dirección: C/Solera nº88, B

- Teléfono: 88834321 - Edad: 44

**********************************

- Nombre: Juana - Apellidos: Pérez Rozas - Dirección: Avda. Luarcato nº22

- Teléfono: 888111222 - Edad: 22**********************************

 

 

Page 282: Hp_ Tutorial Básico Del Programador Web

SINTAXIS NO MYSQLI (NO RECOMENDADA)

Recordar que si estamos revisando código antiguo o en servidores no actualizados nos

podemos encontrar que no se usan las funciones de tipo mysqli sino las mysql. A modo de

ejemplo de cómo sería esta sintaxis, mostramos este código:

<html> // Ejemplo php con bases de datos aprenderaprogramar.com

<body>

<?php

$link = mysql_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysql_select_db("b7_10356956_mibasededatos", $link);

$result = mysql_query("SELECT * FROM agenda", $link);

// comienza un bucle que leerá todos los registros existentes

while($row = mysql_fetch_array($result)) {

// $row es un array con todos los campos existentes en la tabla

echo "<hr>";

echo "Nombre: ".$row['nombre']."<br>";

echo "Apellidos: ".$row['apellidos']."<br>";

echo "Dirección: ".$row['direccion']."<br>";

echo "Teléfono:".$row['telefono']."<br>";

echo "Edad:".$row['edad']."<br>";

echo "Altura:".$row['altura']."<br>";

} // fin del bucle de instrucciones

mysql_free_result($result); // Liberamos los registros

mysql_close($link); // Cerramos la conexion con la base de datos

echo "<hr>";

?>

</body>

</html>

 

 

EJERCICIO 1

Page 283: Hp_ Tutorial Básico Del Programador Web

Utilizando la tabla agenda que hemos empleado en los ejemplos y funciones para manejo de

cadenas PHP, realiza una consulta a la base de datos para extraer todos los nombres y

determina cuántos nombres en la base de datos empiezan por M.

Ejemplo de resultados a obtener: En la base de datos los nombres que empiezan por M son: 2

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

 

EJERCICIO 2

Utilizando la tabla <<ciudades>> que hemos utilizado para ejercicios de entregas anteriores

del curso, cuyo contenido era:

id ciudad pais habitantes superficie tieneMetro

1 México D.F. México 555666 23434.34 1

2 Barcelona España 444333 1111.11 0

3 Buenos Aires Argentina 888111 333.33 1

4 Medellín Colombia 999222 888.88 0

5 Lima Perú 999111 222.22 0

6 Caracas Venezuela 111222 111.11 1

7 Santiago Chile 777666 222.22 1

8 Antigua Guatemala 444222 877.33 0

9 Quito Ecuador 333111 999.11 1

10 La Habana Cuba 111222 333.11 0

 

Page 284: Hp_ Tutorial Básico Del Programador Web

Crea un archivo php donde se realice una consulta a la base de datos para extraer todos los

datos de la tabla y a continuación calcula la suma de habitantes de todos los países y

cuántas de estas ciudades tienen metro. Muestra el resultado por pantalla.

Ejemplo de resultados a obtener:

La suma de habitantes de México D.F., Barcelona, Buenos Aires, Medellín, Lima, Caracas,

Santiago, Antigua, Quito y La Habana es: 5663886 habitantes

De estas ciudades tienen metro: 5 ciudades.

 

PHP insert into values. Insertar datos

(registros, filas) en base de datos MySql.

Ejemplos y ejercicio (CU00843B)

Escrito por Enrique González

Resumen: Entrega nº43 del Tutorial básico del programador web: PHP desde

cero.

Codificación aprenderaprogramar.com: CU00843B 

 

 

INSERCIÓN DE DATOS CON PHP Y MySQL. EJEMPLOS Y EJERCICIOS RESUELTOS.

Vamos a explicar cómo insertar registros en nuestra base de datos MySQL a través de código

PHP. En concreto, añadiremos registros a la tabla agenda que habíamos creado previamente

con phpMyAdmin. Para ello tendremos que realizar lo que se denomina una consulta SQL de

inserción (insert into) e ir añadiendo tantos registros con sus correspondientes valores para

los campos como deseemos.

 

 

Page 285: Hp_ Tutorial Básico Del Programador Web

Partiremos de nuestra base de datos donde tenemos una tabla denominada agenda con los

siguientes datos:

nombre apellidos direccion telefono edad altura

Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80

María Manzano Cabezas C/Arco del triunfo Nº 7 695001002 19 1.99

Pedro Somoza Castro C/Solera nº88, B 88834321 44 1.66

Juana Pérez Rozas Avda. Luarcato nº22 888111222 22 1.77

 

 

Para realizar la inserción de datos vamos a utilizar una sintaxis de este tipo:

mysqli_query($link, "INSERT INTO nombreTabla VALUES (datoCol1, datoCol2, … datoColN)");

 

 

Donde mysqli_query indica que vamos a realizar una operación (en general se denominan

consultas, aunque en este caso la operación sea una inserción de datos), $link es el

identificador de conexión que hayamos obtenido con mysqli_connect, nombreTabla es el

nombre de la tabla en la cual vamos a realizar la inserción de datos y datoCol1, datoCol2, …,

datoColN representa los datos que vamos a insertar en la tabla. Tener en cuenta que

debemos indicar los datos en el mismo orden en que se encuentran las columnas en la tabla.

Por ejemplo para nuestra tabla agenda tendremos que seguir el orden: nombre, apellidos,

direccion, telefono, edad, altura (orden de las columnas).

 

 

Page 286: Hp_ Tutorial Básico Del Programador Web

EJEMPLO DE INSERCIÓN DE DATOS EN UNA TABLA

Escribe este código en un editor y guárdalo en un archivo con un nombre como

ejemplo1.php. Luego ejecuta el código (una sola vez, ten en cuenta que si lo ejecutas varias

veces insertarás varias veces repetidamente los datos en la base de datos). Recuerda

también que debes cambiar y poner tus propios valores en las funciones mysqli_connect y

mysqli_select_db.

<?php //Ejemplo curso PHP aprenderaprogramar.com

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysqli_select_db($link, "b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se inserten las tildes correctamente

mysqli_query($link, "INSERT INTO agenda VALUES ('Pedro2', 'Gómez Gómez', 'C/ Buenaventura 54', '699887766', 35,

1.98)");

mysqli_query($link, "INSERT INTO agenda VALUES ('Antonio2', 'Delgado Folken', 'C/ El Milagroso 77', '699667744',

88, 1.71)");

mysqli_close($link); // Cerramos la conexion con la base de datos

echo 'Los datos han sido insertados en la base de datos';?>

 

 

Nota: si usáramos sintaxis no mysqli se usaría mysql_query ("INSERT INTO nombreDeLaTabla

VALUES (datoCol1, datoCol2, … datoColN ", $link).

Tenemos que tener cuidado de poner los valores en el insert en el orden en el que aparecen

en la base de datos cuando creamos la tabla. Es decir, el primer valor será para la primera

columna (en nuestro ejemplo tipo varchar y corresponderá con el nombre), el segundo será

para la segunda columna (en nuestro ejemplo tipo varchar y se corresponderá con los

apellidos), etc. También tendremos que prestar atención para que los tipos de datos

insertados se correspondan con los de la tabla. Por ejemplo, no debemos insertar un valor

numérico decimal si se espera un entero.

Ahora vamos a ejecutar el código de la entrega anterior del curso para ver los nuevos

registros añadidos por pantalla. Escribe este código en un editor y guárdalo en un archivo

Page 287: Hp_ Tutorial Básico Del Programador Web

con un nombre como ejemplo2.php. Recuerda que debes cambiar y poner tus propios valores

en las funciones mysqli_connect y mysqli_select_db.

<html><head><meta charset="utf-8"> </head><body>

<?php //Ejemplo curso PHP aprenderaprogramar.com

function mostrarDatos ($resultados) {

if ($resultados !=NULL) {

echo "- Nombre: ".$resultados['nombre']."<br/> ";

echo "- Apellidos: ".$resultados['apellidos']."<br/>";

echo "- Dirección: ".$resultados['direccion']."<br/>";

echo "- Teléfono: ".$resultados['telefono']."<br/>";

echo "- Edad: ".$resultados['edad']."<br/>";

echo "**********************************<br/>";}

else {echo "<br/>No hay más datos!!! <br/>";}

}

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysqli_select_db($link, "b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente

$result = mysqli_query($link, "SELECT * FROM agenda");

while ($fila = mysqli_fetch_array($result)){ mostrarDatos($fila); }

mysqli_free_result($result); mysqli_close($link);

?></body></html>

 

 

El resultado esperado es que se muestren por pantalla todos los resultados de la consulta:

- Nombre: Manuel Jesús - Apellidos: López de la Rosa - Dirección: C/Juan Bautista Nº 3 - Teléfono: 658954875 - Edad: 32

**********************************

- Nombre: María - Apellidos: Manzano Cabezas - Dirección: C/Arco del triunfo Nº 7 - Teléfono: 695001002 - Edad: 19

**********************************

Page 288: Hp_ Tutorial Básico Del Programador Web

- Nombre: Pedro - Apellidos: Somoza Castro - Dirección: C/Solera nº88, B - Teléfono: 88834321 - Edad: 44

**********************************

- Nombre: Juana - Apellidos: Pérez Rozas - Dirección: Avda. Luarcato nº22 - Teléfono: 888111222 - Edad: 22

**********************************

- Nombre: Pedro - Apellidos: Gómez Gómez - Dirección: C/ Buenaventura 54 - Teléfono: 699887766 - Edad: 35

**********************************

- Nombre: Antonio - Apellidos: Delgado Folken - Dirección: C/ El Milagroso 77 - Teléfono: 699667744 - Edad: 88**********************************

 

 

Hemos visualizado el contenido de la base de datos usando una consulta y mostrando los

resultados por pantalla. Ten en cuenta que también puedes ver el contenido de la base de

datos accediendo directamente a ella. Accede al panel de administración de tu servidor,

luego a phpMyAdmin y comprueba cómo los nuevos valores insertados se encuentran en la

tabla de la base de datos.

Nota: los nuevos datos añadidos pueden aparecer al final o al principio de la tabla. Si

quisiéramos ver los datos con un determinado orden tendríamos que incluir las instrucciones

oportunas, pero no vamos a hablar de ello en este momento.

Vamos a resumir lo que hemos hecho: por un lado hemos accedido a la base de datos

mediante código PHP y hemos insertado dos nuevas filas (al ejecutar ejemplo1.php) en la

tabla agenda. Por otro lado visualizamos el contenido de la tabla agenda (ejemplo2.php)

realizando una consulta a la base de datos y comprobamos que aparecen los dos nuevos

registros añadidos, correspondientes a “Pedro Gómez Gómez” y “Antonio Delgado Folken”.

Las operaciones de inserción en bases de datos son muy frecuentes en programación web.

Ten en cuenta por ejemplo que cada vez que se registra un usuario en una página web hay

que guardar la información del usuario (nombre, correo electrónico, etc.). Igualmente cada

vez que se produce una compra mediante comercio electrónico hay que almacenar la

información de la compra en la base de datos. Es por tanto una operación básica y de gran

interés dentro de la programación con bases de datos.

 

Page 289: Hp_ Tutorial Básico Del Programador Web

 

EJERCICIO

Inserta en la tabla agenda de la base de datos que estamos utilizando los datos de una

persona cuyo nombre es Jesús Murillo Moreno, de 34 años, cuyo teléfono es 655221122, vive

en c/Pintor Murillo nº33, y tiene una altura de 1.67 metros. Presta atención al orden en que

debes introducir los datos. Una vez realizada la inserción, comprueba visualizando los

registros existentes en la tabla que la inserción se haya realizado correctamente. Luego

accede al panel de administración del servidor y a la base de datos con phpMyAdmin.

Visualiza los registros en la tabla y borra la fila correspondiente a Jesús Murillo Moreno

utilizando phpMyAdmin. Como puedes comprobar, podemos operar sobre la tabla tanto a

través de phpMyAdmin como a través de código PHP.

DELETE, TRUNCATE en PHP, MySql. Borrar

datos en tablas. Cláusula WHERE, SELECT.

Ejemplo (CU00844B)

Escrito por Enrique González

Resumen: Entrega nº44 del Tutorial básico del programador web: PHP desde

cero.

Codificación aprenderaprogramar.com: CU00844B 

 

 

BORRADO DE DATOS CON PHP Y MySQL.

Una tarea habitual con bases de datos será el tener que borrar cierta información. Vamos a

ver cómo realizar el borrado de ciertos registros que cumplan una condición y el borrado

completo de todos los registros (filas) de una tabla. Para ello utilizaremos dos expresiones

para operaciones (consultas) sobre bases de datos que describiremos a continuación: delete

y truncate.

 

Page 290: Hp_ Tutorial Básico Del Programador Web

 

SENTENCIA DELETE Y CLÁUSULA WHERE

La sentencia DELETE se suele usar para borrar unos registros de una tabla que cumplen una

o varias condiones. Vamos a utilizar una sintaxis de este tipo:

mysqli_query($link, " DELETE FROM nombreTabla WHERE columna (>, <, =, etc.) valorEspecificado ");

 

 

Aquí estamos empleando la cláusula WHERE que nos sirve para indicar una condición. Por

ejemplo DELETE FROM agenda WHERE altura > 1.90 significa “borrar todas las filas de la

tabla agenda en las que en la columna altura exista un valor mayor que 1.90”. Fíjate que al

indicar mayor (y no mayor o igual) una fila donde la altura sea exactamente 1.90 no será

borrada.

La cláusula WHERE también puede ser aplicada cuando hacemos consultas de tipo SELECT.

Por ejemplo en entregas anteriores del curso usamos SELECT * FROM agenda como consulta

que nos devolvía todas las filas de la tabla agenda. Si escribiéramos SELECT * FROM agenda

WHERE edad <= 35 obtendríamos como resultado todas las filas de la tabla agenda donde la

columna edad contiene un valor menor o igual a 35.

En una cláusula where podemos establecer una condición de igualdad (=) pero también

podremos usar otras condiciones como mayor (>), menor(<), mayor o igual (>=), menor o

igual (<=), y también condiciones múltiples y condiciones más complejas, pero no vamos a

entrar en detalles sobre esto ahora.

Igual que podemos hacer una consulta para obtener todas las filas de una tabla, también

podremos borrar todos los registros de una tabla en concreto y, para ello, sólo basta con

omitir las condiciones, es decir, hacer una consulta escribiendo lo siguiente: DELETE FROM

nombreTabla

Obviamente es peligroso hacer consultas de borrado de datos con bases de datos

importantes, ya que un error a la hora de escribir la consulta puede dar lugar a la pérdida de

datos. Nosotros estamos trabajando con una base de datos de pruebas, por lo que no nos

preocuparemos por esta cuestión.

Page 291: Hp_ Tutorial Básico Del Programador Web

 

 

EJEMPLO

Partiremos de nuestra base de datos donde tenemos una tabla denominada agenda con los

siguientes datos:

nombre apellidos direccion telefono edad altura

Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80

María Manzano Cabezas C/Arco del triunfo Nº 7 695001002 19 1.99

Pedro Somoza Castro C/Solera nº88, B 88834321 44 1.66

Juana Pérez Rozas Avda. Luarcato nº22 888111222 22 1.77

Pedro Gómez Gómez C/Buenaventura 54 699887766 35 1.98

Antonio Delgado Folken C/ El Milagroso 77 699667744 88 1.71

 

 

Para no afectar a esta tabla, vamos a duplicar la tabla. Esto lo podemos hacer manualmente,

pero también podemos hacerlo de forma automática con phpMyAdmin. Para ello accede al

panel de administración de tu servidor, luego a phpMyAdmin, pulsa sobre el nombre de la

base de datos y luego sobre la tabla. Ahora vete a la pestaña “Operaciones” y busca la

opción “Copiar la tabla a:”. Pon como nombre agenda2 y elige la opción “Copiar estructura y

datos”. Pulsa en continuar. Una vez hecho esto podrás comprobar que en la base de datos

tienes dos tablas: agenda y agenda2 (tabla que acabamos de copiar con los mismos datos

que teníamos en agenda).

Escribe este código en un editor y guárdalo en un archivo con un nombre como

ejemplo1.php. Ten en cuenta que deberás introducir los datos de tu propia base de datos

(nombre, user, etc.).

Page 292: Hp_ Tutorial Básico Del Programador Web

<?php //Ejemplo curso PHP aprenderaprogramar.com

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysqli_select_db($link, "b7_10356956_mibasededatos");

mysqli_query($link, "DELETE FROM agenda2 WHERE altura > 1.90");

mysqli_close($link); // Cerramos la conexion con la base de datos

echo 'Se ha ejecutado la consulta sobre la base de datos';?>

 

 

Ejecuta el código. Con este ejercicio borraremos los registros de la tabla agenda cuya altura

sea mayor que 1.90, es decir, en la tabla agenda dejará de haber personas con altura

superior a 1.90 porque habrán sido borrados.

Comprueba con phpMyAdmin que la tabla ha quedado así:

nombre apellidos direccion telefono edad altura

Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80

Pedro Somoza Castro C/Solera nº88, B 88834321 44 1.66

Juana Pérez Rozas Avda. Luarcato nº22 888111222 22 1.77

Antonio Delgado Folken C/ El Milagroso 77 699667744 88 1.71

 

 

SENTENCIA TRUNCATE

La sentencia TRUNCATE sirve para borrar todos los registros de una tabla, al igual que

hacíamos con la función DELETE sin condiciones, pero tiene algunas diferencias con ésta que

explicaremos más adelante.

Page 293: Hp_ Tutorial Básico Del Programador Web

La sintaxis a emplear es:

mysqli_query($link, "TRUNCATE TABLE nombreTabla");

 

 

Al igual que las operaciones de tipo DELETE, esta operación es peligrosa en el sentido de que

si se ejecuta erróneamente puede dar lugar a la pérdida de datos.

 

 

EJEMPLO

Escribe este código en un editor y guárdalo en un archivo con un nombre como

ejemplo2.php. Ten en cuenta que deberás introducir los datos de tu propia base de datos

(nombre, user, etc.). Ejecuta el código sobre la tabla agenda2 para proceder al borrado de

todas las filas de esta tabla.

<?php

//Ejemplo curso PHP aprenderaprogramar.com

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

mysqli_select_db($link, "b7_10356956_mibasededatos");

mysqli_query($link, "TRUNCATE TABLE agenda2");

mysqli_close($link);

// Cerramos la conexion con la base de datos

echo 'Se ha ejecutado la consulta TRUNCATE';?>

 

 

Page 294: Hp_ Tutorial Básico Del Programador Web

Con este código borraremos todos los registros de la tabla agenda. Accede a la tabla a través

de phpMyAdmin y comprueba que no existen registros.

¿Cuál es la diferencia entre usar delete sin condiones y usar truncate? Vamos a explicarla a

continuación.

 

 

DIFERENCIAS ENTRE DELETE Y TRUNCATE

a) Ambas eliminan los datos, no la estructura de la tabla.

b) Sólo DELETE permite la eliminación condicional de los registros (es decir, borrar sólo

ciertas filas), TRUNCATE no lo permite.

c) TRUNCATE es más rápida que DELETE.

d) TRUNCATE reiniciará el contador para una tabla que contenga una clave

autoincrementada. Si en nuestra tabla agenda tuviéramos un campo id autoincremental 1, 2,

3, 4, 5 … n (hasta el número de registros existentes) al hacer TRUNCATE el contador volverá

a empezar en 1. En cambio DELETE mantendrá el contador de la tabla para una clave

autoincrementada. Es decir, si borramos todos los registros de una tabla que tenía un campo

contador autoincremental cuyo último valor era 3257, al insertar un dato después del

borrado el valor del contador será 3258 en lugar de 1.

e) TRUNCATE recrea una tabla, es decir, la tabla desaparece completamente y luego es

creada de nuevo, mientras que DELETE no hace que desaparezca la tabla, sólo elimina sus

registros.

 

 

 

CUÁNDO USAR DELETE Y TRUNCATE

Usar TRUNCATE es más rapido que DELETE si vas a borrar toda una tabla y no te importan

los indices (claves autoincrementadas) o bien quieres resetearlos (hacer que vuelvan a

empezar desde 1).

Page 295: Hp_ Tutorial Básico Del Programador Web

Usar DELETE para borrados selectivos (borrar determinados registros manteniendo otros).

Hay otras cuestiones que se deben tener en cuenta, pero no te preocupes por esto ahora, lo

irás descubriendo a medida que avances en conocimientos de programación y bases de

datos.

 

 

EJERCICIO 1

Realiza una consulta y muestra por pantalla los datos correspondientes a filas de la tabla

agenda donde la edad sea mayor o igual que 20 y la altura sea mayor o igual que 1.75.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros

aprenderaprogramar.com.

 

 

EJERCICIO 2

Crea una tabla que sea copia de agenda a la que denomines agenda3 y un archivo php que

al ejecutarlo realice los siguientes procesos:

a) Mostrar el contenido inicial de la tabla agenda3 por pantalla.

b) Eliminar todos los registros de la tabla agenda3 cuyo campo edad sea mayor o igual a 34 y

mostrar el contenido actual de la tabla por pantalla.

c) Insertar dos nuevos registros en la tabla agenda3 (elige tú unos datos cualquiera) y

mostrar el contenido actual de la tabla por pantalla.

d) Eliminar todos los registros de la tabla agenda3 usando TRUNCATE y mostrar el contenido

actual de la tabla por pantalla.

e) Insertar tres nuevos registros en la tabla agenda3 (elige tú unos datos cualquiera) y

mostrar el contenido actual de la tabla por pantalla.

Page 296: Hp_ Tutorial Básico Del Programador Web

f) Eliminar todos los registros de la tabla agenda usando DELETE sin condiciones y mostrar el

contenido actual de la tabla por pantalla.

Final del curso: "Tutorial básico del

programador web: PHP desde cero"

(CU00845B)

Escrito por Enrique González

Resumen: Entrega nº45 del Tutorial básico del programador web: PHP desde

cero.

Codificación aprenderaprogramar.com: CU00845B 

 

 

FINAL DEL CURSO TUTORIAL

Con esta entrega llegamos al final del curso “Tutorial básico del programador web: PHP

desde cero”. Esperamos que haya sido un curso útil y ameno para todas las personas que lo

hayan seguido. Y como en todo final, cabe hacer algunas consideraciones especiales.