Programacion Con Php

46
PROGRAMACION CON PHP INDICE PRIMER MODULO Instalación y Configuración del servidor de aplicaciones Introducción a PHP - Introducción al mundo de las páginas web dinámicas con el lenguaje PHP. Variables - Con las variables es posible almacenar datos como números o textos. Mi primer script PHP - Empieza a trabajar con PHP. Operadores en PHP - Las primeras operaciones con PHP. Estructuras de control - Dotando de más dinamismo a nuestros scripts PHP. SEGUNDO MODULO Funciones en PHP - Las funciones son muy útiles para organizar y reutilizar nuestro código PHP. Inclusión de código desde un fichero - Todo sobre los famosos include de PHP. Matrices (array) - Un array permite tener tantas variables como queramos en una sola. Cadenas de caracteres - Aprende a manejar palabras y textos con PHP. Clases - Las clases nos permitirán organizar el código incluyendo varias funciones y variables en una sola clase. TERCER MODULO Fechas - Mostrar fechas de la forma en que queramos es tarea sencilla con PHP. Entrada y salida - Leer y escribir en bases de datos será de gran utilidad para tener actualizada nuestra página web. Operaciones con ficheros - Lectura de directorios, copia de archivos, creación de directorios, etc. El lenguaje SQL y PHP - Aprendiendo a manejar Bases de Datos. Conexión con MySQL - Necesario para manejar una gran cantidad de datos, como un registro de usuarios. Sesiones - Con las sesiones es posible identificar a cada usuario que está visitando la página por separado y asignarle datos. Formularios con PHP - La mejor manera de interactuar con PHP se consigue con los formularios. Con ellos incluso es posible subir archivos al servidor desde una web.

Transcript of Programacion Con Php

Page 1: Programacion Con Php

PROGRAMACION CON PHP

INDICE

PRIMER MODULO

Instalación y Configuración del servidor de aplicaciones

Introducción a PHP - Introducción al mundo de las páginas web dinámicas con

el lenguaje PHP.

Variables - Con las variables es posible almacenar datos como números o

textos.

Mi primer script PHP - Empieza a trabajar con PHP.

Operadores en PHP - Las primeras operaciones con PHP.

Estructuras de control - Dotando de más dinamismo a nuestros scripts PHP.

SEGUNDO MODULO

Funciones en PHP - Las funciones son muy útiles para organizar y reutilizar

nuestro código PHP.

Inclusión de código desde un fichero - Todo sobre los famosos include de PHP.

Matrices (array) - Un array permite tener tantas variables como queramos en

una sola.

Cadenas de caracteres - Aprende a manejar palabras y textos con PHP.

Clases - Las clases nos permitirán organizar el código incluyendo varias

funciones y variables en una sola clase.

TERCER MODULO

Fechas - Mostrar fechas de la forma en que queramos es tarea sencilla con PHP.

Entrada y salida - Leer y escribir en bases de datos será de gran utilidad para

tener actualizada nuestra página web.

Operaciones con ficheros - Lectura de directorios, copia de archivos, creación

de directorios, etc.

El lenguaje SQL y PHP - Aprendiendo a manejar Bases de Datos.

Conexión con MySQL - Necesario para manejar una gran cantidad de datos,

como un registro de usuarios.

Sesiones - Con las sesiones es posible identificar a cada usuario que está

visitando la página por separado y asignarle datos.

Formularios con PHP - La mejor manera de interactuar con PHP se consigue con

los formularios. Con ellos incluso es posible subir archivos al servidor desde una

web.

Page 2: Programacion Con Php

PROGRAMACION CON PHP

Como instalar AppServ

Eso es lo mejor, es muy fácil de hacer, basta con un doble click en el instalador que nos

bajamos de la Web y luego damos siguiente, siguiente, varias veces hasta que queda

instalado. Pero bueno este tutorial no tiene sentido si es tan fácil, por tanto para hacer

como que trabajo, vamos a ver paso a paso esas pantallas donde solo basta con dar

"siguiente".

1) Damos doble click en el icono del instalador que nos bajamos. Aparece la imagen

que vemos debajo, recuerda que la versión puede ser más nueva cuando tú intentes ;),

pero tranquilo se usara igual que como comento ahora. Debemos dar, siguiente (next).

2) Aparece el acuerdo de licencia, ahí debemos dar conformidad (I Agree)

Page 3: Programacion Con Php

PROGRAMACION CON PHP

3) En este punto, debemos elegir en cual de nuestros discos duros y en que carpeta

vamos a instalar el AppServ, a mi no me gusta pensar mucho por tanto dejo siempre el

directorio recomendado por defecto, o sea: c:\AppServ, como muestra la imagen, y le

damos siguiente (Next)

4) En este punto debemos elegir los componentes que vamos a instalar (recuerda que

todos los pasos basta con dar siguiente siguiente), como ves aparecen marcados los

cuatro elementos disponibles (apache, mysql, php, phpmyadmin) si bien puedes

Page 4: Programacion Con Php

PROGRAMACION CON PHP

desmarcar alguno, es mejor instalar todos para tener completo tu equipo de testeo y

desarrollo Web, le damos siguiente (Next)

5) En este punto debes indicar el nombre del servidor y el email del administrador del

sistema, en mi caso dejo localhost y email [email protected], respectivamente, el

puerto 80. Recuerda que puedes dar siguiente y dejar lo que sugiere sin problemas.

6) Configuración MySQL, en este punto debemos prestar atencion, ya que debemos

indicar el Password, para el usuario principal de la base de datos, lo escribimos 2 veces

Page 5: Programacion Con Php

PROGRAMACION CON PHP

!! Y por favor lo recuerdan (no lo anoten bajo el teclado como mi tía Clotilde). Lo

demás lo dejamos como esta en la imagen.

Por tanto el usuario será root, que es por defecto (tu luego puedes crear mas, todos los

que quieras) y tu Contraseña que acabas de escribir, eso lo usaras para abrir la base

desde tus programas PHP, por eso es importante recordar ;)

Le damos siguiente (Next)

7) Para culminar la instalación, como indica la imagen, podemos elegir si al finalizar ya

comenzara a funcionar el Server Apache y el servidor de base de datos MySQL, lo

dejamos marcado y le damos finalizar (Finish), listo hemos terminado.

Page 6: Programacion Con Php

PROGRAMACION CON PHP

En este punto si vas a tu navegador (ojala y sea FireFox jaja), puedes poner,

http://localhost y debe mostrarse tal como muestra la imagen. Salvo las versiones que el

tuyo puede ser mas nuevo.

Page 7: Programacion Con Php

PROGRAMACION CON PHP

En la configuración Standard usando c:\AppServ la ubicación que equivale a

http://localhost es c:\AppServ\www por tanto si creas una carpeta pruebas dentro de

www, quedand asi: c:\AppServ\www\pruebas, y dentro un archivo llamados test.php

con el siguiente contenido:

<?php

echo phpinfo();

?>

Este archivo se ejecutara en tu navegador llamando lo asi:

http://localhost/prueba/test.php

Page 8: Programacion Con Php

PROGRAMACION CON PHP

PRIMER MODULO INTRODUCCION A PHP

PHP es un lenguaje de scripting que permite la generación dinámica de contenidos en

un servidor web. El significado de sus siglas es HyperText Preprocessor. Entre sus

principales características cabe destacar su potencia, su alto rendimiento, su facilidad de

aprendizaje y su escasez de consumo de recursos.

El código PHP puede incluirse dentro del código html de la pagina. Para delimitar la

seccion de codigo PHP podemos hacerlo de varias formas:

-Usando las etiquetas <?php y <?

-Usando las etiquetas <? y ?>

-Mediante <script languaje="php"> </script>

El funcionamiento de las páginas en PHP alojadas en un servidor es el siguiente:

-El navegador del cliente solicita el documento PHP.

-Llega la solicitud del servidor y el servidor localiza el documento, lanza el intérprete de

PHP y ejecuta todo su codigo.

-Una vez ejecutado el código se genera el resultado en HTML y lo devuelve al servidor

para que lo transfiera al cliente.

-El servidor transfiere el resultado en HTML y es mostrado en el navegador del cliente

VARIABLES

Una variable podría definirse como una posición de memoria creada para introducir o

asignar cualquier valor o dato. Durante la ejecución del script el valor de la variable

puede "variar"(valga la redundancia) tanto de tipo como de valor. En PHP (al igual que

en JavaScript) no hace falta declarar la variable ya que simplemente anteponiendo el

caracter $ al nombre de la variable estamos indicando que es una variable.

Otro hecho que cabe destacar a la hora de programar en PHP y la declaración de

variables es que PHP es un lenguaje "CASE SENSITIVE" es decir que diferencia entre

mayúsculas y minúsculas y debido a esta razón no sería lo mismo $miVariable=valor;

que $MiVaRiABle=valor; ya que PHP lo interpretaría como dos variables

completamente diferentes.

Los tipos de datos posibles que puede almacenar una variable son los siguientes :

Integer Números enteros positivos y negativos

Double Números decimales o de coma flotante

String Cadenas de texto

Boolean Valores True o False

Page 9: Programacion Con Php

PROGRAMACION CON PHP

Array Tipo especial de colección de valores

Object Tipo especial de dato complejo

En capítulos posteriores daremos cabida a los dos últimos tipos de datos(array y object)

que aqui no han sido explicados ni comentados apenas.

Convertir tipos

PHP es un lenguaje que realiza la conversión de tipos en función de los operandos y del

operador. De esta forma si intentamos sumar la cadena '10' y el número 20 la acción que

realizaría sería convertir la primera variable a numérica y de esa forma podría sumar

10+20=30.

Aparte de que PHP en algunos casos realiza la conversión existen dos funciones

especiales del propio lenguaje las cuales nos permiten saber el tipo de variable que

estamos usando y también pueden convertir el tipo de variable:

gettype() Recibe el tipo de variable que es

settype($variable,'tipo variable') Transforma el tipo de variable del modo actual a el

modo que le introduzcamos.

Variables características de PHP

argv Array de argumentos pasados en la ejecución del script.

