Tutorial de PHP y MySQL COMPLETO José Antonio Rodríguez 2000.



Documentos relacionados
Instalación y Configuración de la interfaz de TPV.

Telealta de Abonados. Guía de Telealta en CST BIOINGENIERÍA ARAGONESA S.L. Índice. Vivienda del Abonado. Central de CST

MySQL. o o. o o o o o o o. o o o o. o o o o. EQUIPO 8 Tutorial de PHP y MySQL. 1. Instalación de Apache+PHP+MySQL

EL ESCRITORIO DE WINDOWS Y LA BARRA DE TAREAS

Inicio. En este sitio encontrarás las indicaciones para aprender a crear una wiki en Google Sites.

PHP MIS PRIMERO PASOS MI PRIMER SCRIPT

Guía de integración del módulo de Redsys en WooCommerce

AVANCE SOLUCIONES INFORMÁTICAS. Preguntas Frecuentes SGTaller. Cómo respaldo la información del programa?

PROGRAMA FORMATIVO AvANZA

Cómo configurar el aula en Moodle?

Sesiones 2-3: Transformación de datos

Perceptrón Adaline. ( Desarrollado en el entorno Eclipse en el lenguaje JAVA ) Jose Alberto Benítez Andrades A

Microsoft Excel. Excel tiene una gran variedad de cosas que si eres persona de negocios, te va a servir mucho.

Web Biblioteca Complutense 2006: Manual del Gestor de Contenidos. Versión 1.1. Mayo 2006

Plataforma de formación. Guía de navegación

Eurowin 8.0 SQL. Manual de EW-LOG. Revisión de incidencias

Manual de usuario para la Publicación de Becas a través de la página web institucional

Notificaciones Telemáticas Portal del Ciudadano MANUAL DE USUARIO. Versión 1.2

Manual para instalación de Teléfono Virtual: X Lite.

SERVIDOR VIRTUAL IPLAN

El agente de software de Dr.Web SaaS

BUEN USO DEL CORREO ELECTRÓNICO

Guía de integración del módulo de Redsys en Magento

Wimba Pronto. Guía de instalación de laboratorio informático

Administración Local Soluciones

MEFFLiveUpdate Configuración MANUAL DE USUARIO

API PASARELA SMS HTTP

Guía SERVICIOS WEB PARA BIBLIOTECAS EN DICCIONARIO. (19 julio 2012)

Guía del Firewall Router ECI B-FOCuS. - Apertura de puertos - DMZ

ecompetició Inscripciones Para acceder: > Serveis Fecapa > Intranet ecompetició

CASO 9187 Se corrige falla que borra el SLA de los casos relacionados entre sí luego de que se ejecute una regla que modifique casos relacionados.

GUÍA RÁPIDA DE USO. Requisitos tecnológicos para el correcto funcionamiento de Bot PLUS 2.0.

SISTEMAS OPERATIVOS. Pág. 1

Para instalar Hoteldruid, utilizaremos easyphp, cuya instalación ya se ha descrita en el vídeo de instalación de FacturaScripts

PRÁCTICA 5: REDES LOCALES

Phontage. En este documento se explica cómo utilizar la herramienta Phontage desde un PC y aplicaciones de backup y grabación de conversaciones.

Plataforma de formación. Guía de navegación

C.I.T. - Customer Interface Technology EXPRESS SHIPPER INSTALACIÓN

65 HORAS. documentos. describe el. información. de la suite. Pág.1

IMPLEMENTACIÓN DE UN PROGRAMA QUE UTILICE LA LLAMADA AL SISTEMA

Realizar copias de seguridad de archivos

Pack Comercio Electrónico

Importación de facturas desde Excel

PISIS Cliente Neo. Guía de Instalación y Uso Versión del documento: 1.8 Fecha: Octubre 10 de 2014

INDICE. Servicios Informáticos. Guía básica del usuario de Symantec Endpoint Protection Windows Página 1 de 11

Registro de Autorización Empresa Venta y Asistencia Técnica de Comunidades Autónomas

Sistemas de numeración

Correo en tu Tigo, por SMS

Universidad Interamericana de Puerto Rico, Recinto de Ponce Programa de Distancia. Creado por: Miguel A. Medina

Acronis Backup & Recovery 10

Preguntas Frecuentes de ebanking

MANUAL DE USUARIO DEL VISOR URBANÍSTICO

/07/2008. Descripción: Copias de seguridad y Exportar/Importar datos. Objetivos:

INTRODUCCIÓN A BSCW CFIE VALLADOLID I (Mayo de 2003)

Bases de Datos Relacionales

PHP y MySQL. PHP & MySQL. 1. Instalación de Apache+PHP+MySQL o Instalación en Windows o Instalación en Linux/Unix

CONTENIDO 1. INTRODUCCIÓN. 2. Presentación general del software.

BANCOLOMBIA SUCURSAL VIRTUAL EMPRESAS MANUAL DE USUARIO SERVICIO ALTERNO TRANSACCIONAL

1.- ESCRITORIO GNOME 2.- SISTEMA: PREFERENCIAS 3.- SISTEMA: ADMINISTRACIÓN

Curso PHP Módulo 1 R-Luis

Manual de Usuario APLICACIÓN ENVOICE. Página 1. Manual de Usuario de FACTURACIÓN ELECTRÓNICA Sección Facturas

I. INTRODUCCIÓN... 2 II. REQUERIMIENTOS... 2 III. SECCIÓN USUARIOS Objetivo...4. Acceso...4. Consulta de estado de pedimento...

Direccionamiento IP. Realice una tabla como la que se muestra y agregue s. Tome como ejemplo el número

GUIA REGISTRO USUARIOS PARA CONSULTA REPORTES PAGINA WEB APPUCE

VERIFICACIÓN DE REGISTROS DNS

MANUAL CONFIGURACIÓN XMEYE DISPOSITIVOS MOVILES ANDROID

Bases de Datos Relacionales

Curso de Access 2007

Manual breve para la incorporación de sesiones de videoconferencia dentro de cursos de Moodle.

/07/2008. Descripción: Conceptos básicos. Objetivos:

