Manual de PHP de WebEstilo
Manual de PHP de WebEstilo
Manual de PHP de WebEstilo
($link=mysql_connect("localhost","usuario","Password"))) { echo "Error conectando a la base de datos."; exit(); } if (!mysql_select_db("base_datos",$link)) { echo "Error seleccionando la base de datos."; exit(); } return $link; } $link=Conectarse(); echo "Conexin con la base de datos conseguida.<br>"; mysql_close($link); //cierra la conexion ?> </body> </html> <?php function Conectarse() { if (!($link=mysql_connect("localhost","usuario","Password"))) { echo "Error conectando a la base de datos."; exit(); } if (!mysql_select_db("base_datos",$link)) { echo "Error seleccionando la base de datos."; exit(); } return $link; } ?>
<!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1> <?php include("conex.phtml"); $link=Conectarse(); $result=mysql_query("select * from prueba",$link); ?> <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1> <TR><TD> Nombre</TD><TD> Apellidos </TD></TR> <?php while($row = mysql_fetch_array($result)) { printf("<tr><td> %s</td><td> %s </td></tr>", $row["Nombre"],$row["Apellidos"]); } mysql_free_result($result);
Una de las herramientas mas importantes en cualquier lenguaje de programacin son las funciones. Una funcin 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 funcin puede recibir parmetros externos de los cuales dependa el resultado de una funcin. Las funciones deben ser colocadas siempre antes de realizar la llamada a la funcin (como es lgico). La sintaxis de una funcin es la siguiente: function nombre(parmetros){ instrucciones de la funcin } para llamar a la funcin sera de la siguiente forma: nombre(parmetros) Un ejemplo para entender el uso de funciones es el siguiente: Crearemos una funcin que realice la suma de dos nmeros 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 funcin solo existirn o tendrn dicho valor dentro de la funcin. Existen casos en los cuales no sabemos el nmero de parmetros que le pasaremos a la funcin y en estos casos debemos usar las funciones creadas al efecto como son: func_num_args() Numero de parmetros que se le han pasado a la funcin func_get_args() Devuelve un elemento de los que forman la lista de argumentos
En ocasiones es necesario cargar el mismo archivo en diferentes scripts y de esa forma no repetir el mismo cdigo en diversos scripts. Parece entonces razonable que debe existir algn mtodo o forma de cargar algn archivo externo y de esa forma generar pginas web mas dinmicas. 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 lnea y 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 lnea 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 segn si se cumple o no una condicin. CADENAS DE CARACTERES
En este captulo 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 accin 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 delimitacin son: Secuencia n r t $ " [0-7]{1,3} Significado Nueva lnea Retorno de carro Tabulacin horizontal Barra invertida Signo de dlar Comillas dobles 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 funcin chr(valor) nos devuelve en una variable del tipo cadena el caracter de la tabla de cdigos ASCII asociado a un valor que recibe como parmetro, el valor que se pase debe estar entre 0 y 255. La funcin ord(cadena) nos devuelve un nmero entero que se corresponde con el cdigo ASCII del primer caracter que recibe como parmetro. Visualizacin de cadenas - Echo: Es el modo de visualizacin 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 estndar. No soporta ningn 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 alineacin (por defecto a la izquierda), valor numrico ( numero mnimo de caracteres que deben mostrarse), numero de decimales y tipo de datos cuyas posibilidades son: Smbolo % b c d f o Significado Representa el smbolo del porcentaje El argumento se trata como n entero y se representa en codificacin binaria. El argumento se trata como n entero y se muestra el caracter cuyo cdigo ASCII se corresponde con el valor. El argumento se trata como n entero y se representa en codificacin decimal sin parte fraccionaria El argumento se trata como un n de tipo double y se representa como un decimal sin coma flotante El argumento se trata como un n entero y se representa en codificacin octal
s x X
El argumento se trata y representa como una cadena de caracteres El argumento se considera un n entero y se representa en codificacin hexadecimal en minsculas El argumento se considera un n entero y se representa en codificacin hexadecimal en maysculas
- Sprintf(formato,[valores]); su funcionamiento es idntico a printf. Lo nico que la cadena resultante de aplicarle un determinado formato se guarda en una variable. Alteracin 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 lnea 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 aade los caracteres necesarios.El lugar de aadir puede ser: str_pad_left aade por la derecha(opcin por defecto), str_pad_right aade por la izquierda y str_pad_both aade por ambos extremos. - str_repeat(caracter,numero_veces); Repite un caracter el numero de veces indicado - strtolower(cadena); Pasa toda la cadena a letras minsculas - strtoupper(cadena); Pasa toda la cadena a letras maysculas - ucfirst(cadena); Pasa a mayscula el primer caracter de una cadena - ucwords(cadena); Pone en maysculas 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 cambiara todas las vocales con acento por vocales sin acento. - substr_replace(cadena,nueva,comienzo,longitud); Sustituye una porcin 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 aparicin de todos los caracteres del cdigo 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 cdigo ASCII 4->Cadena con caracteres no usados en el cdigo ASCII - substr_count(cadena,subcadena); Frecuencia de aparicin de una cadena -strchr(cadena,caracter); Devuelve la subcadena que comienza en la primera aparicin del caracter indicado - strstr(cadena,subcadena); Localiza subcadena dentro de la cadena original - stristr(cadena,subcadena); Igual que la funcin anterior pero sin distincin entre maysculas y minsculas - 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); Porcin de texto que empieza en una posicin y tiene una longitud - strcmp(cadena1,cadena2); Compara dos cadenas siendo sensible a maysculas y minsculas - strcasecmp(cadena1,cadena2); Compara dos cadenas sin ser sensible a maysculas y minsculas - strncmp(cadena1,cadena2,tamao); Compara los N primeros caracteres de una cadena - strnatcmp(cadena1,cadena2); Sensible a maysculas y minsculas. Compara dos cadenas. - strnatcasecmp(cadena1,cadena2); No sensible a maysculas y minsculas. 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 funcin nueva. - explode(separador,cadena,limite); Permite obtener una matriz de cadenas de caracteres extradas del original. - implode(separador,elementos); Junta en una cadena los elementos de una matriz usando como concatenacin el separador pasado como parmetro. - 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. *Apoyo a HTML addcslashes(cadena,lista); Devuelve una cadena que tiene escapados todos los caracteres como parmetro. addslashes(cadena); Devuelve una cadena que tiene escapados todos los caracteres lgicos 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 &->&,"->" - htmlentities(); Convierte todos los caracteres a entidades html. pasa a ser á - get_html_translation_table(htmlentities o html_specialchars); Obtiene la relacin de traduccin 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 lnea por <br> - parse_url(cadena_url); Devuelve una matriz asociativa con los siguientes campos:
Significado Http Ip o DNS puerto nombre usuario path completo al recurso query string con datos al recurso
password contrasea
FECHAS
En este captulo se estudiarn las funciones existentes en PHP para el empleo de fechas. Este tipo de funciones existen en la mayora de lenguajes de programacin y van orientadas a su obtencin y representacin en diferentes formatos. El tiempo en cualquier lenguaje de programacin 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 funcin ms sencilla que se basa en esta marca de tiempo es la funcin time() cuyo valor devuelto es el numero entero que representa la marca de tiempo correspondiente al instante en que se ejecut la funcin 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 quisiremos tener como valor de referencia la hora del ordenador desde el cual se ejecuta emplearamos la funcin gettimeofday() en la cual pasaramos como parmetro interno , sec (para saber los segundos), usec (microsegundos), minuteswest (n segundos al oeste de greenwich) y dstime (tipo de correccin en horarios de verano e invierno). Estas funciones citadas anteriormente son poco utilizadas ya que la existencia de otras funciones ms completas, como por ejemplo la funcin getdate() que obtiene una matriz asociativa con la informacin de la fecha y hora del sistema. Los elementos de dicha matriz son: Clave seconds minutes hours mday wday mon year yday weekday month 0 Contenido Numero de segundos de la hora actual Numero de minutos de la hora actual Numero de horas de la hora actual Da correspondiente del mes Da de la semana en valor numrico(empezando por 0) Mes del ao en valor numerico.Del 1 al 12. Valor numrico del ao Da del ao en valor numrico Cadena de caracteres que contiene el da de la semana(en ingles) Cadena de caracteres que contiene el mes del ao(en ingles) Marca de tiempo obtenida por la funcin getdate()
Si no le pasamos ningn parmetro a la funcin entonces se considera la hora actual del sistema y si se recibe como parmetro un numero entero entonces lo convierte a la fecha correspondiente. Otra funcin para obtener la hora es la funcin localtime(marca_tiempo,tipo_matriz); cuyos valores pasamos a comentar a continuacin: ndice 0 1 2 3 4 5 6 7 8 Formatos de fechas Las funciones vistas anteriormente nos permitan convertir el valor entero de la fecha en un valor mas fcilmente entendible, aunque para poder acceder a dicha informacin hay que pasar por el paso previo de obtener una matriz. Para evitar ese paso intermedio, PHP pone a tu disposicin la funcindate(formato,marca_tiempo); Esta funcin 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: Opcin a A d D F h H g G i j L m M s S t U w Y y z Z Descripcin Hace que en la hora aparezca la cadena am o pm Hace que en la hora aparezca la cadena AM o PM Da del mes con dos dgitos desde 01 a 31 Da de la semana como cadena de tres letras(en ingles).Ejemplo: "Mon" Nombre del mes completo como una cadena de caracteres.Ejemplo: "March" Hace que la hora aparezca en formato 01 a 12 Hace que la hora aparezca en formato 00 a 23 Hace que la hora aparezca en formato 1 a 12 Hace que la hora aparezca en formato 0 a 23 Hace que los minutos aparezcan en formato 00 a 59 Hace que el da aparezca en formato 1 a 31 Escribe 0 si no es ao bisiesto y 1 si lo es Hace que el mes aparezca en formato 01 a 12 Hace que el mes aparezca en formato 1 a 12 Hace que los segundos aparezcan en formato 00 a 59 Cadena de caracteres con el sufijo ordinal.Ejemplo: "th","nd". Nmero de das del mes especificado de 28 a 31 Nmero de segundos desde el comienzo de la "era UNIX" Nmero del da de la semana de 0 a 6 Ao con cuatro cifras Ao con dos cifras Da del ao de 0 a 365 Obtiene la diferencia horaria en segundos con respecto al GMT Clave tm_sec tm_min tm_hour tm_mday tm_wday tm_mon tm_year tm_yday tm_isdst Contenido Numero de segundos de la fecha indicada Numero de minutos de la fecha indicada Numero de horas de la fecha indicada Da correspondiente del mes Da de la semana en valor numrico(empezando por 0) Mes del ao en valor numerico.Del 0 al 11. Valor numrico del ao.(se ve afectado por el efecto 2000) Da del ao en valor numrico Indica si esta activado el efecto del cambio de hora.
La funcin strftime() representa otra posibilidad para aplicar formatos a una fecha. Esta funcin utiliza las convenciones locales de la mquina 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: Opcin %a %A Descripcin Nombre del da de la semana abreviado en el idioma actual Nombre del da de la semana completo en el idioma actual
%b %B %c %d %H %I %j %m %M %p %S %U %W %w %x %X %y %Y %Z %%
Nombre del mes abreviado en el idioma actual Nombre del mes completo en el idioma actual Representacin de fecha y hora en el idioma actual Da del mes en formato 01 a 31 Hora como numero de 01 a 12 Hora como numero de 01 a 12 Da del ao como numero de 001 a 366 Mes como numero de 01 a 12 Minuto en numero am o pm segn la hora dada Segundos en numero Numero de la semana del ao como el primer domingo como primer da de la semana Numero de la semana del ao como el primer lunes como primer da de la semana Da de la semana en numero de 0 a 6 Representacin por defecto de la fecha sin hora Representacin por defecto de la hora sin fecha Ao en numero de 00 a 99 Ao en numero de cuatro cifras 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 continuacin: La funcin mktime(hora,minuto,segundo,mes,dia,ao,[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 funcin gmmktime() funciona de la misma forma lo que considera que los parmetros representan una hora GMT. La funcin setlocale(categoria,pais); nos permite establecer el idioma en los que aparecern la fecha,hora,etc. Las categoras posibles son: Opcin LC_TYPE LC_TIME LC_ALL Descripcin Conversin de cadenas a configuracin regional Para aplicar formatos de fecha y hora con strftime() Todos los anteriores
Validacin de fechas Existen numerosas ocasiones en las que es necesario la creacin 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 comprobacin: - checkdate(mes,dia,ao); 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 programacin ya que no tiene sentido que un lenguaje de programacin no pueda escribir, leer, actualizar datos de una base de datos, etc. En este captulo nos centraremos bsicamente 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 supondra tener que modificar todas las paginas HTML de aquellos productos en los cuales en la temporada de oferta su precio se viera afectado. La solucin ms primitiva para el almacenamiento de datos es un fichero de texto, el contenido del fichero de texto puede ser cualquiera. Cmo abrimos un fichero? Para abrir un fichero PHP pone a disposicin una funcin. 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 r r+ w w+ a a+ Efecto Solo lectura Lectura y escritura Slo escritura. Borra el contenido anterior Lectura y escritura. Borra el contenido anterior. Solo escritura. Conserva el contenido anterior. Lectura y escritura. Conserva el contenido anterior
La funcin fopen devuelve un manejador de fichero que es el que utilizaremos en las funciones relacionadas con la lectura y escritura de ficheros. Cmo se recorre un fichero? Para leer un fichero lgicamente la operacin 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 posicin actual con respecto a todo el texto. Para comprobar si se ha llegado al final del archivo, PHP pone a nuestra disposicin la funcin feof(manejador_fichero); que se encarga de comprobar si la posicin actual del fichero es la marca del final. La funcin mas genrica de lectura es fread(manejador_fichero,n_bytes); que se encarga de leer un numero determinado de bytes del fichero y devolvrnoslo en una cadena de caracteres. En cambio, si lo que pretendemos es leer el fichero caracter a caracter debemos usar la funcin fgetc(manejador_fichero); . Otras de las funciones mas caractersticas son: fgets(fichero,n bytes); que nos devuelve una cadena de caracteres con la informacin leda. fgetss(manejador_fichero,n bytes,[mostrar_tags]); nos lee un fichero HTML omitiendo las etiquetas caractersticas del cdigo, 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 funcin fscanf(manejador_fichero,formato,variables); Esta funcin obtiene los datos de entrada de un fichero siguiendo un formato determinado. Posteriormente dicha informacin debe ser tratada por el programador.
La ultima funcin que vamos a estudiar para abrir ficheros es la funcin file(nombre_fichero); con esta funcin no es necesario usar las funciones fopen() y fclose() ya que se ejecutan de forma implcita. Cmo se cierra un fichero? Cerrar es la ultima operacin 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 funcin fclose(manejador_fichero); Escritura en ficheros
Para escribir en un fichero bsicamente debemos realizar tres operaciones: abrir el fichero en modo escritura, realizar la operacin 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 aadir 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 posicin del fichero para leer a partir de ah.
La funcin fseek(manejador_fichero,posicion); Nos permite empezar a leer un fichero a partir de una posicin segn se determine: seek_set (se toma con el principio del fichero), seek_cur (posicin actual), seek_end (posicin final). Existen dos funciones bsicas que nos posicionan al principio del fichero -> rewind(manejador_fichero); o que nos devuelven el valor actual de la posicin-> 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 ningn fallo. set_file_buffer(fichero,tamao); Determina el tamao del buffer de ese archivo que usara PHP. readfile(fichero); Lee un fichero y lo muestra por el mtodo de salida estndar. OPERACIONES CON FICHEROS
En el desarrollo y administracin de sitios webs resulta bastante habitual tener que acceder a ficheros del servidor para manipularlos. Por esta razn en este captulo vamos a describir las funciones creadas en PHP para realizar dichas operaciones. Cambio, creacin y borrado de directorios chdir(ruta_al_directorio); Nos permite cambiar el directorio activo a la ruta establecida como parmetro. mkdir(ruta_al_directorio,permisos); Esta funcin crea un nuevo directorio en la ruta que hemos indicado, el segundo parmetro debe ser un numero octal y es por el que vienen determinados los permisos. rmdir(ruta_directorio); Borra el directorio pasado como parmetro. Procesamiento de los elementos de un directorio Supongamos que queremos realizar una operacin determinada como una bsqueda, visualizacin, etc sobre todos los ficheros de un directorio. PHP nos proporciona una solucin a este problema: el manejador de directorios (representa una conexin lgica con un directorio determinado que permite leer la lista con los nombres de los elementos contenidos en el directorio actual). La funcin empleada para abrir un directorio es opendir(ruta); cuya funcin como ya se ha comentado es abrir el directorio de la ruta especificada. Una vez se ha ejecutado opendir() podemos realizar tres operaciones:
La funcin readdir(manejador); nos devuelve una cadena con el nombre del siguiente elemento del directorio, ya sea un subdirectorio o un fichero. La funcin rewinddir(manejador); procesa un directorio y sita el puntero interno en el primer directorio. La funcin 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 mtodos y 2 propiedades(las propiedades slo de consulta por lo que no pueden ser modificadas. Los mtodos 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 parmetro. Atributos de ficheros y directorios Los ficheros y directorios poseen una serie de caractersticas propias denominadas atributos. PHP pone a nuestra disposicin un conjunto de funciones que nos permitirn obtener informacin sobre los archivos o carpetas. La funcin file_exists(elemento); Comprueba que el elemento pasado como parmetro exista. filesize(nombre_fichero); nos informa sobre el tamao del fichero en bytes.
La funcin filemtime(fichero); nos informa sobre la ultima modificacin del fichero. La funcin filectime(fichero); nos informa sobre el ltimo cambio al fichero. La funcin filetype(fichero); nos devuelve el tipo de elemento que estamos tratando. Los resultados posibles que puede devolver son: Resultado Significado block char dir fifo file link Dispositivo de bloques Caracteres Directorio FIFO Fichero Enlace
unknown Desconocido Chmod(elemento_directorio,permisos); recibe como parmetro el elemento y los permisos que deseamos otorgarle a dichos elementos
En este captulo nos dedicaremos a explicar el lenguaje SQL ya que posteriormente lo usaremos mucho en las conexiones de PHP con MySQL. Creacin y modificacin 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 Tinyint[Unsigned] Smallint[Unsigned] Int o Integer Float[ (M,D) ] Double [ (M,D) ] Decimal [ (M [,D]) ] Date Time Char(longitud) Varchar(longitud) Descripcin Entero de 0 a 255 o de -128 a 128 Entero de 0 a 65535 o de -32768 a 32768 Entero normal.Rango de -2147483648 a 214783648 Nmero de coma flotante de simple precisin si no se pasa ningun argumento M es el n de digitos y D el n de decimales Nmero de coma flotante de doble precision. Siempre dispone de signo M y D Nmero almacenado como cadena de caracteres M es el nmero total de dgitos y D el n de decimales Tipo fecha.Admite formatos "AAAA-MM-DD" o "AA-MM-DD" o "AAMMDD" Tipo hora.Admite formato "HH:MM:SS" o "HHMMSS" o "HHMM" o "HH" Cadena de caracteres de la longitud indicada.Se reserva el espacio en caracteres aunque no se usen Cadena de caracteres de la longitud indicada que se almacena con su ocupacion.Mxima longitud: 255 caracteres
Blob Text
Tipo destinado a almacenar bits sin intrepretar.Se usa para almacenar texto mas largo de 255 caracteres.Diferencia maysculas de minsculas. Tipo destinado a almacenar bits sin intrepretar.Se usa para almacenar texto mas largo de 255 caracteres.No diferencia maysculas de minsculas.
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 creara 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 Definicin] //Aadira un nuevo campo [CHANGE AntiguoNombreAtributo NuevoNombreAtributo Definicin] [DROP NombreAtributo]; //Borrara un campo
//Cambiara un campo
Los ndices son una estructura de acceso que permiten organizar los datos contenidos en una tabla. Para crear un ndice usaramos la siguiente sintaxis: CREATE [UNIQUE] INDEX NombreIndice ON Tabla (Campos); Manipulacin de datos -Insercin 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 accin 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 informacin o realizar operaciones con respecto a las filas. Las funciones son: funcin SUM(Campo) AVG(Campo) MAX(Campo) MIN(Campo) - Eliminacin de datos Para eliminar datos usamos la sentencia DELETE cuya sintaxis es la siguiente: DELETE FROM NombreTabla [WHERE Condicin]; Descripcin Suma los valores del atributo indicado Obtiene la media aritmtica del atributo Obtiene el valor mximo del atributo Obtiene el valor mnimo del atributo
Una vez que ya hemos explicado un poco por encima todas las operaciones posibles y lgicas 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 genrica de obtener informacin de tablas en Mysql es la siguiente: Conexin con el gestor. Preparacin de la consulta SQL. Ejecucin de la consulta. Procesamiento del resultado obtenido en el cursor. Liberacin de recursos (esta es opcional, aunque es recomendable). Cierre de la conexin con el gestor.
Para realizar estas y otras muchas mas cosas disponemos de las siguientes funciones: Funcin Descripcin
Establece la conexin con el servidor. Recibe el host y el usuario y mysql_connect("host","usuario","password") contrasea con el que debe conectar. mysql_select_db("base de datos",conexin) mysql_query(consulta,conexin) mysql_num_fields(cursor) Selecciona la base de datos sobre la cual se va a trabajar Ejecuta la consulta SQL indicada como primer parmetro. Devuelve el numero de atributos que figuran en el cursor que se le pasa como parmetro y en el que se almacena el resultado de la consulta Avanza a la siguiente posicin de la fila en cursor. Devuelve un array que contiene en sus celdas cada uno de los valores de los atributos de la fila. Libera los recursos asociados al cursor. Cierra la conexion establecida con mysql_connect.
Una de las ventajas que proporciona la altsima integracin 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: Funcin mysql_list_dbs(conexion) mysql_list_tables(base_datos,conexion) mysql_tablename(cursor,numero_fila) mysql_field_name(cursor,numero_col) mysql_field_type(cursor,numero_Col) mysql_field_len(cursor,numero_col) mysql_field_flags(cursor,numero_col) mysql_affected_rows(conexion) mysql_create_db(basedatos) mysql_drop_db(basedatos) mysql_insert_id(cursor) Descripcin Devuelve en un cursor los nombres de las bases de datos disponibles en el servidor al que se haya conectado con mysql_connect Devuelve en un cursor los nombres de las tablas disponibles en la base de datos. Devuelve el nombre de la tabla o base de datos en la que esta el cursor indicado Devuelve el nombre del campo cuyo ndice se pasa como segundo parmetro Devuelve el tipo del campo cuyo ndice se pasa como segundo parmetro Devuelve la longitud del campo cuyo ndice se pasa como segundo parmetro Devuelve una serie de indicativos correspondientes a caractersticas del atributo cuyo ndice se pasa como segundo parmetro Devuelve el numero de filas afectadas por una actualizacin o borrado Crea una base de datos con el nombre pasado por parmetro Elimina la base de datos pasada por parmetro Devuelve el valor generado para un AUTOINCREMENT
SESIONES
Generalmente una web se compone de una serie de pginas entre las que existe alguna relacin. Un ejemplo claro es una pgina en la cual es necesario estar registrado para poder acceder a ellas ya que en funcin de la categora 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 sesin se inicia cuando un usuario entra en la aplicacin web y finaliza cuando el usuario abandona la aplicacin (mas adelante comprenderemos lo de "abandonar aplicacin"). Durante todo ese tiempo podemos manipular una serie de variables que se inician al iniciar la sesin y mantener un tipo de informacin comn entre todas las pginas (en el caso de el usuario registrado seria los privilegios que posee). Para mantener esta informacin 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 solucin muy bsica que consiste en un identificador de sesin diferente en cada caso. Este identificador de sesin debe ser enviado de una pagina a otra para mantener la sesin activa(a menos que en la configuracin del servidor tengamos activada la opcin session_trans_id) y tambin es necesario pasar el identificador de sesin en los formularios como un campo HIDDEN.
-Formulario <input type="hidden" name="session_name()" value="SID"> Funciones de gestin de sesiones funcin session_start(); session_destroy(); session_register(nombre); session_unregister(nombre); session_is_registered(nombre); session_unset(); session_id([nombre]); Significado Si es la primera solicitud genera un identificador de sesin aleatorio cuyo nombre ser sess_IDsesin; si es otra solicitud continua la sesin iniciada anteriormente. Elimina todos los datos asociados con una sesin, borra el archivo en el servidor pero no borra la cookie. Recibe como parmetro una serie de nombres de variable globales y los registra como variables de sesin en el fichero del servidor Eliminamos la variable global introducida y se elimina el contenido de esta variable en el fichero del servidor.Sin pasar el parmetro nombre eliminaremos todas las variables de la sesin. Devuelve true en caso de que en la sesin se encuentre registrada una variable con dicho nombre. Dejamos sin ningn valor asignado a todas las variables de la sesin Si no le proporcionamos ningn parmetro nos da el identificador de sesin; si le proporcionamos el parmetro nombre cambia el valor del identificador por el parmetro nombre. Si se invoca sin parmetro devuelve el nombre de la variable interna que tiene el id de sesiones; si se pasa parmetro cambia el nombre de la sesin. Permite definir nuevos valores para los parmetros de configuracin de las cookies.Para que el cambio sea permanente hay que invocar el cambio en todos los documentos. Si se le proporciona valor modifica el valor por defecto en cambio sino se muestra el cach que tiene por defecto. Devuelve una cadena con la informacin de una sesin, despus de usar esta funcin la informacin de la sesin queda actualizada Descodifica la cadena que recibe como parmetro y que contiene la info de sesin, despus de usar esta funcin se actualiza la info de sesin.
session_name([nombre]);
session_save_path([path]); session_module_name([modulo]);
Devuelve el camino al directorio donde se guardan los ficheros asociados a la sesin.El efecto solo dura en el script actual. Devuelve el nombre del modulo que se usa para realizar la gestin de sesiones. Cuando se invoca un parmetro 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 informacin asociada con una sesin.De esta forma los datos pueden ser metidos en una BD en vez de en un fichero. Tenemos que pasarle como parmetro toda la informacin necesaria para crear y destruir sesiones.