$_SERVER['argc'] Número de parametros pasados al script en su ejecución.

$_SERVER['PHP_SELF'] Nombre del script que se está ejecutando

$_COOKIE Array asociativo de pares (clave,valor) pasados a través de

cookies

$_GET Array asociativo de pares (clave,valor) pasados a través de

GET

$_POST Array asociativo de pares (clave,valor) pasados a través de

POST

$_FILES Array asociativo que contiene información de los ficheros

recibidos mediante POST

$_ENV Array asociativo de pares (clave,valor) del entorno

$_SERVER Array asociativo de pares (clave,valor) del servidor

$_SESSION Array asociativo de pares (clave,valor) de sesion

Constantes

Son valores que se van a mantener constantes a lo largo de la ejecución del script y que

posiblemente queramos usar a lo largo del script un gran número de veces. Para ello

usamos la siguiente sintaxis:

define("nombre de la constante", valor);

MI PRIMER SCRIPT PHP

Una vez que ya tenemos instalados PHP y MySQL , y el servidor Apache configurado

para usarlos, podemos comenzar a escribir nuestro primer script en PHP.

Page 10: Programacion Con Php

PROGRAMACION CON PHP

Ejemplo script php

<html>

<body>

<?php

$myvar = "Hola. Este es mi primer script en PHP n";

//Esto es un comentario

es mi primer script en PHP n";

//Esto es un comentario

echo $myvar;

?>

</body>

</html>

Una vez escrito esto lo salvamos en un fichero con la extensión php, y lo colocamos en

nuestro servidor, http://mi_servidor/php/test.php . Ahora si ponemos esta URL en

nuestro navegador veremos una línea con el texto "Hola. Este es mi primer script en

PHP" .

Lo primero que apreciamos en el script son sus delimitadores. En la primera línea del

script vemos <?php que nos indica que comienza un script en PHP, y en la última

colocamos ?> para indicar el final del script. Hay que destacar que todas las líneas que

se encuentre entre estos delimitadores deben acabar en punto y coma , excepto las

sentencias de control (if, swicht, while, etc.).

Como en toda programación, es importante poner muchos comentarios, para lo cual si

queremos comentar una sola línea tenemos que poner al principio de la línea // , si lo

que queremos es comentar varias utilizaremos los delimitadores /* - */ .

Para que el servidor envié texto utilizaremos la instrucción echo , aunque también

podemos utilizar printf de uso similar al del C o Perl .

Finalmente, vemos que la palabra myvar comienza con el signo dólar ( $ ) . Este

símbolo le indica a PHP que es una variable. Nosotros le hemos asignado un texto a

esta variable, pero también pueden contener números o tablas (arrays). Es importante

recordar que todas las variables comienza con el signo dólar . También habréis

observado que el texto que le asignamos a la variable termina con n , esto no se

imprime sirve para indicarle al navegador una nueva línea.imprime sirve para indicarle

al navegador una nueva línea.

OPERADORES EN PHP

Al desarrollar cualquier programa empleamos normalmente operadores que nos sirven

para realizar diversas operaciones que le otorgan un cierto grado de complejidad a

nuestros programas, ya que, de otro modo el programa realizaría siempre lo mismo y

por tanto no seria un programa útil.

Operadores aritméticos

+ Suma dos valores

- Resta dos valores (o pasa a negativo un valor)

* Multiplica dos valores

/ Divide dos valores

Page 11: Programacion Con Php

PROGRAMACION CON PHP

% Resto de dividir dos valores

++ Incremento en una unidad

-- Decremento en una unidad

Operadores de asignación

= Asigna a la parte derecha el valor izquierdo

+= Realiza la suma de la derecha con la izquierda y la asigna a la derecha

-= Realiza la resta de la derecha con la izquierda y la asigna a la derecha

*= Realiza la multiplicación de la derecha con la izquierda y la asigna a la derecha

/= Realiza la división de la derecha con la izquierda y la asigna a la derecha

%= Se obtiene el resto y se asigna

.= Concatena el valor de la izquierda con la derecha y lo asigna a la derecha

Operadores lógicos

! Operador NO o negacion.Si era true pasa a false y viceversa

and Operador Y, si ambos son verdaderos vale verdadero

or Operador O, vale verdadero si alguno de los dos es verdadero

xor Verdadero si alguno de los dos es true pero nunca ambos

&& True si ambos lo son

|| True si alguno lo es

Operadores condicionales

== Comprueba si dos números son iguales

!= Comprueba si dos números son distintos

> Mayor que, devuelve true en caso afirmativo

< Menor que, devuelve true en caso afirmativo

>= Mayor o igual

<= Menor o igual

ESTRUCTURAS DE CONTROL

A partir de ahora vamos a dotar de mas "dinamismo" a nuestros scripts ya que a partir

de diversas estructuras indicaremos que acción debe realizar en cada caso, además

también nos dará la posibilidad de realizar una misma acción multitud de veces con tan

solo una línea de código.

Estructura IF

IF es una estructura de control utilizada para tomar decisiones según se cumpla una

condición (o varias) o no. Su estructura básica es la siguiente:

if(condición/es){

acción a realizar;

}

else{

Page 12: Programacion Con Php

PROGRAMACION CON PHP

acción a realizar en caso de que no se cumpla;

}

Veamos un ejemplo básico para entenderlo mejor:

if($edad>=18){

Comprar cerveza;

}

else{

echo "No puedes comprar cerveza porque no tienes 18 años";

}

e incluso podemos realizar condicionales mas completas como el siguiente caso:

if(($edad>=18)&&($dinero>0)){

Puedes comprar cerveza porque tienes 18 y tu dinero es mayor que 0;

}

else{

echo "O no tienes pelas o no tienes los 18" ;

}

Estructura SWITCH

Toma distintas decisiones en función de distintos estados de la variable.Su sintaxis es la

siguiente:

switch(expresión){

case valor1:

sentencia a ejecutar cuando la expresión tiene como valor valor1

break

case valor2:

sentencia a ejecutar cuando la expresión tiene como valor valor2

break

case valor3:

sentencia a ejecutar cuando la expresión tiene como valor valor3

break

default:

sentencia que se ejecutar por defecto cuando no se cumpla ninguna de las

condiciones anteriores

Bucle FOR

El bucle for se usa para repetir una misma operación un número determinado de veces.

Su sintaxis es la siguiente:

for(inicialización;condición;actualización){

sentencia a ejecutar mientras se cumpla la condición

}

El bucle for esta compuesto de 3 partes:

- Inicialización: Se ejecuta tan solo al iniciar por primera vez el bucle.En esta parte se

Page 13: Programacion Con Php

PROGRAMACION CON PHP

suele colocar la variable que contara el numero de veces que se repite el bucle.

- Condición: Es la condición que se evaluara cada vez que se inicie el bucle.Esta

condición es la que determina la duración del bucle.

- Actualización: Sirve para indicar los cambios que queremos ejecutar en las variables

cada vez que se ejecuta el bucle.

Un ejemplo de su uso seria el siguiente:

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

echo "El número actual es".$i;

}

De esta forma escribiría todos los números contenidos entre 0 y 10.

Bucles WHILE y DO WHILE

Bucle WHILE

Este bucle se usa cuando queremos repetir la ejecución de unas sentencias un número

indefinido de veces. Su sintaxis es la siguiente:

while(condición){

sentencia a ejecutar

}

Para entender mejor el uso de while nos serviremos del siguiente ejemplo:

while($color != "rojo"){

color= dame un color;

}

Este es un ejemplo de lo que se puede hacer con while. En este caso siempre y cuando

el color no sea rojo nos dirá que introduzcamos un color.

Bucle DO...WHILE

Este bucle se usa cuando no sabemos el número de veces que va a ejecutarse un bucle

pero lo que si tenemos claro es que por lo menos una vez si que se ejecutara la

accion.Su sintaxis es la siguiente:

do{

sentencia del bucle

}while(condicion)

BREAK y CONTINUE

BREAK

Se usa para detener el bucle y dejar de interpretar el código que sigue después de el

break

CONTINUE

Sirve para volver al principio del bucle desde cualquier parte del bucle.

Page 14: Programacion Con Php

PROGRAMACION CON PHP

SEGUNDO MODULO FUNCIONES EN PHP

Una de las herramientas más importantes en cualquier lenguaje de programación son las

funciones. Una función consiste en un conjunto de rutinas y acciones que a lo largo del

script van a ser ejecutadas multitud de veces agrupados en una FUNCION y desde

cualquier punto del script puede ser llamada y ejecutada. A su vez, esta función puede

recibir parámetros externos de los cuales dependa el resultado de una función.

Las funciones deben ser colocadas siempre antes de realizar la llamada a la función

(como es lógico). La sintaxis de una función es la siguiente:

function nombre(parámetros){

instrucciones de la función

}

para llamar a la función sería de la siguiente forma: nombre(parámetros)

Un ejemplo para entender el uso de funciones es el siguiente:

Crearemos una función que realice la suma de dos números y muestre el resultado

function sumar($sumando1,$sumando2){

$ suma=$sumando1+$sumando2

echo $sumando1."+".$sumando2."=".$suma;

}

sumar(5,6)

Un hecho relevante que cabe destacar es que las variables que declaremos dentro de la

función solo existirán o tendrán dicho valor dentro de la función.

Existen casos en los cuales no sabemos el número de parámetros que le pasaremos a la

función y en estos casos debemos usar las funciones creadas al efecto como son:

func_num_args() Numero de parámetros que se le han pasado a la función

func_get_args() Devuelve un elemento de los que forman la lista de argumentos

INCLUSION DE CODIGO DESDE UN FICHERO

En ocasiones es necesario cargar el mismo archivo en diferentes scripts y de esa forma

no repetir el mismo código en diversos scripts. Parece entonces razonable que debe

existir algún método o forma de cargar algún archivo externo y de esa forma generar

páginas web mas dinámicas.

A este efecto PHP dispone de dos instrucciones para poder cargar archivos:

require("archivo");

Cuando se incluye un archivo con require el interprete abandona el modo PHP y entra

en modo HTML, una vez abierto el fichero lo incluye hasta su ultima línea y