DNS. Regularmente, todos los equipos que están en Internet o una Intranet tienen una dirección IP única que las identifica,

TUTORIAL SOBRE CARGA DE REGISTROS EN KOHA KOBLI. (Importación de registros en MARC 21)

Manual General de Usuario del Proceso. P35 Recibos Digitales. 1.1 Objetivos 1.2 ROLES 1.3 Flujo 2 Inicio del proceso - Carga de archivos de nómina

Instalación del service manager (mysql enterprise monitor)

Tutorial de PHP y MySQL

ARANDA SERVICE DESK WINDOWS VERSIÓN DE ACTUALIZACIÓN QUE SE LIBERA: LISTADO DE ARCHIVOS Tamaño (En Bytes)

TUTORIAL DE PHP. M. en C. Erika Vilches. Parte 2.

Guía de Instalación. char utile online

1.1. Qué entiende por el concepto de generalización de una red neuronal artificial?

MySQL y Sesiones en PHP. Área de Ingeniería Telemática

Relaciones de documentos.

*** Actualizar el Front End, mediante una copia en SLQ SERVER ***

OFICINA DE SISTEMAS UNIDAD DE DESARROLLO PLAN ANUAL DE CONTRATACIONES Y ADQUISICIONES ANEXO 1

Mejoras en el re-instalable No. 2 de Aspel-Caja 3.0

Tutorial de PHP y MySQL COMPLETO José Antonio Rodríguez 2000.

Instalación de Apache+PHP+MySQL en Windows

Manual General de Usuario del Proceso. P36 Recuperación de CFDI de Recibos Timbrados de. Nóminas Extraordinarias

Paessler - Webserver Stress Tool Características

TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN APLICADAS A LA ACTIVIDAD FÍSICA Y EL DEPORTE CURSO 2009/2010

Tutorial de PHP y MySQL

Manual de Usuario- Vendedores. Uso del Portal

HOTEL RURAL. Taller de modelado de objetos. Ingeniería del Software Curso Salamanca, 16-XI Trabajo realizado por:

MANUAL DE USUARIO MODELO WEB DESPACHO IDEAL - MODO SIMULACIÓN

Trabajo Práctico N 3: Lenguaje JAVA

Procedimiento P7-SIS Revisión

GUÍA DE CONFIGURACIÓN DE CORREO etb.net.co EN DISPOSITIVOS MÓVILES

Guía de usuario del Mapa de la Bici

Elabora en un documento PDF como implementa soluciones de alta disponibilidad y balanceo de carga en servidores web Apache 2.

Transcripción:

Tutrial de PHP y MySQL (LuCAS) Página 1 de 54 Tutrial de PHP y MySQL COMPLETO Jsé Antni Rdríguez 2000. http://es.tldp.rg/manuales-lucas/manual_php/manual_php/ 1. Instalación de Apache+PHP+MySQL 2. Sintaxis en PHP Instalación en Windws Instalación en Linux/Unix Mi primer script Variables y Operadres Seriables y Operadres Sentencias de Cntrl Las Tablas Las Funcines Include() y require() Tiemp y fecha Las Clases en PHP 5. Cmenzand cn MySQL MySQL Funcines PHP de acces a MySQL Cnectar a MySQL desde PHP Creación de una Base de Dats en MySQL Imprtar bases de dats desde MS Access Mstrar ls dats de una cnsulta Un buscadr para nuestra base de dats 6. Operacines cn registrs Añadir registrs Mdificar registrs Brrar registrs Td a la vez 3. Frmularis Ls Frmularis Descarga de archivs desde un frmulari 4. Fichers Funcines de acces a fichers 7. Cnexión a MySQL cn ODBC Instalación de MyDOBC Cnexión remta a MySQL cn MS Access Exprtar tablas desde MS Access a MySQL Imprtar tablas desde MySQL a MS Access Instalación de Apache+PHP+MySQL en Windws En este capítul describirems el prces de instalción de la base de dats MySQL, de un servidr web Apache cn PHP, en una máquina cn sistema perativ Windws. L primer que debems hacer es cnseguirns ls prgramas necesaris, y que mejr para ell que diriguirns a las páginas web ( cualquiera de sus mirrs) de ls prgramas en cuestión: cualquiera de sus mirrs) de ls prgramas en cuestión: Apache: www.apache.rg apache_1_3_x_win32.exe MySQL: www.mysql.cm mysql-shareware-3.22.34-win.zip PHP: www.php.net php-3.0.x-win32.zip NOTA: La versión para sistemas Windws de MySQL n es gratuita. Pr l que usarems la versión shareware que está limitada a 30 días. La instalación de ests prgramas es muy fácil, PHP y MySQL vienen cmprimids en frmat ZIP y sól ls tenems que descmprimir en una carpeta, mientras que Apache es autejecutable: Descmprimims PHP en "C:\php3"

Tutrial de PHP y MySQL (LuCAS) Página 2 de 54 Descmprimims MySQL en "C:\mysql" Hacems "dble click" en el ficher de Apache y aceptams el directri de instalación pr defect "C:\Archivs de Prgramas\Apache Grup\Apache". Ya tenems instalads ls prgramas, ahra sól ns queda hacer uns pequeñs ajuste de cnfiguración: APACHE de cnfiguración: APACHE Editams el ficher de cnfiguración http.cnf que se halla en C:\Archivs de Prgramas\Apache Grup\Apache\cnf\" Buscams la línea dnde pne: #ServerName new.hst.name Quitams el cmentari (#) y la cambiams pr: ServerName http://lcalhst Indicams el directri de PHP: ScriptAlias /php3 "C:\php3" Definims la extención de ls script PHP: AddType applicatin/x-httpd-php3.php3 AddType applicatin/x-httpd-php3.php AddType applicatin/x-httpd-php3.phtml Y asignams la aplicación para las extensines PHP: Actin applicatin/x-httpd-php3 "/php3/php.exe" Pr defect ls fichers que sn accesibles desde el navegadr se encuentran el la carpeta htdcs del directri de Apache, per la pdems cambiar: DcumentRt "C:\www" <Directry "C:\www">... </Directry> PHP Para cnfigurar PHP, primer buscams el ficher php3.ini-distphp3.ini-dist y l renmbrams a php.ini, después l editams y le hacems ls siguientes cambis: Buscams la expresión "extensin_dir" y la cambiams pr: extensin_dir = C:\php3 Para añadir el sprte para MySQL busca la línea: ; extensin = php3_mysql.dll Cámbiala pr: extensin = php3_mysql.dll