Page 15: Programacion Con Php

PROGRAMACION CON PHP

posteriormente abandona el modo HTML para volver a posicionarse en el modo PHP.

Su principal diferencia con include() es que no permite la carga condicional.

include("archivo");

Cuando se incluye un archivo con require el interprete abandona el modo PHP y entra

en modo HTML, una vez abierto el fichero lo incluye hasta su ultima línea y

posteriormente abandona el modo HTML para volver a posicionarse en el modo PHP.

Permite la carga condicional, es decir, que podemos cargar un archivo o otro según si se

cumple o no una condición.

MATRICES (ARRAY)

En la realización de un script en PHP en múltiples ocasiones existen variables que

tienen información similar y se procesan de forma semejante. Para ello PHP (y otros

lenguajes) poseen un elemento denominado array. Un array es un conjunto de variables

agrupadas bajo un único nombre. Cada variable dentro de la matriz se denomina

elemento. Dentro de la misma matriz pueden existir variables de diferentes tipos y no es

necesario que sean todas del mismo tipo.

Hay que diferenciar entre los dos tipos de matrices existentes:

- Indexada: Aquella cuyo acceso a los elementos se realiza por la posición que ocupan

dentro de la estructura (se inician siempre desde la posición 0). Ejemplo: $amigos[0]

- Asociativa: Es aquella en la que los elementos están formados por pares clave-valor y

el acceso se realiza proporcionando una determinada clave. Ejemplo: $amigos['edad']

Para crear matrices en PHP existen dos formas:

- De forma implícita, que consistiría en indicarle el elemento(ya sea proporcionando su

posición o su clave).Ejemplo: $nombres[0]='Javier';

En caso de no indicarle una posición el array tomara el valor siguiente al ultimo valor

introducido.Ejemplo: $nombres[]='Lucas' // tomaría como valor 1 ya que lo ultimo

introducido era 0.

- Mediante array() en el cual le pasamos los elementos como parámetros. En caso de

matriz indexada toman la posición que ocupan en la creación de la matriz, mientras que

los de la matriz asociativa se les asigna su valor mediante "=>".Ejemplo:

$amigo=array('Nombre'=>'Jose','Direccion'=>'Neopatria 21');

Cabe destacar que PHP no solo se limita a la existencia de matrices por sí solo sino que

existen matrices de matrices, o lo que es lo mismo, matrices multidimensionales.

Ejemplo: $amigos[2]['Pedro']

Recorrido de una matriz

Disponemos de diversas herramientas para poder acceder a los elementos de una matriz.

En cada momento se mantiene una referencia del elemento de la matriz al que se tiene

acceso, por tanto, para recorrer una matriz bastará con modificar dicha referencia. En

caso de una matriz indexada el recorrido se realizara mediante un bucle y para ello

debemos saber el número de elementos totales que posee la matriz. Para ello nos

basamos de la función count(variable) donde variable representa la variable de la que

se quiere obtener el número de elementos. Si variable es una matriz devuelve el número

de elementos que tiene, devuelve 1 si solo tiene un elemento (aunque no sea matriz) y 0

si no tiene ningún valor.

Page 16: Programacion Con Php

PROGRAMACION CON PHP

Otra función que nos permite saber el número de elementos es sizeof(matriz) .

Para acceder a los elementos de una matriz asociativa debemos usar la función ecah()

que recupera el par formado por clave y valor y además avanza una posición de puntero.

Su sintaxis es each(matriz) y los valores que devuelve la matriz asociativa son los

siguientes:

Clave Significado

0 Nombre de la clave

1 Valor asociativo de la clave

key Nombre de la clave

value Valor asociado a la clave

La función que realiza el constructor list(variable1,variable2...variableN) es asignar

los valores del elemento actual de una matriz a las variables indicadas como parámetro.

Navegación sobre matrices

Cuando se trata de matrices indexadas la navegación es sencilla ya que tan solo basta

acceder al elemento que queremos mostrar, pero al tratarse de alguna matriz asociativa

no se puede aplicar el mismo tratamiento. Para ello existen un conjunto de funciones

prefabricadas que nos permiten realizar multitud de acciones:

Sintaxis Acción

reset(matriz); El puntero interno vuelve a la primera posición

end(matriz); El puntero interno va a la ultima posición

next(matriz); El puntero va al elemento siguiente

prev(matriz); Accede al elemento anterior

current(matriz); Devuelve el contenido del elemento actual

Inserción de elementos

Para la inserción de elementos dentro de un array existen una serie de funciones que nos

permiten añadir elementos. Entre ellas destacamos:

array_push(matriz,variable1,variableN);

Añade elementos al final de la función y su longitud se incrementara tantos elementos

como se hayan añadido

array_unshift(matriz,variable1,variableN);

Añade elementos al principio de la función desplazando a los otros tantas posiciones

como elementos haya.

array_pad(matriz,nuevo_tamaño,valor_relleno);

Aumenta el tamaño de la matriz empleando un valor proporcionado como relleno.

Eliminación de elementos

array_shift(matriz);

Elimina el primer elemento de la matriz

Page 17: Programacion Con Php

PROGRAMACION CON PHP

array_pop(matriz);

Elimina el último elemento de la matriz

array_splice(entrada,pos_ini,[tamaño],[sustitutos]);

Se usa para reemplazar o borrar el contenido de una porción de matriz, para ello

debemos especificar la posición desde la cual queremos iniciar el borrado o sustitución,

el tamaño o número de elementos que se verán afectados y los sustitutos (en caso que

deseemos sustituirlo por algún elemento).

array_keys(matriz,[valor buscado]);

Se emplea cuando deseamos eliminar un elemento cuya posición desconocemos.

array_values(matriz);

Devuelve una matriz indexada con todos los valores almacenados en la matriz pasada

como parámetro.

Manipulación masiva de matrices

array_walk(matriz,nombre_de_la_funcion,lista_parametros);

Se emplea para realizar el mismo proceso definido en la función en todos los elementos

incluidos.

Obtención de submatrices

array_slice(matriz,posicion,tamaño);

Permite extraer una secuencia de elementos de una matriz. Los parámetros a pasarle son

la matriz en la cual queremos extraer dichos elementos, la posición desde la que se

inicia la extracción y el tamaño de la extracción (posiciones que abarcamos a partir de la

inicial).

Ordenación de matrices

Criterio Función

Orden ascendente(matriz indexada) sort(matriz)

Orden descendente(matriz indexada) rsort(matriz)

Orden ascendente por valor(matriz asociativa) asort(matriz)

Orden descendente por valor(matriz asociativa) arsort(matriz)

Orden ascendente por clave(matriz asociativa) ksort(matriz)

Orden descendente por clave(matriz asociativa) krsort(matriz)

Otras funciones

En este apartado se comentaran una serie de funciones (no todas porque seria imposible)

que nos pueden servir en cierto momento.

compact() Devuelve una matriz asociativa a partir de un numero indeterminado de

parámetros

extract() Crea variables desde matriz asociativa

array_unique() Devuelve matriz sin datos repetidos ya que algunos se eliminan

array_reverse() Devuelve matriz con mismos elementos pero en orden inverso

shuffle() Modifica el orden de elementos de forma aleatoria

Page 18: Programacion Con Php

PROGRAMACION CON PHP

array_count_values() Devuelve una matriz asociativa que contiene frecuencias de

repetición de los valores de la matriz

in_array() Permite comprobar si un valor esta en la matriz

array_merge() Combina elementos de dos matrices en 1.

CADENAS DE CARACTERES

En este capítulo se comentaran todos los pormenores relacionados con cadenas de

caracteres, las funciones existentes, etc.

Cadenas de caracteres

Una cadena consiste en una secuencia de caracteres que se encuentran comprendidos

entre unos delimitadores que pueden ser:

-Comillas simples ' '

-Comillas dobles " "

-Documento incrustado <<< >>>

En caso de que se desee por ejemplo unas " " dentro de las comillas de la cadena de

caracter es necesario realizar la acción que se denomina escapar un caracter que consiste

en precederlo de una es decir ". Los caracteres especiales que pueden aparecer dentro de

un documento con delimitación son:

Secuencia Significado

n Nueva línea

r Retorno de carro

t Tabulación horizontal

Barra invertida

$ Signo de dólar

" Comillas dobles

[0-7]{1,3} Caracter ASCII que coincide con el numero octal

x[0-9A-Fa-f]{1,2} Caracter ASCII que coincide con el numero hexadecimal

El caso de documento incrustado es diferente al de ambas comillas. Su sintaxis es la

siguiente:

<<<Identificador

Cadena de caracteres

Identificador;

El resultado obtenido con documento incrustado es el texto mostrado igual que se ha

introducido.

La función chr(valor) nos devuelve en una variable del tipo cadena el caracter de la

tabla de códigos ASCII asociado a un valor que recibe como parámetro, el valor que se

pase debe estar entre 0 y 255.

La función ord(cadena) nos devuelve un número entero que se corresponde con el

código ASCII del primer caracter que recibe como parámetro.

Visualización de cadenas

Page 19: Programacion Con Php

PROGRAMACION CON PHP

- Echo: Es el modo de visualización mas empleado. Su sintaxis es la siguiente: echo

"texto";

- Print: Es la mas sencilla de todas y se encarga de mostrar una cadena de caracteres

sobre su salida estándar. No soporta ningún formato de salida y su sintaxis es:

print(cadena);

- Printf(formato,[valores]); Su funcionamiento es el mismo que en el caso anterior. La

única diferencia es que este soporta formatos de salida como su alineación (por defecto

a la izquierda), valor numérico ( numero mínimo de caracteres que deben mostrarse),

numero de decimales y tipo de datos cuyas posibilidades son:

Símbolo Significado

% Representa el símbolo del porcentaje

b El argumento se trata como nº entero y se representa en codificación

binaria.

c El argumento se trata como nº entero y se muestra el caracter cuyo

código ASCII se corresponde con el valor.

d El argumento se trata como nº entero y se representa en codificación

decimal sin parte fraccionaria

f El argumento se trata como un nº de tipo double y se representa como un

decimal sin coma flotante

o El argumento se trata como un nº entero y se representa en codificación

octal

s El argumento se trata y representa como una cadena de caracteres

x El argumento se considera un nº entero y se representa en codificación

hexadecimal en minúsculas

X El argumento se considera un nº entero y se representa en codificación

hexadecimal en mayúsculas

- Sprintf(formato,[valores]); su funcionamiento es idéntico a printf. Lo único que la

cadena resultante de aplicarle un determinado formato se guarda en una variable.

Alteración del contenido

En ocasiones es necesario emplear dichas funciones para alterar el formato de salida de

las cadenas. Las funciones empleadas para modificar dicho formato son:

- chop(cadena); Devuelve la cadena de caracteres con los caracteres de blanco y nueva

línea eliminados

- ltrim(cadena); Elimina los blancos que aparecen a la derecha de una cadena de

caracteres

- rtrim(cadena) ; Elimina los blancos que aparecen por la derecha en una cadena de

caracteres

- trim(cadena); Elimina los blancos que aparecen a izquierda y derecha de la cadena de

caracteres

- str_pad(cadena,longitud,relleno,lugar); Comprueba si la longitud es menor que el valor

indicado, si es así añade los caracteres necesarios.El lugar de añadir puede ser:

str_pad_left añade por la derecha(opción por defecto), str_pad_right añade por la

izquierda y str_pad_both añade por ambos extremos.

- str_repeat(caracter,numero_veces); Repite un caracter el numero de veces indicado

- strtolower(cadena); Pasa toda la cadena a letras minúsculas

- strtoupper(cadena); Pasa toda la cadena a letras mayúsculas

Page 20: Programacion Con Php

PROGRAMACION CON PHP

- ucfirst(cadena); Pasa a mayúscula el primer caracter de una cadena

- ucwords(cadena); Pone en mayúsculas el primer caracter de cada palabra de la cadena

- str_replace(subcadena1,subcadena2,cadena); Sustituye una palabra por otra dentro de

una cadena

- strtr(cadena,originales,traducidos); Traduce ciertos caracteres .Ejemplo:

$persona=strt($persona,"áéíóú","a,e,i,o,u"); de esta forma cambiaría todas las vocales

con acento por vocales sin acento.

- substr_replace(cadena,nueva,comienzo,longitud); Sustituye una porción del contenido

de una cadena

Acceso al contenido

- strlen(cadena); Indica el nº de caracteres de una cadena

- count_chars(cadena,modo); Numero de repeticiones de un caracter en una cadena. Los

modos posibles son:

0->Matriz indexada con frecuencia de aparición de todos los caracteres del código

ASCII

1->Matriz con caracteres ASCII con frecuencia mayor que 0

2->Matriz con caracteres que no aparecen en la cadena

3->Cadena con caracteres usados en el código ASCII

4->Cadena con caracteres no usados en el código ASCII

- substr_count(cadena,subcadena); Frecuencia de aparición de una cadena

-strchr(cadena,caracter); Devuelve la subcadena que comienza en la primera aparición

del caracter indicado

- strstr(cadena,subcadena); Localiza subcadena dentro de la cadena original

- stristr(cadena,subcadena); Igual que la función anterior pero sin distinción entre

mayúsculas y minúsculas

- strpos(cadena,subcadena); Primera ocurrencia de una cadena en otra

- strrpos(cadena,subcadena); Ultima ocurrencia de una cadena en otra

- ord(cadena); Devuelve el valor ASCII de un caracter

- substr(cadena,comienzo,longitud); Porción de texto que empieza en una posición y

tiene una longitud

- strcmp(cadena1,cadena2); Compara dos cadenas siendo sensible a mayúsculas y

minúsculas

- strcasecmp(cadena1,cadena2); Compara dos cadenas sin ser sensible a mayúsculas y

minúsculas

- strncmp(cadena1,cadena2,tamaño); Compara los N primeros caracteres de una cadena

- strnatcmp(cadena1,cadena2); Sensible a mayúsculas y minúsculas. Compara dos

cadenas.

- strnatcasecmp(cadena1,cadena2); No sensible a mayúsculas y minúsculas. Compara

dos cadenas.

- chunk_split(cadena,longitud,separador); Coge una cadena de caracteres e introduce

separadores a una distancia determinada. No modifica el original sino que es una

función nueva.

- explode(separador,cadena,limite); Permite obtener una matriz de cadenas de caracteres

extraídas del original.

- implode(separador,elementos); Junta en una cadena los elementos de una matriz

usando como concatenación el separador pasado como parámetro.

- parse_str(cadena); Permite extraer y crear variables que forman parte de una cadena

que se corresponde con un "query string" recibido de una URL.

Page 21: Programacion Con Php

PROGRAMACION CON PHP

*Apoyo a HTML

- addcslashes(cadena,lista); Devuelve una cadena que tiene escapados todos los

caracteres como parámetro.

- addslashes(cadena); Devuelve una cadena que tiene escapados todos los caracteres

lógicos

- stripcslashes(); y stripslashes(); Reciben cadenas que pueden contener caracteres de de

escapes y los desescapan

- quotemeta(cadena); Esacapa los caracteres especiales

- htmlspecialchars(cadena); Lleva a cabo conversiones como &->&amp,"->&quot

- htmlentities(); Convierte todos los caracteres a entidades html. á pasa a ser &aacute;

- get_html_translation_table(htmlentities o html_specialchars); Obtiene la relación de

traducción de cada caracter especial.

- array_flip(); Intercambia las claves por los valores en array asociativo.

- get_meta_tags(nombre_fichero,include_path); Devuelve todos los meta tags que

contiene un HTML.

- strip_tags(cadena,mostrar_tags); Omite etiquetas PHP y HTML , lo de mostrar_tags

son las cadenas HTML y PHP no deben ser omitidas en la lectura.

- n12br(cadena); Permite sustituir saltos de línea por <br>

- parse_url(cadena_url); Devuelve una matriz asociativa con los siguientes campos:

Campo Significado

scheme Http

host Ip o DNS

port puerto

user nombre usuario

password contraseña

path path completo al recurso

query query string con datos al recurso

urldecode decodifica la información

urlencode Codifica la información

CLASES

Las Clases son máximo exponente de la Programación Orientada a Objetos (POO).

PHP no es un lenguaje orientado a objeto, pero implementa las características que

permiten definir las clases.

Pero, ¿qué son las Clases y para que sirven?. Empecemos por los segundo, sirven hacer

el código más legible, y lo que es más importante, reutilizable. Escribir una Clase es sin

duda más largo que escribir el código directamente, pero a la larga es más rentable por

su portabilidad a otras aplicaciones y su mantenimiento.

Las Clases no son más que una serie de variables y funciones que describen y actúan

sobre algo. Por ejemplo, vamos a crear la clase automóvil , la cual tendrá diversas

variables, $color , $modelo , $marca , $potencia , $matricula y habrá una serie de

funciones que actuarán sobre la clase automóvil como Precio() , Acelerar() , Frenar() ,

Girar() y Reparar() .

Como ejemplo vamos a crear la clase mysql , que nos servirá para realizar consultas a

las bases de datos MySQL.

Page 22: Programacion Con Php

PROGRAMACION CON PHP

<?php

class DB_mysql {

/* variables de conexión */

var $BaseDatos;

var $Servidor;

var $Usuario;

var $Clave;

/* identificador de conexión y consulta */

var $Conexion_ID = 0;

var $Consulta_ID = 0;

/* número de error y texto error */

var $Errno = 0;

var $Error = "";

/* Método Constructor: Cada vez que creemos una variable

de esta clase, se ejecutará esta función */

function DB_mysql($bd = "", $host = "localhost", $user = "nobody", $pass = "") {

$this->BaseDatos = $bd;

$this->Servidor = $host;

$this->Usuario = $user;

$this->Clave = $pass;

}

/*Conexión a la base de datos*/

function conectar($bd, $host, $user, $pass){

if ($bd != "") $this->BaseDatos = $bd;

if ($host != "") $this->Servidor = $host;

if ($user != "") $this->Usuario = $user;

if ($pass != "") $this->Clave = $pass;

Page 23: Programacion Con Php

PROGRAMACION CON PHP

// Conectamos al servidor

$this->Conexion_ID = mysql_connect($this->Servidor, $this->Usuario, $this->Clave);

if (!$this->Conexion_ID) {

$this->Error = "Ha fallado la conexión.";

return 0;

}

//seleccionamos la base de datos

if (!@mysql_select_db($this->BaseDatos, $this->Conexion_ID)) {

$this->Error = "Imposible abrir ".$this->BaseDatos ;

return 0;

}

/* Si hemos tenido éxito conectando devuelve

el identificador de la conexión, sino devuelve 0 */

return $this->Conexion_ID;

}

/* Ejecuta un consulta */

function consulta($sql = ""){

if ($sql == "") {

$this->Error = "No ha especificado una consulta SQL";

return 0;

}

//ejecutamos la consulta

$this->Consulta_ID = @mysql_query($sql, $this->Conexion_ID);

if (!$this->Consulta_ID) {

$this->Errno = mysql_errno();

$this->Error = mysql_error();

}

Page 24: Programacion Con Php

PROGRAMACION CON PHP

/* Si hemos tenido éxito en la consulta devuelve

el identificador de la conexión, sino devuelve 0 */

return $this->Consulta_ID;

}

/* Devuelve el número de campos de una consulta */

function numcampos() {

return mysql_num_fields($this->Consulta_ID);

}

/* Devuelve el número de registros de una consulta */

function numregistros(){

return mysql_num_rows($this->Consulta_ID);

}

/* Devuelve el nombre de un campo de una consulta */

function nombrecampo($numcampo) {

return mysql_field_name($this->Consulta_ID, $numcampo);

}

/* Muestra los datos de una consulta */

function verconsulta() {

echo "<table border=1>n";

// mostramos los nombres de los campos

for ($i = 0; $i < $this->numcampos(); $i++){

echo "<td><b>".$this->nombrecampo($i)."</b></td>n";

}

echo "</tr>n";

// mostrarmos los registros

while ($row = mysql_fetch_row($this->Consulta_ID)) {

echo "<tr> n";

Page 25: Programacion Con Php

PROGRAMACION CON PHP

for ($i = 0; $i < $this->numcampos(); $i++){

echo "<td>".$row[$i]."</td>n";

}

echo "</tr>n";

}

}

} //fin de la Clse DB_mysql