Tutrial de PHP y MySQL (LuCAS) Página 3 de 54 Cpia el ficher php3.ini en "C:\windws\" Ejecución de ls prgramas: Pues bien, ya sl ns queda arrancar ls prgramas: C:\Archivs de Prgrmas\Apache Grup\Apache\apache.exe C:\mysql\bin\mysqld.exe #Para la versión shareware C:\mysql\bin\mysqld-shareware.exe También pdems arrancar el servidr Apache desde el menú de inici: Inici->Prgrmas->Apache Web Server->Start Para cmprbar nuestra instalación crea un ficher llamad test.php3 cn la siguiente linea: phpinf() Clócal en el directri de dcuments de Apache y llámal desde el navegadents de Apache y llámal desde el navegadr. Si l hems hech td bien ns saldrá una página cn tdas las variables de PHP. NOTA: Cabe destacar que l que hems ech es una instalación básica, pr l que recmendams leer ls manuales de las distintas aplicacines para btener más detalles sbre la instalación de éstas. Instalación de Apache+PHP+MySQL en Linux/Unix En este capítul describirems el prces de instalción de la base de dats MySQL, de un servidr web Apache cn PHP, en una máquina cn sistema perativ Linux Unix. L primer que debems hacer es cnseguirns ls paquetes necesaris, y que mejr para ell que diriguirns a las páginas web ( cualquiera de sus mejr para ell que diriguirns a las páginas web ( cualquiera de sus mirrs) de ls prgramas en cuestión: Apache: www.apache.rg apache-1.3.x.tar.gz MySQL: www.mysql.cm mysql-3_22_22_tar.gz PHP: www.php.net php-3.0.x.tar-gz Para pder realizar td el prces de instalación has de tener acces cm rt a la máquin Linux. L primer que debems hacer un directri de instalación, aunque l nrmal sería que l hicierams en /usr/lcal, /urs/src, bien en /pt. Cm hay que escger un, y vy ha escger el primer, /usr/lcal, aunque el prces sería el mism si ns declinárams pr cualquier tr. Supngams que ya ns hems cnseguid ls paquetes y ls tenems en el directri /rt/install, l primier que hacems es descmprimirls: cd /usr/lcal tar zxvf /rt/install/apache-1.3.x.tar.gz tar zxvf /rt/instal/mysql-3.22.x.tar.gz tt/instal/mysql-3.22.x.tar.gz tar zxvf /rt/instal/php-3.0.x.tar-gz

Tutrial de PHP y MySQL (LuCAS) Página 4 de 54 Creams enlaces sencills (blands) a códig fuente ln -s /usr/lcal/apache-1.3.x /usr/lcal/apache ln -s /usr/lcal/mysql-3.22.x /usr/lcal/mysql ln -s /usr/lcal/php-3.0.x /usr/lcal/php Preparams la fuentes par al cmpilación de Apache cd /usr/lca/apache./cnfigure --prefix=/usr/lcal/apache Cmpilams e instalams MySQL cd /usr/lcal/mysql./cnfigure --witut-debug --prefix=/usr/lcal/mysql make make install cp /usr/lcal/supprt-files/mysql.server /etc/rc.d/init.d/mysql chmd 755 /etc/rc.d/init.d/mysql Creams la bases del dats del sistema MySQL /usr/lcal/mysql/bin/mysql_install_db Arrancams el servidr MySQL /etc/rc.d/init.d/mysql start/etc/rc.d/init.d/mysql start Asignams la passwrd del adminstradr (rt ) de MySQL /usr/lcal/mysql/bin/mysqladmin -u rt passwrd "clave" Ya hems terminad cn MySQL, ahra cmpilarems PHP cm módul de Apache. cd /usr/lcal/php./cnfigure --with-mysql=/usr/lcal/mysql \ --with-apache=/usr/lcal/apache \ --enable-track-vars make make install #cp php3.ini-dist /usr/lcal/lib/php3.ini Cmpilams Apache cd /usr/lcal/apache./cnfigure --prefix=/usr/lcal/apache \ --activate-mdule=src/mdules/php3/libphp3.a # si hems cmpilad PHP4 utilizarems #--activate-mdule=src/mdules/php4/libphp4.a # quitar ls cmentaris para habilitar el módul de prxy #--activate-mdule=src/mdules/prxy/libprxy.a< prxy mdules> make make install Para definir las extencines de ls scripts PHP, hay que añadir las siguientes lineas en el ficher de cnfiguración de apache (httpd.cnf): AddType applicatin/x-httpd-php3.php3 AddType applicatin/x-httpd-php3.php AddType applicatin/x-httpd-php3.phtml Ahra ya sól ns queda arrancar el servidr, per primer cpiams el script de arranque en /etc/rc.d/init.d