?>

Como habreis observado, para crear una clase utilizamos la sentencia class , y además

hemos creado una función con el mismo nombre que la clase, a esa función se le llama

constructor y se ejecutará cada vez que definamos una variable de esa clase. No es

obligatorina variable de esa clase. No es obligatorio crear un constructor en una

definición de clase.

Otra cosa importante en las clases es el operador -> , con el que indicamos una variable

o método (parte derecha del operador) de una clase (parte izquierda del operador). Para

hacer referencia a la clase que estamos creando dentro de su definición, debemos

utilizar this .

Y ahora veamos un ejemplo de la clase que hemos creado, y supongamos que el código

anterior lo hemos guardado en un fichero llamado clase_mysql.inc.php .

<body>

<html>

<?php

require ("clase_mysql.inc.php");

$miconexion = new DB_mysql ;

$miconexion->conectar("mydb", "localhost", "nobody", "");

$miconexion->consulta("SELECT * FROM agenda");

$miconexion->verconsulta();

?>

</body>

</html>

Page 26: Programacion Con Php

PROGRAMACION CON PHP

TERCER MODULO

FECHAS

En este capítulo se estudiarán las funciones existentes en PHP para el empleo de fechas.

Este tipo de funciones existen en la mayoría de lenguajes de programación y van

orientadas a su obtención y representación en diferentes formatos.

El tiempo en cualquier lenguaje de programación se suele tomar con respecto al inicio

de la "era UNIX" que es el 1 de enero de 1970 a las 00:00:00. La función más sencilla

que se basa en esta marca de tiempo es la función time() cuyo valor devuelto es el

numero entero que representa la marca de tiempo correspondiente al instante en que se

ejecutó la función con respecto a la era unix.

En algunas aplicaciones es necesario poseer una marca de tiempo mas detallada y por

ello usamos microtime() que devuelve una cadena de caracteres con los segundos y

microsegundos.

En caso de que quisiéremos tener como valor de referencia la hora del ordenador desde

el cual se ejecuta emplearíamos la función gettimeofday() en la cual pasaríamos como

parámetro interno , sec (para saber los segundos), usec (microsegundos), minuteswest

(nº segundos al oeste de greenwich) y dstime (tipo de corrección en horarios de verano

e invierno).

Estas funciones citadas anteriormente son poco utilizadas ya que la existencia de otras

funciones más completas, como por ejemplo la función getdate() que obtiene una

matriz asociativa con la información de la fecha y hora del sistema. Los elementos de

dicha matriz son:

Clave Contenido

seconds Numero de segundos de la hora actual

minutes Numero de minutos de la hora actual

hours Numero de horas de la hora actual

mday Día correspondiente del mes

wday Día de la semana en valor numérico(empezando por 0)

mon Mes del año en valor numerico.Del 1 al 12.

year Valor numérico del año

yday Día del año en valor numérico

weekday Cadena de caracteres que contiene el día de la semana(en ingles)

month Cadena de caracteres que contiene el mes del año(en ingles)

0 Marca de tiempo obtenida por la función getdate()

Si no le pasamos ningún parámetro a la función entonces se considera la hora actual del

sistema y si se recibe como parámetro un numero entero entonces lo convierte a la fecha

correspondiente.

Page 27: Programacion Con Php

PROGRAMACION CON PHP

Otra función para obtener la hora es la función localtime(marca_tiempo,tipo_matriz);

cuyos valores pasamos a comentar a continuación:

Índice Clave Contenido

0 tm_sec Numero de segundos de la fecha indicada

1 tm_min Numero de minutos de la fecha indicada

2 tm_hour Numero de horas de la fecha indicada

3 tm_mday Día correspondiente del mes

4 tm_wday Día de la semana en valor numérico(empezando por 0)

5 tm_mon Mes del año en valor numerico.Del 0 al 11.

6 tm_year Valor numérico del año.(se ve afectado por el efecto 2000)

7 tm_yday Día del año en valor numérico

8 tm_isdst Indica si esta activado el efecto del cambio de hora.

Formatos de fechas

Las funciones vistas anteriormente nos permitían convertir el valor entero de la fecha en

un valor mas fácilmente entendible, aunque para poder acceder a dicha información hay

que pasar por el paso previo de obtener una matriz. Para evitar ese paso intermedio,

PHP pone a tu disposición la funcióndate(formato,marca_tiempo);

Esta función nos devuelve una cadena de caracteres que se corresponde con una fecha a

la que se ha aplicado un determinado formato. Para definir el formato de la fecha se

dispone de las siguientes opciones:

Opción Descripción

a Hace que en la hora aparezca la cadena am o pm

A Hace que en la hora aparezca la cadena AM o PM

d Día del mes con dos dígitos desde 01 a 31

D Día de la semana como cadena de tres letras(en ingles).Ejemplo: "Mon"

F Nombre del mes completo como una cadena de caracteres.Ejemplo: "March"

h Hace que la hora aparezca en formato 01 a 12

H Hace que la hora aparezca en formato 00 a 23

g Hace que la hora aparezca en formato 1 a 12

G Hace que la hora aparezca en formato 0 a 23

i Hace que los minutos aparezcan en formato 00 a 59

j Hace que el día aparezca en formato 1 a 31

l(L min) Día de la semana completo.Ejemplo: Monday

L Escribe 0 si no es año bisiesto y 1 si lo es

m Hace que el mes aparezca en formato 01 a 12

M Hace que el mes aparezca en formato 1 a 12

s Hace que los segundos aparezcan en formato 00 a 59

S Cadena de caracteres con el sufijo ordinal.Ejemplo: "th","nd".

t Número de días del mes especificado de 28 a 31

U Número de segundos desde el comienzo de la "era UNIX"

w Número del día de la semana de 0 a 6

Page 28: Programacion Con Php

PROGRAMACION CON PHP

Y Año con cuatro cifras

y Año con dos cifras

z Día del año de 0 a 365

Z Obtiene la diferencia horaria en segundos con respecto al GMT

La función strftime() representa otra posibilidad para aplicar formatos a una fecha. Esta

función utiliza las convenciones locales de la máquina desde la que se ejecuta el script

para devolver una cadena con el formato definido en el idioma seleccionado. Su formato

queda definido por los siguientes valores:

Opción Descripción

%a Nombre del día de la semana abreviado en el idioma actual

%A Nombre del día de la semana completo en el idioma actual

%b Nombre del mes abreviado en el idioma actual

%B Nombre del mes completo en el idioma actual

%c Representación de fecha y hora en el idioma actual

%d Día del mes en formato 01 a 31

%H Hora como numero de 01 a 12

%I Hora como numero de 01 a 12

%j Día del año como numero de 001 a 366

%m Mes como numero de 01 a 12

%M Minuto en numero

%p am o pm según la hora dada

%S Segundos en numero

%U Numero de la semana del año como el primer domingo como primer día de la

semana

%W Numero de la semana del año como el primer lunes como primer día de la

semana

%w Día de la semana en numero de 0 a 6

%x Representación por defecto de la fecha sin hora

%X Representación por defecto de la hora sin fecha

%y Año en numero de 00 a 99

%Y Año en numero de cuatro cifras

%Z Nombre o abreviatura de la zona horaria

%% Caracter %

Estableciendo horas y fechas

Una vez conocida la forma de obtener la fecha actual, es necesario disponer de una

forma de poder fijar una determinada hora para establecer por ejemplo la fecha de

caducidad de una cookie, es decir, la forma de obtener una marca de tiempo

correspondiente a una determinada hora.

Para ello PHP dispone de dos funciones que son mktime() y gmmktime() cuyo

funcionamiento explicaremos a continuación:

Page 29: Programacion Con Php

PROGRAMACION CON PHP

La función mktime(hora,minuto,segundo,mes,dia,año,[ajuste->0 horario de verano

y 1 invierno]); nos devuelve un valor entero que representa la marca de tiempo UNIX

de una determinada fecha. Cada uno de los valores mencionados puede omitirse siempre

y cuando a partir del valor omitido no se representen mas valores a su derecha.

La función gmmktime() funciona de la misma forma lo que considera que los

parámetros representan una hora GMT.

La función setlocale(categoria,pais); nos permite establecer el idioma en los que

aparecerán la fecha,hora,etc. Las categorías posibles son:

Opción Descripción

LC_TYPE Conversión de cadenas a configuración regional

LC_NUMERIC Separadores numéricos

LC_TIME Para aplicar formatos de fecha y hora con strftime()

LC_ALL Todos los anteriores

Validación de fechas

Existen numerosas ocasiones en las que es necesario la creación de un sistema para

comprobar si la fecha introducida por el usuario es valida o no. Para ello PHP nos

brinda dos funciones capaces de realizar dicha comprobación:

- checkdate(mes,dia,año); Comprueba que la fecha introducida sea correcta .

- strtotime(cadena_fecha); Comprueba que la cadena de fecha sea correcta. Para ello

la fecha debe estar en formato ingles, es decir, mm/dd/aa

ENTRADA Y SALIDA

Las operaciones de entrada/salida en PHP tienen una gran importancia en cualquier

lenguaje de programación ya que no tiene sentido que un lenguaje de programación no

pueda escribir, leer, actualizar datos de una base de datos, etc. En este capítulo nos

centraremos básicamente en las operaciones de entrada y salida con archivos y

posteriormente explicaremos las operaciones con bases de datos.

Supongamos que deseamos hacer una tienda de compra online. Imaginemos el gran

esfuerzo que supondría tener que modificar todas las paginas HTML de aquellos

productos en los cuales en la temporada de oferta su precio se viera afectado. La

solución más primitiva para el almacenamiento de datos es un fichero de texto, el

contenido del fichero de texto puede ser cualquiera.

¿Cómo abrimos un fichero?

Para abrir un fichero PHP pone a disposición una función. Su sintaxis es la siguiente:

fopen(fichero,modo); la ruta del fichero se indica en fichero, y modo determina los

diferentes modos de lectura de un archivo:

Atributo Efecto

r Solo lectura

Page 30: Programacion Con Php

PROGRAMACION CON PHP

r+ Lectura y escritura

w Sólo escritura. Borra el contenido anterior

w+ Lectura y escritura. Borra el contenido anterior.

a Solo escritura. Conserva el contenido anterior.

a+ Lectura y escritura. Conserva el contenido anterior

La función fopen devuelve un manejador de fichero que es el que utilizaremos en las

funciones relacionadas con la lectura y escritura de ficheros.

¿Cómo se recorre un fichero?

Para leer un fichero lógicamente la operación es muy sencilla. Consiste en ir leyendo

todos los caracteres hasta llegar al EOF (end of file... final del archivo) el cual

determina el final del texto.

Al igual que en las matrices los ficheros poseen un cursor interno que indica su posición

actual con respecto a todo el texto.

Para comprobar si se ha llegado al final del archivo, PHP pone a nuestra disposición la

función feof(manejador_fichero); que se encarga de comprobar si la posición actual

del fichero es la marca del final.

La función mas genérica de lectura es fread(manejador_fichero,nº_bytes); que se

encarga de leer un numero determinado de bytes del fichero y devolvérnoslo en una

cadena de caracteres.

En cambio, si lo que pretendemos es leer el fichero caracter a caracter debemos usar la

función fgetc(manejador_fichero); .

Otras de las funciones mas características son: fgets(fichero,nº bytes); que nos

devuelve una cadena de caracteres con la información leída.

fgetss(manejador_fichero,nº bytes,[mostrar_tags]); nos lee un fichero HTML

omitiendo las etiquetas características del código, en mostrar tags debemos introducir

las etiquetas que deseamos que se muestren.

Si al realizar la lectura lo que se pretenden leer los valores que siguen un determinado

formato de entrada nos podemos ahorrar un gran trabajo usando la función

fscanf(manejador_fichero,formato,variables); Esta función obtiene los datos de

entrada de un fichero siguiendo un formato determinado. Posteriormente dicha

información debe ser tratada por el programador.

La ultima función que vamos a estudiar para abrir ficheros es la función

file(nombre_fichero); con esta función no es necesario usar las funciones fopen() y

fclose() ya que se ejecutan de forma implícita.

¿Cómo se cierra un fichero?

Cerrar es la ultima operación que se debe realizar al manipular un fichero y permite

cerrar la referencia que se hace al fichero en el script ejecutado. Para poder cerrar un

fichero usamos la función fclose(manejador_fichero);

Page 31: Programacion Con Php

PROGRAMACION CON PHP

Escritura en ficheros

Para escribir en un fichero básicamente debemos realizar tres operaciones: abrir el

fichero en modo escritura, realizar la operación de escritura realizada, cerrar el fichero.

Las funciones que empleamos para escribir en un fichero son

fputs(manejador_fichero,cadena); y fwrite(manejador_fichero,cadena); que nos

permiten añadir una cadena de caracteres al texto anterior contenido en el texto.

Acceso directo en ficheros

Existen un conjunto de funciones que nos permiten situarnos en una determinada

posición del fichero para leer a partir de ahí.

La función fseek(manejador_fichero,posicion); Nos permite empezar a leer un fichero

a partir de una posición según se determine: seek_set (se toma con el principio del

fichero), seek_cur (posición actual), seek_end (posición final).

Existen dos funciones básicas que nos posicionan al principio del fichero ->

rewind(manejador_fichero); o que nos devuelven el valor actual de la posición->

ftell(manejador_fichero);

Funciones variadas para el manejo de ficheros

fpassthru(manejador_fichero); Nos muestra el contenido referenciado por manejador

de fichero. Devuelve el numero de bytes mostrados si no se produce ningún fallo.

set_file_buffer(fichero,tamaño); Determina el tamaño del buffer de ese archivo que

usara PHP.

readfile(fichero); Lee un fichero y lo muestra por el método de salida estándar.

OPERACIONES CON FICHEROS

En el desarrollo y administración de sitios webs resulta bastante habitual tener que

acceder a ficheros del servidor para manipularlos. Por esta razón en este capítulo vamos

a describir las funciones creadas en PHP para realizar dichas operaciones.

Cambio, creación y borrado de directorios

chdir(ruta_al_directorio); Nos permite cambiar el directorio activo a la ruta

establecida como parámetro.

mkdir(ruta_al_directorio,permisos); Esta función crea un nuevo directorio en la ruta

que hemos indicado, el segundo parámetro debe ser un numero octal y es por el que

vienen determinados los permisos.

rmdir(ruta_directorio); Borra el directorio pasado como parámetro.

Procesamiento de los elementos de un directorio

Supongamos que queremos realizar una operación determinada como una búsqueda,

visualización, etc sobre todos los ficheros de un directorio. PHP nos proporciona una

solución a este problema: el manejador de directorios (representa una conexión lógica

Page 32: Programacion Con Php

PROGRAMACION CON PHP

con un directorio determinado que permite leer la lista con los nombres de los

elementos contenidos en el directorio actual).

La función empleada para abrir un directorio es opendir(ruta); cuya función como ya

se ha comentado es abrir el directorio de la ruta especificada. Una vez se ha ejecutado

opendir() podemos realizar tres operaciones:

La función readdir(manejador); nos devuelve una cadena con el nombre del siguiente

elemento del directorio, ya sea un subdirectorio o un fichero.

La función rewinddir(manejador); procesa un directorio y sitúa el puntero interno en

el primer directorio.

La función closedir(manejador); finaliza el tratamiento de entradas de directorio.

La clase dir

PHP nos proporciona una pseudoclase predefinida para el manejo de ficheros. Esta clase

no aporta ninguna funcionalidad que no hayamos visto hasta este punto pero recopila

todas las funciones a partir de una sola. Para poder trabajar con un directorio primero

hay que crear una instancia de clase dir por medio de su constructor.

$directorio=dir(ruta_directorio);