Tutrial de PHP y MySQL (LuCAS) Página 5 de 54 cp /usr/lcal/apache/bin/apachecte /etc/rc.d/init.d/apache /etc/rc.d/init.d/apache start Para cmprbar nuestra instalación crea un ficher llamad test.php3 cn la siguiente linea: phpinf() Clócal en el directri de dcuments de Apache y llámal desde el navegadr. Si l hems hech td bien ns saldrá una página cn tdas las variables de PHP. NOTA: Cabe destacar que l que hems ech es una instalación básica, pr l que recmendams leer ls manuales de las distintas aplicacines para btener más detalles sbre la instalación de éstas. Mi primer script Una vez que ya tenems instalads PHP y MySQL, y el servidr Apache cnfigurad para usarls, pdems cmenzar a escribir nuestr primer script en PHP. Ejempl script php <html> <bdy> $myvar = "Hla. Este es mi primer script en PHP \n"; //Est es un cmentari es mi primer script en PHP \n"; //Est es un cmentari ech $myvar; </bdy> </html> Una vez escrit est l salvams en un ficher cn la extensión php3 (la nueva versión de PHP, la 4, utiliza la extensión php), y l clcams en nuestr servidr, http://mi_servidr/php/test.php3. Ahra si pnems esta URL en nuestr navegadr verems una línea cn el text "Hla. Este es mi primer script en PHP". L primer que apreciams en el script sn sus delimitadres. En la primera línea del script vems que ns indica que cmienza un script en PHP, y en la última clcams para indicar el final del script. Hay que destacar que tdas las líneas que se encuentre entre ests delimitadres deben acabar en punt y cma, except las sentencias de cntrl (if, swicht, while, etc.). Cm en tda prgramación, es imprtante pner muchs cmentaris, para l cual si querems cmentar una sla línea tenems que pner al principi de la línea //, si l que querems es cmentar varias utilizarems ls delimitadres /* - */. Para que el servidr envié text utilizarems la instrucción ech, aunque también pdems utilizar printf de us similar al del C Perl. Finalmente, vems que la palabra myvar cmienza cn el sign dólar ($). Este símbl le indica a PHP que es una variable. Nstrs le hems asignad un text a esta variable, per también pueden cntener númers tablas (arrays). Es imprtante recrdar que tdas las variables cmienza cn el sign dólar. También habréis bservad que el text que le asignams a la variable termina cn \n, est n se imprime sirve para indicarle al navegadr una nueva línea. Variables y peradres

Tutrial de PHP y MySQL (LuCAS) Página 6 de 54 Ahra antes de seguir, vams a ver un pc de tería, la sintaxis en PHP. Variables: Cm vims antes tdas la variables deben precedidas pr sign dólar ($), y le asignams cntenid cn el sign igual (=). Cn las variables, PHP distingue entre mayúsculas y minúsculas, pr l que bles, PHP distingue entre mayúsculas y minúsculas, pr l que n es l mism $myvar que $Myvar, éstas sn ds variables ttalmente distintas. <html> <bdy> $myvar = "SEVILLA \n"; $Myvar = "MADRID \n"; //Est imprimirá SEVILLA ech $myvar; //Est imprimirá MADRID ECHO $Myvar; </bdy> </html> Cm veis he utilizad ds frmas de escribir ech, en mayúsculas y en minúsculas, para indicars que PHP n las distingue a la hra de usar funcines sentencias del lenguaje. El us de la barra invertida, cm en \n, n es bligatri, per ayuda a la depuración del códig que enviams al navegadr, además del \n existen trs uss: \" Carácter dbles cmillas \\ Carácter barra invertida \n Nueva línea \r Retrn de carr \t Tabuladr hrizntal Cnstantes: Las cnstantes sn similares a las variables, cn la salvedad de que n llevan el sign dólar delante, y sól la pdems asignar una vez. Para definir una cnstantes usarems la función define cm sigue: <html> <bdy> define ("CONSTANTE", "Hla Mund"); printf (CONSTANTE); </bdy> </html> PHP crea diversas cnstantes al arrancar, cm PHP_VERSION que cntiene la versión de PHP, TRUE que le asigna 1 FALSE que le asigna 0. Operadres Aritmétics: $a + $b Suma $a - $b Resta $a * $b Multiplicación

Tutrial de PHP y MySQL (LuCAS) Página 7 de 54 $a / $b &ss=cdigenlinea>$a / $b División $a % $b Rest de la división de $a pr $b $a++ Incrementa en 1 a $a $a-- Resta 1 a $a Operadres de Cadenas: El únic peradr de cadenas que existen es el de cncatenación, el punt. Per n s asustéis, PHP dispne de tda una batería de funcines que s permitirán trabajar cómdamente cn las cadenas. $a = "Hla"; $b = $a. "Mund"; // Ahra $b cntiene "Hla Mund" En este punt hay que hacer una distinción, la interpretación que hace PHP de las simples y dbles cmillas. En el segund cas PHP interpretará el cntenid de la cadena. $a = "Mund"; ech = 'Hla $a'; //Est escribirá "Hla $a" ech = "Hla $a"; //Est escribirá "Hla Mund&q; //Est escribirá "Hla Mund" Operadres de Cmparación: $a < $b $a menr que $b $a > $b $a mayr que $b $a <= $b $a menr igual que $b $a >= $b $a mayr igual que $b $a == $b $a igual que $b $a!= $b $a distint que $b Operadres Lógics: $a AND $b Verdader si ambs sn verdader $a && $b Verdader si ambs sn verdader $a OR $b Verdader si algun de ls ds es verdader $a!! $b Verdader si algun de ls ds es verdader $a XOR $b Verdader si sól un de ls ds es verdader!$a Verdader si $a es fals, y recíprcamente Operadres de Asignación: $a = $b Asigna a $a el cntenid de $b $a += $b Le suma a $b a $a $a -= $b Le resta a $b a $a $a *= $b Multiplica $a pr $b y l asigna a $a $a /= $b Divide $a pr $b y l asigna a $a $a.= $b Añade la cadena $b a la cadena $a Sentencias de cntrl Las sentencias de cntrl permiten ejecutar blque de códigs dependiend de unas cndicines. Para PHP el 0 es equivalente a Fals y cualquier tr númer es Verdader. IF...ELSE La sentencia IF...ELSE permite ejecutar un blque de instruccines si la cndición es Verdadera y tr blque de instruccines si ésta es Falsa. Es imprtante tener en cuenta q instruccines si ésta es Falsa. Es imprtante tener en cuenta que la cndición que evaluems ha de estar encerrada entre paréntesis (est es aplicable a tdas la sentencias de cntrl).