Este objeto cuenta con 3 métodos y 2 propiedades(las propiedades sólo de consulta por

lo que no pueden ser modificadas. Los métodos empleados son read(),rewind() y

close()

Copiado,borrado y renombrado de ficheros

copy(fichero_origen,fichero_destino); Realiza una copia de un fichero.

unlink(nombre_fichero); Elimina el fichero.

rename(nombre_antiguo,nombre_nuevo); Renombra el fichero pasado como

parámetro.

Atributos de ficheros y directorios

Los ficheros y directorios poseen una serie de características propias denominadas

atributos. PHP pone a nuestra disposición un conjunto de funciones que nos permitirán

obtener información sobre los archivos o carpetas.

La función file_exists(elemento); Comprueba que el elemento pasado como parámetro

exista.

filesize(nombre_fichero); nos informa sobre el tamaño del fichero en bytes.

La función fileatime(fichero); nos informa sobre el ultimo acceso al fichero.

La función filemtime(fichero); nos informa sobre la ultima modificación del fichero.

La función filectime(fichero); nos informa sobre el último cambio al fichero.

La función filetype(fichero); nos devuelve el tipo de elemento que estamos tratando.

Los resultados posibles que puede devolver son:

Page 33: Programacion Con Php

PROGRAMACION CON PHP

Resultado Significado

block Dispositivo de bloques

char Caracteres

dir Directorio

fifo FIFO

file Fichero

link Enlace

unknown Desconocido

Chmod(elemento_directorio,permisos); recibe como parámetro el elemento y los

permisos que deseamos otorgarle a dichos elementos

EL LENGUAJE SQL Y PHP

En este capítulo nos dedicaremos a explicar el lenguaje SQL ya que posteriormente lo

usaremos mucho en las conexiones de PHP con MySQL.

Creación y modificación de Tablas en SQL

MySQL esta organizado a partir de tablas y dichas tablas contienen campos. Cada

campo es capaz de contener un tipo de dato. Los tipos de datos que es posible crear en

el lenguaje SQL son:

Tipo Descripción

Tinyint[Unsigned] Entero de 0 a 255 o de -128 a 128

Smallint[Unsigned] Entero de 0 a 65535 o de -32768 a 32768

Int o Integer Entero normal.Rango de -2147483648 a 214783648

Float[ (M,D) ]

Número de coma flotante de simple precisión si no se

pasa ningun argumento M es el nº de digitos y D el nº de

decimales

Double [ (M,D) ] Número de coma flotante de doble precision. Siempre

dispone de signo M y D

Decimal [ (M [,D]) ] Número almacenado como cadena de caracteres M es el

número total de dígitos y D el nº de decimales

Date Tipo fecha.Admite formatos "AAAA-MM-DD" o "AA-

MM-DD" o "AAMMDD"

Time Tipo hora.Admite formato "HH:MM:SS" o "HHMMSS"

o "HHMM" o "HH"

Char(longitud) Cadena de caracteres de la longitud indicada.Se reserva el

espacio en caracteres aunque no se usen

Varchar(longitud)

Cadena de caracteres de la longitud indicada que se

almacena con su ocupacion.Máxima longitud: 255

caracteres

Blob Tipo destinado a almacenar bits sin intrepretar.Se usa

para almacenar texto mas largo de 255

Page 34: Programacion Con Php

PROGRAMACION CON PHP

caracteres.Diferencia mayúsculas de minúsculas.

Text

Tipo destinado a almacenar bits sin intrepretar.Se usa

para almacenar texto mas largo de 255 caracteres.No

diferencia mayúsculas de minúsculas.

Para crear una tabla usaremos la siguiente sintaxis:

CREATE TABLE Nombre_tabla

(Campo1 Tipo_dato Not Null,

Campo2 Tipo_dato,

PRIMARY KEY (Campo3));

Esto nos crearía una tabla con 3 campos de los cuales Campo3 es un valor único, es

decir, que no puede ser sobreescrito.

Para eliminar una tabla usaremos:

DROP TABLE Nombre_tabla;

Para modificar la estructura de la tabla usaremos la siguiente sintaxis:

ALTER TABLE Nombre_tabla

[ADD Nombre_atributo Definición] //Añadiría un nuevo campo

[CHANGE AntiguoNombreAtributo NuevoNombreAtributo Definición] //Cambiaría

un campo

[DROP NombreAtributo]; //Borraría un campo

Los índices son una estructura de acceso que permiten organizar los datos contenidos en

una tabla. Para crear un índice usaríamos la siguiente sintaxis:

CREATE [UNIQUE] INDEX NombreIndice

ON Tabla (Campos);

Manipulación de datos

-Inserción de datos

Para insertar datos en la tabla se realiza mediante el comando insert y su sintaxis es la

siguiente:

INSERT INTO NombreTabla [Campo1,Campo2...CampoN] VALUES

(Valor1,Valor2...ValorN);

- Consultas de datos

Para esta acción usamos el comando SELECT y la sintaxis es la siguiente:

SELECT ([*]/[Atributos]) FROM Tabla/s [WHERE ListaCondiciones] [GROUP BY

Campo] [HAVING ListaCondiciones] [ORDER BY Campo]

Existen un conjunto de funciones dentro de las consultas de datos que nos permiten

obtener información o realizar operaciones con respecto a las filas. Las funciones son:

Page 35: Programacion Con Php

PROGRAMACION CON PHP

función Descripción

COUNT(*/DISTINCT

Campo) Cuenta el numero de filas

SUM(Campo) Suma los valores del atributo indicado

AVG(Campo) Obtiene la media aritmética del atributo

MAX(Campo) Obtiene el valor máximo del atributo

MIN(Campo) Obtiene el valor mínimo del atributo

- Eliminación de datos

Para eliminar datos usamos la sentencia DELETE cuya sintaxis es la siguiente:

DELETE FROM NombreTabla [WHERE Condición];

CONEXION CON MYSQL

Una vez que ya hemos explicado un poco por encima todas las operaciones posibles y

lógicas que podemos hacer con una base de datos en el lenguaje SQL, llega el momento

de combinarlo con la potencia de PHP y para ello usaremos el programa MySQL.

MySQL es uno de los gestores de bases de datos mas utilizados en entornos en los

cuales se emplea PHP ya que PHP dispone de numerosas funciones que se compaginan

perfectamente con MySQL. La forma genérica de obtener información de tablas en

Mysql es la siguiente:

- Conexión con el gestor.

- Preparación de la consulta SQL.

- Ejecución de la consulta.

- Procesamiento del resultado obtenido en el cursor.

- Liberación de recursos (esta es opcional, aunque es recomendable).

- Cierre de la conexión con el gestor.

Para realizar estas y otras muchas mas cosas disponemos de las siguientes funciones:

Función Descripción

mysql_connect("host","usuario","password")

Establece la conexión con el servidor.

Recibe el host y el usuario y

contraseña con el que debe conectar.

mysql_select_db("base de datos",conexión) Selecciona la base de datos sobre la

cual se va a trabajar

mysql_query(consulta,conexión) Ejecuta la consulta SQL indicada

como primer parámetro.

mysql_num_fields(cursor)

Devuelve el numero de atributos que

figuran en el cursor que se le pasa

como parámetro y en el que se

almacena el resultado de la consulta

mysql_fetch_row(cursor)

Avanza a la siguiente posición de la

fila en cursor. Devuelve un array que

contiene en sus celdas cada uno de

Page 36: Programacion Con Php

PROGRAMACION CON PHP

los valores de los atributos de la fila.

mysql_free_result(cursor) Libera los recursos asociados al

cursor.

mysql_close(conexion) Cierra la conexion establecida con

mysql_connect.

Una de las ventajas que proporciona la altísima integración que PHP y MYSQL tienen

es la existencia de funciones que permiten al programador acceder a las diferentes

estructuras que conforman la base de datos. Algunas de las funciones son:

Función Descripción

mysql_list_dbs(conexion)

Devuelve en un cursor los nombres de las

bases de datos disponibles en el servidor al

que se haya conectado con mysql_connect

mysql_list_tables(base_datos,conexion) Devuelve en un cursor los nombres de las

tablas disponibles en la base de datos.

mysql_tablename(cursor,numero_fila) Devuelve el nombre de la tabla o base de

datos en la que esta el cursor indicado

mysql_field_name(cursor,numero_col) Devuelve el nombre del campo cuyo índice se

pasa como segundo parámetro

mysql_field_type(cursor,numero_Col) Devuelve el tipo del campo cuyo índice se

pasa como segundo parámetro

mysql_field_len(cursor,numero_col) Devuelve la longitud del campo cuyo índice

se pasa como segundo parámetro

mysql_field_flags(cursor,numero_col)

Devuelve una serie de indicativos

correspondientes a características del atributo

cuyo índice se pasa como segundo parámetro

mysql_affected_rows(conexion) Devuelve el numero de filas afectadas por

una actualización o borrado

mysql_change_user(usuario,password) Cambia de usuario

mysql_create_db(basedatos) Crea una base de datos con el nombre pasado

por parámetro

mysql_drop_db(basedatos) Elimina la base de datos pasada por

parámetro

mysql_insert_id(cursor) Devuelve el valor generado para un

AUTOINCREMENT

SESIONES

Generalmente una web se compone de una serie de páginas entre las que existe alguna

relación. Un ejemplo claro es una página en la cual es necesario estar registrado para

poder acceder a ellas ya que en función de la categoría del usuario nos permitirá acceder

a unas secciones o otras. En estas aplicaciones será necesario ir comprobando los

permisos de usuario y para ello usamos un elemento en PHP denominado "sesiones".

Una sesión se inicia cuando un usuario entra en la aplicación web y finaliza cuando el

usuario abandona la aplicación (mas adelante comprenderemos lo de "abandonar

aplicación").

Page 37: Programacion Con Php

PROGRAMACION CON PHP

Durante todo ese tiempo podemos manipular una serie de variables que se inician al

iniciar la sesión y mantener un tipo de información común entre todas las páginas (en el

caso de el usuario registrado seria los privilegios que posee).

Para mantener esta información constante es necesario que los datos se guarden en un

fichero ya sea en el cliente (cookies) o en el servidor (en caso de que tenga desactivado

las cookies).

Para el problema que consiste en diferenciar los diferentes usuarios existe una solución

muy básica que consiste en un identificador de sesión diferente en cada caso.

Este identificador de sesión debe ser enviado de una pagina a otra para mantener la

sesión activa(a menos que en la configuración del servidor tengamos activada la opción

session_trans_id) y también es necesario pasar el identificador de sesión en los

formularios como un campo HIDDEN.

Ejemplos:

- Hipervínculo

<a href="pagina.php?<? =SID ?>">Entrar</a>

-Formulario

<input type="hidden" name="session_name()" value="SID">

Funciones de gestión de sesiones

función Significado

session_start();

Si es la primera solicitud genera un

identificador de sesión aleatorio cuyo nombre

será sess_IDsesión; si es otra solicitud

continua la sesión iniciada anteriormente.

session_destroy();

Elimina todos los datos asociados con una

sesión, borra el archivo en el servidor pero no

borra la cookie.

session_register(nombre);

Recibe como parámetro una serie de nombres

de variable globales y los registra como

variables de sesión en el fichero del servidor

session_unregister(nombre);

Eliminamos la variable global introducida y

se elimina el contenido de esta variable en el

fichero del servidor.Sin pasar el parámetro

nombre eliminaremos todas las variables de la

sesión.

session_is_registered(nombre);

Devuelve true en caso de que en la sesión se

encuentre registrada una variable con dicho

nombre.

session_unset(); Dejamos sin ningún valor asignado a todas

las variables de la sesión

session_id([nombre]); Si no le proporcionamos ningún parámetro

nos da el identificador de sesión; si le

Page 38: Programacion Con Php

PROGRAMACION CON PHP

proporcionamos el parámetro nombre cambia

el valor del identificador por el parámetro

nombre.

session_name([nombre]);

Si se invoca sin parámetro devuelve el

nombre de la variable interna que tiene el id

de sesiones; si se pasa parámetro cambia el

nombre de la sesión.

session_get_cookie_params();

Permite definir nuevos valores para los

parámetros de configuración de las

cookies.Para que el cambio sea permanente

hay que invocar el cambio en todos los

documentos.

session_cache_limiter([cache_limiter]);

Si se le proporciona valor modifica el valor

por defecto en cambio sino se muestra el

caché que tiene por defecto.

session_encode();

Devuelve una cadena con la información de

una sesión, después de usar esta función la

información de la sesión queda actualizada

session_decode(cadena);

Descodifica la cadena que recibe como

parámetro y que contiene la info de sesión,

después de usar esta función se actualiza la

info de sesión.

session_save_path([path]);

Devuelve el camino al directorio donde se

guardan los ficheros asociados a la sesión.El

efecto solo dura en el script actual.

session_module_name([modulo]);

Devuelve el nombre del modulo que se usa

para realizar la gestión de sesiones. Cuando

se invoca un parámetro se usa como nuevo

gestor de sesiones.

session_set_save_handler(open,close,read,write,destroy,gc);

Permite definir su propio manejador para almacenar la información asociada con

una sesión.De esta forma los datos pueden ser metidos en una BD en vez de en un

fichero. Tenemos que pasarle como parámetro toda la información necesaria para

crear y destruir sesiones.

FORMULARIOS CON PHP

Los Formularios no forman parte de PHP, sino del lenguaje estándar de Internet,

HTML. Vamos a dedicar en este capítulo algunas líneas al HTML, para entrar

posteriormente a tratarlos con PHP.

Todo formulario comienza con la etiqueta <FORM ACTION="lo_que_sea.php"

METHOD="post/get"> . Con . Con ACTION indicamos el script que va procesar la

información que recogemos en el formulario, mientras que METHOD nos indica si el

usuario del formulario va ha enviar datos ( post ) o recogerlos ( get ). La etiqueta

<FORM> indica el final del formulario.

Page 39: Programacion Con Php

PROGRAMACION CON PHP

A partir de la etiqueta <FORM> vienen los campos de entrada de datos que pueden ser:

Cuadro de texto:

<input type="text" name="nombre" size="20" value="jose">

Cuadro de texto con barras de desplazamiento:

<textarea rows="5" name="descripcion" cols="20">Es de color rojo</textarea>

Casilla de verificación:

<input type="checkbox" name="cambiar" value="ON">

Botón de opción:

<input type="radio" value="azul" checked name="color">

Menú desplegable:

<select size="1" name="dia">

<option selected value="lunes">lunes</option>

<option>martes</option>

<option value="miercoles">miércoles</option>

</select>

Boton de comando:

<input type="submit" value="enviar" name="enviar">

Campo oculto:

<input type="hidden" name="edad" value="55">

Este último tipo de campo resulta especialmente útil cuando que remos pasar datos

ocultos en un formulario.

Como habrás observado todos lo tipos de campo tienen un modificador llamado name ,

que no es otro que el nombre de la variable con la cual recogeremos los datos en el

script indicado por el modificador ACTION de la etiqueta FORM FORM , con value

establecemos un valor por defecto.

A continuación veamos un ejemplo, para lo cual crearemos un formulario en HTML

como el que sigue y lo llamaremos formulario.htm :

<HTML>

<BODY>

Page 40: Programacion Con Php

PROGRAMACION CON PHP

<FORM METHOD="post" ACTION="mis_datos.php">

<input type="hidden" name="edad" value="55">

<p>Tu nombre <input type="text" name="nombre" size="30" value="jose"></p>

<p>Tu sistema favorito

<select size="1" name="sistema">

<option selected value="Linux">Linux</option>

<option value="Unix">Unix</option>

<option value="Macintosh">Macintosh</option>

<option value=&qmargin-left: 75"><option value="Windows">Windows</option>

</select></p>

<p>¿Te gusta el futbol ? <input type="checkbox" name="futbol" value="ON"></p>

<p>¿Cual es tu sexo?</p>

<blockquote>

<p>Hombre<input type="radio" value="hombre" checked name="sexo"></p>

<p>Mujer <input type="radio" name="sexo" value="mujer"></p>

</blockquote>

<p>Aficiones</p>

<p><textarea rows="5" name="aficiones" cols="28"></textarea></p>

<p><input type="submit" value="Enviar datos" name="enviar">

<input type="res-left: 50"> <input type="reset" value="Restablecer" name="B2"></p>

</FORM>

</BODY>

<HTML>

Y ahora creemos el script PHP llamado desde le formulario mis_datos.php :

Todos los datos se encuentran en la variable $_POST, ya que el formulario está enviado

por el método post.

<?PHP;

Page 41: Programacion Con Php

PROGRAMACION CON PHP

if (isset($_POST['enviar']) {

echo "Hola <b>" . $_POST['nombre'] . "</b> que tal estás<BR>n";

echo "Eres " . $_POST['sexo'] . "<BR>n";

echo "Tienes " . $_POST['edad'] . "<BR>n";

echo "Tu sistema favorito es " . $_POST['sistema'] . "<BR>n";

if (isset($_POST['futbol']) {

echo "Te gusta el futbol <BR>n";

} else odigo" style="margin-left: 50">} else {

echo "NO te gusta el futbol <BR>n";

}

if ($_POST['aficiones'] != "") {

echo "Tus aficiones son: <BR>n";

echo nl2br($_POST['aficiones']);

} else {

echo "NO tienes aficiones <BR>n";

}

}

echo "<a href='formulario.htm'>VOLVER AL FORMULARIO</a>"

?>

Una vez rellenados los datos del formulario, pulsamos el botón Enviar datos , con lo

que le campo enviar toma lo que su etiqueta value indica, es decir enviar="Enviar

datos" . En nuestro script lo primero que evaluamos es que se haya enviado el

formulario, y para ello nada mejor que comprobar que la variable $enviar no está vacía.

Le ponemos el signo dólar delante a enviar , ponemos el signo dólar delante a enviar ,

ya que en PHP todas las variables se les refiere con este signo.

Hay que tener en cuenta que si fusionáramos el código de ambos ficheros, nos

ahorraríamos uno, pero no también se puede hacer en dos como lo estamos haciendo. Si

la variable $enviar está vacia, enviamos el formulario.

<?PHP;

if ($enviar) {

Page 42: Programacion Con Php

PROGRAMACION CON PHP

echo "Hola <b>" . $nombre . "</b> que tal estás<BR>n";

echo "Eres " . $sexo . "<BR>n";

echo "Tienes " . $edad . "<BR>n";

echo "Tu sistema favorito es " . $sistema . "<BR>n";

if ($futbol) {

echo "Te gusta el futbol <BR>n";

} else {

echo "NO te gusta el futbol <BR>n";

}

if ($aficiones != "") {

< stuot;)>

echo "Tus aficiones son: <BR>n";

echo nl2br($aficiones);

} else {

echo "NO tienes aficiones <BR>n";

}

echo "<a href='$PHP_SELF'>VOLVER AL FORMULARIO</a>"

} else {

<HTML>

<BODY>

<FORM METHOD="post" ACTION="<?PHP echo $PHP_SELF ?>">

<input type="hidden" name="edad" value="55">

<p>Tu nombre <input type="text" name="nombre" size="30" nombre" size="30"

value="jose"></p>

<p>Tu sistema favorito

<select size="1" name="sistema">

<option selected value="Linux">Linux</option>

Page 43: Programacion Con Php

PROGRAMACION CON PHP

<option value="Unix">Unix</option>

<option value="Macintosh">Macintosh</option>

<option value="Windows">Windows</option>

</select></p>

<p>¿Te gusta el futbol ? <input type="checkbox" name="futbol" value="ON"></p>

<p>¿Cual es tu sexo?</p>

<blockquote>

<p>Hombre<input type="radio" value="hombre" checked name="sexo"></p>

<p>="codigo" style="margin-left: 100"><p>Mujer <input type="radio" name="sexo"

value="mujer"></p>

</blockquote>

<p>Aficiones</p>

<p><textarea rows="5" name="aficiones" cols="28"></textarea></p>

<p><input type="submit" value="Enviar datos" name="enviar">

<input type="reset" value="Restablecer" name="B2"></p>

</FORM>

</BODY>

</HTML>

<?PHP

} //fin IF

?>

La variable de entorno $PHP_SELF , es una variable de entorno que nos devuelve el

nombre del script que estamos ejecutando. Y por último, hacer notar el uso de la

función nl2br() , nl2br() , con la cuál sustituimos los retornos de carro del texto, los

cuáles no reconocen los navegadores, por la etiqueta <BR> .

Descarga de ficheros desde un formulario

Vamos a ver un caso especial, como descargar un archivo desde un formulario. Para ello

utilizaremos una etiqueta INPUT de tipo FILE , soportada a partir de las versiones de

los navegadores Nestcape Navigator 2.0 e Internet Explorer 4.0.

Page 44: Programacion Con Php

PROGRAMACION CON PHP

El formulario debe usar el método post , y el atributo post , y el atributo enctype debe

tener el valor multipart/form-data . Además al formulario debemos añadirle un campo

oculto de nombre MAX_FILE_SIZE , al cuál le daremos el valor en bytes del tamaño

máximo del archivo a descargar.

<FORM ENCTYPE="multipart/form-data" ACTION="7-3.php" METHOD="post">

<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000">

<INPUT NAME="archivo" TYPE="file">

<INPUT TYPE="submit" VALUE="Descargar Archivo">

</FORM>

Cuando el formulario es enviado, PHP detectará automáticamente que se está

descargando un archivo y lo colocará en un directorio temporal en el servidor. Dicho

directorio será que el que esté indicado en el archivo de configuración php.ini , o en su

defecto en el directorio temporal del sistema.

Cuando PHP detecta que se está descargando un archivo crea varias variables con el

prefijo del nombre del archivo pero con distintas terminaciones. La variable terminada

en $_FILES['archivo']['name'] contiene el nombre original del archivo,

$_FILES['archivo']['size'] contiene el tamaño en bytes de éste, y la variable

$_FILES['archivo']['type'] nos indicará el tipo de archivo si éste es ofrecido por el

navegador.

Si el proceso de descarga no ha sido correcto la variable archivo tomará el valor none y

_size será 0 , y si el proceso ha sido correcto, pero la variable $_FILES['archivo']['size']

da 0 , quiere decir que el archivo a descarga supera el tamaño máximo indicado por

MAX_FILE_SIZE .

Una vez descargado el archivo, lo primero que debemos hacer es moverlo a otro lugar,

pues sino se hace nada con él, cuando acabe la ejecución de la página se borrará.

Veamos un ejemplo de todo lo dicho.

<HTML>

<BODY>

<?PHP

if (isset($_POST['enviar']) {

if ($_FILES['archivo']['name'] != "" && $_FILES['archivo']['size'] != 0){

echo "Nombre: $archivo_name <BR>n";

echo "Tamaño: $archivo_size <BR>n";

echo "Tipo: $archivo_type <BR>n";

Page 45: Programacion Con Php

PROGRAMACION CON PHP

if (! move_uploaded_file ($_FILES['archivo']['tmp_name'],

"directorio/".$_FILES['archivo']['name'])) {

echo "<h2>No se ha podido copiar el archivo</h2>n";

}

} elseif ($_FILES['archivo']['name'] != "" && $FILES['archivo']['size'] == 0) {

echo "<h2>Tamaño de archivo superado</h2>n";

} else {

echo "<h2>No ha escogido un archivo para descargar</h2>n";

}

echo "<HR>n";

}

?>

<FORM ENCTYPE="multipart/form-data" ACTION="<?php echo

$_SERVER['PHP_SELF']; ?>" METHOD="post">

<INPUT type="hidden" name="MAX_FILE_SIZE" value="100000">

<p><b>Archivo a descargar<b><br>

<INPUT type="file" name="archivo" size="35"></p>

<p><INPUT type="submit" name="enviar" value="Aceptar"></p>

</FORM>

</BODY>

</HTML>

Page 46: Programacion Con Php

PROGRAMACION CON PHP