Tutrial de PHP y MySQL (LuCAS) Página 8 de 54 if (cndición) { Este blque se ejecuta si la cndición es VERDADERA else { Este bque se ejecuta si la cndición es FALSA Existe una frma sencilla de usar la sentencia IF cuand n tenems que usar el ELSE y sl tenenems que ejecutar una línea de códig. if ($a > 4) ech "$a es mayr que 4"; IF...ELSEIF...ELSE La sentencia IF...ELSEIF...ELSE permite ejecuta varias cndicines en cascada. Para este cas verems un ejempl, en el que utilizarems ls peradres lógics. if ($nmbre == ""){ ech "Tú n tienes nmbre"; elseif (($nmbre=="eva") OR ($nmbre=="eva")) { ech " ech "Tu nmbre es EVA";< else { ech "Tu nmbre es ". $nmbre; SWITCH...CASE...DEFAULT Una alternativa a IF...ELSEIF...ELSE, es la sentencia SWITCH, la cuál evalúa y cmpara cada expresión de la sentencia CASE cn la expresión que evaluams, si llegams al final de la lista de CASE y encuentra una cndición Verdadera, ejecuta el códig de blque que haya en DEFAULT. Si encntrams una cndición verdadera debems ejecutar un BREAK para que la sentencia SWITCH n siga buscand en la lista de CASE. Veams un ejempl. switch ($dia) { case "Lunes": ech "Hy es Lunes"; break; c case "Martes": ech "Hy es Martes"; break; case "Miercles": ech "Hy es Miercles"; break; case "Jueves": ech "Hy es Jueves"; break; case "Viernes": ech "Hy es Viernes"; break; case "Sábad": ech "Hy es Sábad"; break; case "Dming": ech "Hy es Dming"; break; default: default: ech "Esa cadena n crrespnde a ningún día de la semana";

Tutrial de PHP y MySQL (LuCAS) Página 9 de 54 WHILE La sentencia WHILE ejecuta un blque de códig mientras se cumpla una determinada cndición. $num = 1; while ($num < 5) { ech $num; $num++ Pdems rmper un bucle WHILE utilizand la sentencia BREAK. $num = 1; while ($num < 5) { ech $num; if ($num == 3){ ech "Aquí ns salims \n"; break $num++ DO...WHILE Esta sentencia es similar a WHILE, salv que cn esta sentencia primer ejecutams el blque de códig y después se evalúa la cndición, pr l que el blque de códig se ejecuta siempre al mens una vez. $num = 1; d { ech $num; if ($num == 3){ ech "Aquí ns salims \n"; break $num++ while ($num < 5); FOR El bucle FOR n es estrictamente necesari, cualquier bucle FOR puede ser sustituid fácilmente pr tr WHILE. Sin embarg, el bucle FOR resulta muy útil cuand debems ejecutar un blque de códig a cndición de que una variable se encuentre entre un valr mínim y tr máxim. El bucle FOR también se puede rmper mediante la sentencia BREAK. fr ($num = 1; Snum <=5; $num++){ ech $num; if ($num == 3){ ech "Aquí ns salims \n"; break

Tutrial de PHP y MySQL (LuCAS) Página 10 de 54 Las tablas Las tablas ( array en inglés), sn muy imprtantes en PHP, ya que generalmente, las funcines que devuelven varis valres, cm las funcines ligadas a las bases de dats, l hacen en frma de tabla. En PHP dispnems de ds tips de tablas. El primer sería el clásic, utilizand índices: $ciudad[] = "París"; $ciudad[] = "París"; $ciudad[] = "Rma"; $ciudad[] = "Sevilla"; $ciudad[] = "Lndres"; print ("y viv en ". $ciudad[2]. "<BR>\n"); Esta es una frma de asignar elements a una tabla, per una frma más frmal es utilizand la función array $ciudad = array("parís", "Rma", "Sevilla", "Lndres"); //cntams el númer de elements de la tabla $numelents = cunt($ciudad); //imprimims tds ls elements de la tabla fr ($i=0; $i < $numelents; $i++) { print ("La ciudad $i es $ciudad[$i] <BR>\n"); Sin Sin se especifica, el primer índice es el cer, per pdems utilizar el peradr => para especificar el indice inicial. $ciudad = array(1=>"parís", "Rma", "Sevilla", "Lndres"); Un segund tip, sn las tablas asciativas, en las cuáles a cada element se le asigna un valr (key) para acceder a él. Para entenderl, que mejr que un ejempl, supngams que tenems una tabla en al que cada element almacena el númer de visitas a nuestra web pr cada día de la semana. Utilizand el métd clásic de índices, cada día de la semana se representaría pr un enter, 0 para lunes, 1 para martes, etc. $visitas[0] = 200; $visitas[1] = 186; si usams las tablas asciativas sería $visitas["lunes"] = 200; $visitas["martes"] = 186; bien,

Tutrial de PHP y MySQL (LuCAS) Página 11 de 54 $visitas = array("ludig">$visitas = array("lunes"=>200; "martes"=>186); Ahra bien, recrrer una tabla y mstrar su cntenid es sencill utilizand ls índices, per cóm hacerl en las tablas asciativas?. La manipulación de las tabas asciativas se a hace través de funcines que actúan sbre un punter intern que indica la psición. Pr defect, el punter se situa en el primer element añadid en la tabla, hasta que es mvid pr una función: current - devuelve el valr del element que indica el punter ps - realiza la misma función que current reset - mueve el punter al primer element de la tabla end - mueve el punter al últim element de la tabla next - mueve el punter al element siquiente prev - mueve el punter al element anterir cunt - devuelve el númer de elements de una tabla. Veams un ejempl de las funcines anterires: $semana = array("lunes", "martes", "miércles", "jueves", "viernes", "sábad", "dmind"); ech cunt($semana); //7 //situams el punter en el primer element reset($semana); ech current($semana); //lunes next($semana); ech ps($semana); //martes end($semana) ech ps($semana); //dming prev($semana); ech current($semana); //sábad Recrrer una tabla cn las funcines anterires se hace un pc lis, para ell se recmienda utilizar la función each(). <?. $visitas = array("lunes"=>200, "martes"=>186, "miércles"=>190, "jueves"=>175); reset($visitas); while (list($clave, $valr) = each($visitas)) { ech "el día $clave ha tenid $valr visitas<br>"; La función each()devuelve el valr del element actual, en este cas, el valr del element actual y su clave, y desplaza el punter al siguiente, cuand llega al final devuelve FALSO, y termina el bucle while(). Tablas multidimensinales Las tablas multidimensinales sn simplemente tablas en las cuales cada element es a su vez tra tabla. $calendari[] = array (1, "ener", 31); $calendari[] = array (2, "febrer", 28); $calendari[] = arra $calendari[] = array (3, "marz", 31); $calendari[] = array (4, "abril", 30); $calendari[] = array (5, "may", 31); while (list($clave, $valr ) = each($calendari)){ {

Tutrial de PHP y MySQL (LuCAS) Página 12 de 54 $cadena = $varlr[1]; $cadena.= " es el mes númer ". $valr[0]; $cadena.= "y tiene ". $varlr[2]. " días<br>"; ech $cadena; La función list() es más bien un peradr de asignación, l que hace es asignar valres a unas lista de variables. En este cas ls valres sn extraids de una tabla pr la función each(). Las funcines Muchas veces, cuand trabajams en el desarrl de una aplicación, ns surge la necesidad de ejectar un mism blque de códig en diferentes partes de nuestra aplicación. Una Función n es más que un blque de códig al que le pasams una serie de parámetrs y ns devuelve un valr. Cm tds ls lenguaje de prgramación, PHP trae una gran cantidad de funcines para nuestr us, per las funcines más gran cantidad de funcines para nuestr us, per las funcines más imprtantes sn las que nstrs creams. Para declara una funcin debems utilizar la instrucción functin seguid del nmbre que le vams a dar, y después entre parentesis la lista de arguments separads pr cmas, aunque también habrá funcines que n recgan ningún argument. functin nmbre_de_funcin (arg_1, arg_2,..., arg_n) { blque de códig Cualquier instrucción válida de PHP puede aparecer en el cuerp (l que antes hems llamad blque de códig) de una función, inclus tras funcines y definicines de clases. En PHP n pdems redefinir una función previamente declarada, y además en PHP3, las funcines deben definirse siempre antes de que se invquen, en PHP4 este requerimient ya n existe. La instrucción RETURN Cuand invcams una función, la ejecución del prgrama pasa a ejecutar las líneas de códig que cntenga la función, y una vez terminad, el prgrama cntinua su ejecución desde el punt en que fué llamada la función. Existe una manera de terminar la ejecución de la función aunque aún haya códig pr ejecutar, mediante el u haya códig pr ejecutar, mediante el us de la instrución return terminams la ejecución del códig de una función y devlvems un valr. Pdems tener varis return en nuestra función, per pr l general, cuants más return tengams mens reutilizable será nuestra función. functin mayr ($x, $y) { if ($x > $y) { return $x." es mayr que".$y; else { return $y." es mayr que".$x; Aunque quedariá mejr: functin mayr ($x, $y) { $msg = "";

Tutrial de PHP y MySQL (LuCAS) Página 13 de 54 if ($x > $y) { $msg = $x." es mayr que".$y; else { $msg = $y." es mayr que".$x; return $msg; Cn la instrución return puede devlverse cualquier tip de valr, incluyend tablas y bjets. PHP sl permite a las funcines devlver un valr, y para slventar este pequeñ prblema, si querems que nuestra función devuelva varis tenems que utilizar una tabla (array). Parámetrs de las funcines Existen ds frmas de pasar ls parámetrs a una función, pr valr pr referencia. Cuand pasams una variable pr valr a una funcin, curra l que curra en ésta en nada mdificará el cntenid de la variable. Mientras que si l hacems pr referencia, cualquier cambi acntecid en la función sbre la variable l hará para siempre. E variable l hará para siempre. En PHP, pr defect, las variables se pasan pr valr. Para hacerl pr referencia debems antepner un ampersand (&) a la variable. functin suma ($x, $y) { $x = $x + 1; return $x+$y; $a = 1; $b = 2; //parámetrs pr valr ech suma ($a, $b); // imprimirá 4 ech $a; // imprimirá 1 //parámetrs pr referencia ech suma (&$a, $b); // imprimirá 4 ech $a; //imprimirá 2 Si querems que un parámetr de una función se pase siempre pr referencia debems antepner un ampersand (&) al nmbre del parámetr en la definición de la función. En PHP pdems definir valres pr defect para ls parámetr de una función. Ests valres tienen que ser una expresión cnstante, y n una variable miembr de una clase. Además cuand usams parámetrs pr defects, ésts deben estar a la derecha de cualquier parámetr sin valr pr defect, de tra frma PHP ns devlverá un errr. functin suma ($x=1, $y) { $x = $x + 1; return $x+$y;

Tutrial de PHP y MySQL (LuCAS) Página 14 de 54 Si ejecutarms esta función ns daría errr, ya que hems dad a $x el valr 1 pr defect y la hems clcad a la izquierda de un parámetr que n tiene valr pr defect. La frma crrecta es: functin suma ($y, $x=1) { $x = $x + 1; return $x+$y; Cabe destacar que PHP3 n sprta un númer variables de parámetrs, per PHP4 sí. Llegads a este punt, dams un pas atrás y vlvems a las variables, para distinguir entre variables estáticas (static) y glbales (glbal). Las variables estáticas se definen dentr de una función, la primera vez que es llamada dicha función la variable se inicializa, guardand su valr para psterires llamadas. functin cntadr () { static $cunt = 0; $cunt = $cunt + 1; return $cunt; ech cntadr()."<br>"; // imprimirá 1 ech cntadr()."<br>"; // imprimirá 2 ech cntadr()."<br>"; // imprimirá 3 Las variables glbales, n se pueden declarar dentr de una función, l que hacems el llamar a una variable que ya ha sid declarada, tmand el valr que tenga en ese mment, pudiend se mdificad en la función. var $a = 1; functin ver_a() { glbal $a; ech $a."<br>"; // imprimirá el valr de $a $a += 1; // sumams 1 a $a ech ver_a(); // imprimirá 1 ech ver_a(); // imprimirá 2 $a = 7; ech ver_a(); // imprimirá 7 ech ver_a(); // imprimirá 8 Funcines Variable PHP sprta el cncept de funcines variables, est es significa que si una variable tiene uns parentesis añadids al final, PHP buscará un función cn el mism nmbre que el cntenid de la variable, e intentará ejecutarla. functin imprime($text) { ech $text. "\n"; functin imprimenegrilla($text){ ech "<B>$text</B>\n";

Tutrial de PHP y MySQL (LuCAS) Página 15 de 54 $MiFunc = "imprime"; $MiFunc("Hla"); //imprimirá Hla $MiFunc = "imprimenegrilla"; $MiFunc("Hla"); //imprimirá Hla Recursión PHP t>recursión PHP también permite la recursión, es decir, una función se puede llamar así misma. Para aclarar el cncept de recursión, vams a crear una función que cmprueba si un númer es enter n. Un númer que n sea enter (7'4), tiene una parte entera y tra decimal (cmprendida entre 0 y 1), l que vams a hacer para cmprbar si un númer es enter n, será restarle 1 al númer en cuestión hasta que ns que dems sin parte entera, y entces cmprbarems si tiene parte decimal (un pc lis td ést). functin esenter($numer) { if ($numer > 1) { return (esenter($numer -1)); elseif ($numer < 0) { /* cm ls núm. sn simétrics chequeams l cnvertims a psitv */ return (esenter((-1) * $numer -1)); elseif (($numer > 0) AND ($numer < 1)) { return ("NO"); else { /* el cer es enter pr definición */ return ("SI"); //fin functin ech " Es 0 un númer enter? ".esenter(0)."\n"; ech " Es 3.5 un númer enter? ".esenter(3.5)."\n"; ech " Es -7 un númer enter? ".esenter(-7)."\n"; ech " Es -9.2 un númer enter? ".esenter(9.2)."\n"; Cóm ahrrarns líneas de códig En las leccines anterires hems aprendid el us básic de las funcines de PHP para trabajar cn MySQL. En esta lección y sucesivas vams a ver nuevas funcines que ns facilitan y ptencian nuestras páginas web. Pr l general, tds nuestrs script tienen partes de códig iguales, las funciónes include() y require() ns van ahrrar muchas de estas lineas de códig. Ambas funcines hacen una llamada a un determinad ficher per de ds maneras diferentes, cn include(), insertams l que cntenga el ficher que llamems de manera literal en nuestr script, mientras que cn require(), le decims que el script necesitará parte de códig de se encuentra en el ficher que llama require(). Cm td est es un pc lis, veams uns ejempls que ns l aclará. include ("header.inc"); ech "Hla Mund"; include ("fter.inc"); Si tenems encuenta que el ficher header.inc cntiene: <html> <bdy>

Tutrial de PHP y MySQL (LuCAS) Página 16 de 54 y el ficher fter.inc cntiene: </bdy> </html> Nuestr script sería equivalente a: <html> <bdy> ech "Hla Mund"; </bdy> </html> Ahra veams el script de ejempl para la función require(): require ("cnfig.inc"); include ("header.inc"); ech $cadena; include ("fter.inc"); Dnde el ficher cnfig.inc tendría alg cm ést: $cadena = "Hla Mund"; Tiemp y fecha En esta lección vams a ver cm algunas funcines relacinadas cn el tiemp y la fecha, así cm alguns ejempls práctics. time Devuelve el numer de segunds transcurrids desde el 1 de Ener de 1970. A esta frma de expresar fecha y hra se le denmina tmestamp. date(frmat, timestamp) La funció date devuelve una cte(frmat, timestamp) La funció date devuelve una cadena frmateada según ls códig de frmat. Si n le pasams la variable timestamp ns devuelve la cadena frmateada para la fecha y la hra actual. Ls códigs de frmat para la función date sn: CODIGO a A d D F DESCRIPCIÓN am pm AM PM Día del mes cn cers Abreviatura del día de la semana (inglés) Nmbre del mes (inglés)

Tutrial de PHP y MySQL (LuCAS) Página 17 de 54 h Hra en frmat 1-12 H Hra en frmat 0-23 i Minuts j Día del mes sin cers l Dia de la semana m Númer de mes (1-12) M Abreviatura del mes (inglés) s Segunds y Añ cn 2 dígits Y Añ cn 4 dígits z Dia del añ (1-365) Para ver alguns ejempls supngams que ahra es el 7 de abril de 200 Para ver alguns ejempls supngams que ahra es el 7 de abril de 2000 a las 14 hras 30 minuts y 22 segunds: date("d-m-y") -> 07-04-2000 date("h:i:s") -> 14:30:22 date("y") -> 2000 date("ymdhis") -> 20000407143022 date("d/m/y H:i a") -> 07/04/00 14:30 pm date(d-m-y H:i, time()) -> el mment actual mktime(hra, min, seg, mes, dia, añ) La funcin mktime devuelve una variable de tip timestamp a partir de las crdenadas dadas. La principal utilidad de esta funcin es la de añadir quitar una determinada cantidad de fecha u hras a una dada. <?PHP functin restardias($numdias, $date) { if (isset($date)) { $date = time(); list($hra, $min, $seg, $dia, $mes, $ann) = expldest($hra, $min, $seg, $dia, $mes, $ann) = explde( " ", date( "H i s d m Y")); $d = $dia - $numdias; $fecha = date("d-m-y", mktime($hra, $min, $seg, $mes, $d, $ann)); return $fecha; ech ech restardias(10)."<br>"; restardias(5)."<br>"; chekdate (mes, dia, añ) La función chekdate cmprueba si una fecha es válida, si es así devuelve TRUE y si n l es FALSE. Una fecha se cnsidera válida si el añ está entre 1900 y 32767, el mes entre 1 y 12, y el dia es menr igual que númer de días ttal del mes en cuestión. <?PHP if (checkdate(31, 2, 2000)) { ech "La fecha es crrecta"; else { ech "La fecha es incrrecta";

Tutrial de PHP y MySQL (LuCAS) Página 18 de 54 Para el ejempl anterir ns daría que la fecha es incrrecta, febrer nunca tiene un día 31. Las clases Las Clases sn máxim expnente de la Prgramación Orientada a Objets (POO). PHP n es un lenguaje rientad a bjet, per implementa las características que permiten definir las clases. Per, qué sn las Clases y para que sirven?, empecems pr ls segund, sirven hacer el códig más legible, y l que es más imprtante, reutilizable. Escribir una Clase es sin duda más larg que escribir el códig directamente, per a la larga es más rentable pr su prtabilidad a tras, per a la larga es más rentable pr su prtabilidad a tras aplicacines y su mantenimient. Las Clases n sn más que una serie de variables y funcines que describen y actúan sbre alg. Pr ejempl, vams a crear la clase autmóvil, la cual tendrá diversas variables, $clr, $mdel, $marca, $ptencia, $matricula y habrá una serie de funcines que actuarán sbre la clase autmóvil cm Preci(), Acelerar(), Frenar(), Girar()y Reparar(). Cm ejempl vams a crear la clase mysql, que ns servirá para realizar cnsultas a las bases de dats MySQL. class DB_mysql { /* variables de cnexión */ var $BaseDats; var $Servidr; var $Usuari; var $Clave; /* identificadr de cnexión y cnsulta */ var $Cnexin_ID = 0; var $Cnsulta_ID = 0; /* númer de errr y text errr */ var $Errn = 0; var $Errr = ""; /* Métd Cnstructr: Cada vez que creems una variable de esta clase, se ejecutará esta función */ functin DB_mysql($bd = "", $hst = "lcalhst", $user = "nbdy", $pass = "") { $this->basedats = $bd; $this->servidr = $hst; $this->usuari = $user; $this->clave = $pass; /*Cnexión a la base de dats*/ functin cnectar($bd, $hst, $user, $pass){ if ($bd!= "") $this->basedats = $bd; if ($hst!= "") $this->servidr = $hst; if ($user!= "") $this->usuari = $user; if ($pass!= "") $this->clave = $pass; // Cnectams al servidr $this->cnexin_id = mysql_cnnect($this->servidr, $this->usuari, $this->clave); if (!$this->cnexin_id) { $this->errr = "Ha fallad la cnexión."; return 0; //seleccinams la base de dats if (!@mysql_select_db($this->basedats, $this->cnexin_id)) { $this->errr = "Impsible abrir ".$this->basedats ; return 0;

Tutrial de PHP y MySQL (LuCAS) Página 19 de 54 /* Si hems tenid éxit cnectand devuelve el identificadr de la cnexión, sin devuelve 0 */ return $this->cnexin_id; /* Ejecuta un cnsulta */ functin cnsulta($sql = ""){ if ($sql == "") { $this->errr = "N ha especificad una cnsulta SQL"; return 0; //ejecutams la cnsulta $this->cnsulta_id = @mysql_query($sql, $this->cnexin_id); if (!$this->cnsulta_id) { $this->errn = mysql_errn(); $this->errr = mysql_errr(); /* Si hems tenid éxit en la cnsulta devuelve el identificadr de la cnexión, sin devuelve 0 */ return $this->cnsulta_id; /* Devuelve el númer de camps de una cnsulta */ functin numcamps() { return mysql_num_fields($this->cnsulta_id); /* Devuelve el númer de registrs de una cnsulta */ functin numregistrs(){ return mysql_num_rws($this->cnsulta_id); /* Devuelve el nmbre de un camp de una cnsulta */ functin nmbrecamp($numcamp) { return mysql_field_name($this->cnsulta_id, $numcamp); /* Muestra ls dats de una cnsulta */ functin vercnsulta() { ech "<table brder=1>\n"; // mstrams ls nmbres de ls camps fr ($i = 0; $i < $this->numcamps(); $i++){ ech "<td><b>".$this->nmbrecamp($i)."</b></td>\n"; ech "</tr>\n"; // mstrarms ls registrs while ($rw = mysql_fetch_rw($this->cnsulta_id)) { ech "<tr> \n"; fr ($i = 0; $i < $this->numcamps(); $i++){ ech "<td>".$rw[$i]."</td>\n"; ech "</tr>\n"; //fin de la Clse DB_mysql Cm habreis bservad, para crear una clase utilizams la sentencia class, y además hems cread una función cn el mism nmbre que la clase, a esa función se le llama cnstructr y se ejecutará cada vez que definams una

Tutrial de PHP y MySQL (LuCAS) Página 20 de 54 variable de esa clase. N es bligatrina variable de esa clase. N es bligatri crear un cnstructr en una definición de clase. Otra csa imprtante en las clases es el peradr ->, cn el que indicams una variable métd (parte derecha del peradr) de una clase (parte izquierda del peradr). Para hacer referencia a la clase que estams creand dentr de su definición, debems utilizar this. Y ahra veams un ejempl de la clase que hems cread, y supngams que el códig anterir l hems guardad en un ficher llamad clase_mysql.inc.php. <bdy> <html> require ("clase_mysql.inc.php"); $micnexin = new DB_mysql ; $micnexin->cnectar("mydb", "lcalhst", "nbdy", ""); $micnexin->cnsulta("select * FROM agenda"); $micnexin->vercnsulta(); </bdy> </html> Ls frmularis Ls Frmularis n frman parte de PHP, sin del lenguaje estánder de Internet, HTML, per cm ésts van a aperecer muchas veces durante el curs, vams a dedicar esta algunas líneas a ells. L que viene a cntinuación es HTML y n PHP. Td frmulari cmienza cn la etiqueta <FORM ACTION="l_que_sea.php" METHOD="pst/get">. Cn. Cn ACTION indicams el script que va prcesar la infrmación que recgems en el frmulari, mientras que METHOD ns indica si el usuari del frmulari va ha enviar dats (pst) recgerls (get). La etiqueta <FORM> indica el final del frmulari. A partir de la etiqueta <FORM> vienen ls camps de entrada de dats que pueden ser: Cuadr de text: <input type="text" name="nmbre" size="20" value="jse"> Cuadr de text cn barras de desplazamient: <textarea rws="5" name="descripcin" cls="20">es de clr rj</textarea> Casilla de verificación: <input type="checkbx" name="cambiar" value="on"> Btón de pción: <input type="radi" value="azul" checked name="clr"> Menú desplegable: <select size="1&qu class="cdig"><select size="1" name="dia"> <ptin selected value="lunes">lunes</ptin> <ptin>martes</ptin> <ptin value="miercles">miercles</ptin> </select> Btn de cmand: <input type="submit" value="enviar" name="enviar">