Manual de Programacion Con PHP y MySQL

Embed Size (px)

Citation preview

SolucionJava.com

Ing.CedricSimonTel:2680974Cel:8882387Email: c e d r i c @ s o l u c i o n j a v a . c o m Web:www.solucionjava.com

Cursodeprogramacin en PHPconMySQL

Manualdelalumno

(PHPVersin5.1.2,MySQLversin5.0.24)

Autor:CdricSimon

CopyrightCdricSimon,2006

CursodeprogramacinenPHPconMySQL

Pagina2/73

1. ndice1. ndice...........................................................................................................................................................................2 2. Introduccin al curso.................................................................................................................................................5 2.1. Objetivo de este curso..............................................................................................................................................5 2.2. Manual del alumno..................................................................................................................................................5 2.3. Requisitos para atender a este curso.....................................................................................................................5 3. Introduccin al PHP...................................................................................................................................................6 3.1. Que es el PHP?........................................................................................................................................................6 3.2. Por qu utilizaramos el PHP?.............................................................................................................................6 3.3. Navegadores web......................................................................................................................................................6 4. El protocolo HTTP.....................................................................................................................................................7 4.1. Modelo de consulta / respuesta HTTP..................................................................................................................7 4.2. Detalles de una consulta..........................................................................................................................................7 4.3. Detalles de respuesta................................................................................................................................................8 4.4. Parmetros de consulta...........................................................................................................................................9 4.5. Mtodos de consulta.................................................................................................................................................9 5. Instalacin del PHP..................................................................................................................................................11 5.1. Objetivo del capitulo..............................................................................................................................................11 5.2. Cual versin?..........................................................................................................................................................11 5.3. Instalacin de PHP.................................................................................................................................................11 5.4. Instalacin de Eclipse y del plugin para PHP....................................................................................................12 5.4.1. Inicializacin del plugin para PHP.............................................................................................................12 5.4.2. Configuracin de Apache...........................................................................................................................12 5.5. Instalacin de MySQL...........................................................................................................................................13 6. Primera pgina PHP................................................................................................................................................14 6.1. Objetivo del capitulo..............................................................................................................................................14 6.2. Creacin de un nuevo proyecto web....................................................................................................................14 6.3. Creacin de la pgina de ndice...........................................................................................................................14 7. Utilizacin de los scriptlets.......................................................................................................................................16 7.1. Qu son los scriptlets?.........................................................................................................................................16 7.2. Separacin de instrucciones..................................................................................................................................16 8. Caractersticas del lenguaje PHP.............................................................................................................................17 8.1. Objetivo del capitulo..............................................................................................................................................17 8.2. Lista de Palabras Clave.........................................................................................................................................17 8.3. Sensibilidad.............................................................................................................................................................17 8.4. Identificadores........................................................................................................................................................17 8.5. Declaracin de variables.......................................................................................................................................18 8.6. Tipos simples ( o primitivos).................................................................................................................................18 8.6.1. Boolean.......................................................................................................................................................19 8.6.2. Enteros........................................................................................................................................................19 8.6.3. Nmeros de punto flotante.........................................................................................................................21 8.6.4. Cadenas......................................................................................................................................................21 8.6.5. Matrices......................................................................................................................................................26 8.6.6. Objetos........................................................................................................................................................29 8.6.7. Recurso.......................................................................................................................................................29CopyrightCdricSimon,2006 Versin1.1 Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina3/73

8.6.8. NULL.........................................................................................................................................................29 8.7. Constantes...............................................................................................................................................................30 8.7.1. Sintaxis.......................................................................................................................................................30 8.8. Operadores..............................................................................................................................................................30 8.8.1. Principales operadores sobre integer y float...............................................................................................31 8.8.2. Operadores de Comparacin......................................................................................................................31 8.8.3. Operadores de Lgica.................................................................................................................................33 8.8.4. Operador Ternario......................................................................................................................................33 8.9. Manipulacin de Tipos..........................................................................................................................................33 8.9.1. Moldeamiento de Tipos..............................................................................................................................34 8.9.2. Precedencia de Operadores........................................................................................................................35 8.10. Comentarios..........................................................................................................................................................36 9. Decisiones y bucles...................................................................................................................................................37 9.1. Objetivo del capitulo..............................................................................................................................................37 9.2. if ... elseif...else.........................................................................................................................................................37 9.3. Sintaxis Alternativa de Estructuras de Control................................................................................................37 9.4. switch........................................................................................................................................................................38 9.5. while..........................................................................................................................................................................38 9.6. do ... while................................................................................................................................................................39 9.7. for..............................................................................................................................................................................39 9.8. foreach......................................................................................................................................................................40 9.9. break.........................................................................................................................................................................40 9.10. continue..................................................................................................................................................................40 10. Funciones................................................................................................................................................................41 10.1. Funciones definidas por el usuario....................................................................................................................41 10.1.1. Funciones Condicionales..........................................................................................................................41 10.1.2. Funciones dentro de funciones.................................................................................................................41 10.1.3. Parmetros de las funciones.....................................................................................................................42 10.1.4. Devolviendo valores.................................................................................................................................43 10.2. Funciones internas (incorporadas)....................................................................................................................44 10.2.1. Unas de las funciones internas ms interesantes......................................................................................44 10.3. Funciones variables..............................................................................................................................................46 10.3.1. print..........................................................................................................................................................46 10.3.2. echo..........................................................................................................................................................46 10.3.3. require()....................................................................................................................................................46 10.3.4. include()....................................................................................................................................................47 11. Tratamiento de excepciones...................................................................................................................................49 11.1. Objetivo del capitulo............................................................................................................................................49 11.2. Errores de compilacin.......................................................................................................................................49 11.3. Errores de lgica..................................................................................................................................................49 11.4. Errores de ejecucin............................................................................................................................................49 11.4.1. Niveles de error de ejecucin...................................................................................................................49 11.4.2. set_exception_handler..............................................................................................................................51 12. Los formularios.......................................................................................................................................................53 12.1. Creacin del formulario......................................................................................................................................53 12.2. Tratamiento del formulario................................................................................................................................53 12.2.1. import_request_variables.........................................................................................................................55 13. Utilizacin de COOKIES........................................................................................................................................56 13.1. Qu son los COOKIES?....................................................................................................................................56 13.2. Creacin de un COOKIE....................................................................................................................................56CopyrightCdricSimon,2006 Versin1.1 Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina4/73

13.3. Recuperacin de informacin de un COOKIE...............................................................................................57 13.4. Borrado de un COOKIE.....................................................................................................................................58 14. Utilizacin de variables de sesin...........................................................................................................................59 14.1. Inicio de sesin......................................................................................................................................................59 14.2. Declaracin de variable de sesin......................................................................................................................59 14.3. Recuperar el valor de un variable de sesin....................................................................................................59 14.4. Invalidar una sesin.............................................................................................................................................59 15. Variables Predefinidas............................................................................................................................................60 15.1. Variables de servidor: $_SERVER...................................................................................................................60 15.2. Variables de entorno: $_ENV............................................................................................................................60 15.3. Cookies HTTP: $_COOKIE...............................................................................................................................60 15.4. Variables HTTP GET: $_GET..........................................................................................................................60 15.5. Variables HTTP POST: $_POST......................................................................................................................60 15.6. Variables de carga de archivos HTTP: $_FILES...........................................................................................60 15.7. Variables de peticin: $_REQUEST.................................................................................................................60 15.8. Variables de sesin: $_SESSION.......................................................................................................................60 15.9. Variables globales: $GLOBALS........................................................................................................................61 15.10. El mensaje de error previo: $php_errormsg.................................................................................................61 16. Conexin a MySQL................................................................................................................................................62 16.1. Objetivo del capitulo............................................................................................................................................62 16.2. Driver ODBC........................................................................................................................................................62 16.3. Driver PHP............................................................................................................................................................62 16.4. Conexin................................................................................................................................................................62 16.5. Ejecucin de instrucciones SQL........................................................................................................................62 16.6. consultas preparadas...........................................................................................................................................63 16.7. Llamado a procedimientos..................................................................................................................................64 16.8. Recuperacin de fotos en la base de datos........................................................................................................65 17. Autenticacin del usuario.......................................................................................................................................67 17.1. Autentificacin HTTP con PHP.........................................................................................................................67 17.1.1. Control de acceso a los recursos web.......................................................................................................67 17.1.2. Verificacin de la informacin del usuario..............................................................................................67 17.1.3. Recuperacin de la informacin del usuario............................................................................................68 17.2. Autenticacin manejada por la aplicacin.......................................................................................................68 18. Ejercicios.................................................................................................................................................................71 19. Esquema de la base de datos..................................................................................................................................73

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina5/73

2. Introduccinalcurso2.1. Objetivodeestecurso EnestecursovamosaverellenguajePHPycomoconectarseaunabasededatosdetipoMySQLde desdePHP.

2.2. Manualdelalumno Estemanualdelalumnoesunaayudaparaelalumno,paratengaunrecuerdodelcurso.Este manualcontieneunresumendelasmateriasquesevanaestudiarduranteelcurso,peroelalumno deberadetomarnotaspersonalesparacompletasestemanual. EnelCDdecursovienetambienladocumentacinoficialdePHPydeMySQLenformatoHTML (debajolacarpeta'documentacion').Estadocumentacincompletaestemanual. EstemanualdelusuariovienetambienenformatoPDFenelCDdelcurso.

2.3. Requisitosparaatenderaestecurso ElconocimientodellenguajeHTMLesrequeridoparapoderseguirestecurso.

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina6/73

3. IntroduccinalPHP3.1. QueeselPHP? ElPHPesunlenguajedeprogramacinutilizadoparacrearpginaswebdinmicas. ElPHPnecesitaqueunservidorwebconcapacidadPHPseainstaladoyfuncionandoparapoder ejecutarlaspginasPHP. ElservidorvaacompilarelcdigoPHPytratarloentiemporeal,conlainformacinviniendodel clienteweb,pararegresarleunapaginawebadaptada,entiemporeal. Elservidortienetambincapacidaddeseguirelcaminodeunusuario,ascmodeidentificarlo.

3.2. PorquutilizaramoselPHP? ElPHPsenecesitacuandolapaginawebtienequeadaptarseenfuncindelusuario,ycuandose necesitaguardarvaloresdesesindelusuario. Existenotroslenguajequepermiteneso,comoelASPoelJSP,peroelPHPtienecomoaventajeque esunlenguajefcilaaprender.LosservidoresPHP(comolosservidoresJSP)existenparavarios sistemasoperativos,entreotrosWindows,Linux,yUnix. ElPHPesunestndardeprogramacinInternet.

3.3. Navegadoresweb SilosnavegadorespruebantodosdepoderaplicaralmximolasrecomendacionesdelHTML4.0 existenciertasopciones,adentrooafueradelHMLestndarqueslociertosnavegadoressoportan. Tambin,unmismocdigonoaparecersiempreigualenunnavegadoreenotro. ElPHPnoestligadodirectamenteconlosnavegadores,peroelHTMLquegeneraransi.Asqueun cdigogeneradopodrafuncionarbienenunnavegador,ydarunresultadodiferenteenotro. Enestecurso,utilizaremoselnavegadorFirefoxdeMozilla.

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina7/73

4. ElprotocoloHTTPElprotocoloHTTP(HyperTextTransportProtocol)esunprotocoloquedefineendetallecmoun clienteyunservidordebencomunicarentreellos.ElmodelodecomunicacinHTTPesalabasedel web.Elprotocoloseaplicaacualquierservidoryclienteweb.Vamosaexaminarlosdetallesms importantedelprotocoloHTTP.

4.1. Modelodeconsulta/respuestaHTTP ElHTTPylosprotocolosextendidosbasadossobreelutilizanunmodelodecomunicacinsimple, peropoderoso. Demaneratpica,unclienteenvaunaconsultaparaunrecursoaunservidor,yelservidorcontesta unarespuestaquecorrespondealrecursopreguntado(ocontestaconunmensajedeerror).Elrecurso puedeserunapginaHTML,ounaaplicacinquecontestaconuncontenidodinmico.

EstemodelosimpleimplicatrescosasqueUstedtienequeserconciente: 1. ElprotocoloHTTPesunprotocolosinestado.Esdecirqueelservidornoguardaningn informacinacercadelclientedepusedehaberlecontestado,yporesonopuedereconocerque variasconsultasdeunmismoclientepuedenserrelacionadas. 2. Laaplicacinwebnopuedeentregarunarespuestainmediato,comoenaplicacioneslocales. Lavelocidaddependedelanchodebandadisponibleydelacargadelservidor. 3. Nohaynadaenelprotocoloqueindicaalservidorcomolaconsultalehallegado,asqueel servidornopuededistinguirdiferentemtodosdeconsulta.Porejemplo,enservidornopuede distinguirunaconsultageneradaporunclicenunenlacedelusodelbotn'atrs'del navegador.Tambin,comoelHTTPessinestado,nosepuedeadentrodelHTTPllamarala pginaanterior.

4.2. Detallesdeunaconsulta Existendosmtodosdeconsulta:GETyPOST.GETeslamsutilizada,ylaqueseusopordefecto. Ejemplodeunaconsulta:GET /index.html HTTP/1.0 Host: www.gefionsoftware.com User-Agent : Mozilla/4.5 [en] (WinNT; I) Accept: image/gif, image/jpeg, image/pjpeg, image/png, */* Accept-language : en Accept-charset : iso-8859-1,*,utf-8

LaprimeralneaespecificaqueseusaelmtodoGETysepreguntapararegresarelrecurso /index.htmlutilizandoelprotocoloHTTP/1.0.Lasotraslneasproveenttulosconinformacin adicionalalservidorparacumplirconlaconsulta.CopyrightCdricSimon,2006 Versin1.1 Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina8/73

ElttuloHOSTdicealservidorelnombre(hostname)utilizadoenelURL.Unservidorpuedetener variosnombres,yesteinformacinpermitedistinguirmltipleservidoresvirtualesutilizandoun mismoprocesoweb. ElttuloUser-Agentcontieneinformacinsobreeltipodenavegadorutilizadoparahacerlaconsulta. Elservidorpuedeutilizaresteinformacinparagenerarrespuestasdiferentesdependiendodel navegador(IE,Netscape,WAP,PDA,...). LosttulosAcceptproveeninformacinsobreelidiomayelformatodearchivoqueelnavegador acepta.

4.3. Detallesderespuesta Elmensajedelarespuestaparecealdelaconsulta.Elcontienetrespartes:unalneadeestado,unos ttulosderespuesta,yelcuerpodelarespuesta. Ejemploderespuesta:HTTP/1.0 200 OK Last-Modified: Mon, 19 Dec 2004 20:21:42 GMT Date: Tue, 12 Jul 2005 13:12:10 GMT Status: 200 Content-Type: text/html Servlet-Engine: Tomcat Web Server/3.2 Content-Length: 59 Hello World!

Lalneadeestadoempiezaconelnombredelprotocolo,seguidoporelcdigoderesultadoyuna brevadescripcindelcdigoderesultado.Aquelcdigoderesultadoes200,quesignificaquesali conxito. Elmensajederespuestatienettulos,comoeldeconsulta.Enesteejemplo: ElttuloLast-Modifieddalafechayhoradecuandoelrecursofuemodificadoporltimavez.El clientepuedeutilizarestainformacinparamarcarlapginaelsucach,ypedirenelfuturo solamentelasquefueronmodificadas. ElttuloContent-Typedicealnavegadorquetipodedatoscontieneelcuerpodelarespuesta. ElttuloContent-Lengthdicealnavegadoreltamaodelcuerpodelarespuesta. Unalneavacaseparalosttulosdelcuerpodelarespuesta.Elcuerpodelarespuestacontieneel cdigoqueserenseadoenelnavegador.AquunasimplepginaHTML. ElcuerpopuedecontenerpginasHTMLmscomplicadas,uotrotipodecontenido(imagen,sonido, archivocomprimido,...).Elcuerpopuedetambincontenercdigoquevagenerarotrasconsultasal servidor,comolainsercindeunaimagen.

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina9/73

Interaccinentreunclienteyunservidorweb

4.4. Parmetrosdeconsulta SepuedenpasarparmetrosdeconsultaadentrodelURL.Poreso,despusdelnombredelapgina, hayquemencionarunpuntodepregunta'?'yunoavariosparmetrosdeparadospor'&',conel nombredelparmetro,elsigno'=',yelvalordelparmetro. Veremosejemplosutilizandolosformularios.

4.5. Mtodosdeconsulta YahemosvistoelusodelmtodoGET.TambinexisteelmtodoPOST.Ladiferenciaentrelosdos esqueelmtodoGETpasalosparmetrosadentrodelURL,asquesepuedeguardarfcilmenteen sulistademarcadores.Tambin,ennavegadorsabequeestemtodonopuededaarelservidor,as aceptadesometerlaconsultanuevamente(refresca)sinalerta. ElmtodoPOST,envezdepasarlosparmetrosenelURL,lespasaadentrodelcuerpodela consulta.Esopermiteenviarconsultadetamaomsgrandeque2000caracteres,ysinquelos parmetrosaparecenenelURL. Comolosparmetrosestnguardadosadentrodelcuerpodelaconsulta,laconsultanopuedeser guardadatanfcilmenteenlosmarcadores,porqueademsdelURL,deberguardarelcuerpodela consulta. Tambin,cuandoseprobadeenviardenuevounaencuestoPOST(refresh)elnavegadorgenerauna alertoporqueesteaccinpuedegeneraraccionesposiblementeirreversiblealniveldelservidor.

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina10/73

Ejemplodeformulario:

Cuidad: Pais:

EjemplodeconsultaPOSTgeneradaporelformularioarriba:POST / prueba.php HTTP/1.0 Host: www.businesssoft.com.ni User-Agent : Mozilla/4.5 [en] (WinNT; I) Accept: image/gif, image/jpeg, image/pjpeg, image/png, */* Accept-language : en Accept-charset : iso-8859-1,*,utf-8 cuidad=Managua&pais=Nicaragua

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina11/73

5. InstalacindelPHP5.1. Objetivodelcapitulo Alfindeestecapitulo,elalumnotendrunservidorPHPylasherramientasparadesarollarenPHP instaladosensucomputadora.Esteesunrequisitoparapodercumplirlosejerciciosprcticos.

5.2. Cualversin? ExistenvariasversionesdePHP.Latlimaversineslaversin5,yvamosautilizarestaversin.

5.3. InstalacindePHP PHPproveeunpaquetedeinstalacinparaWindows.Elpaquetedeinstalacinprobaradeconfigurar tambenelservidorweb(IIS/Apache2).Sifalla,ustedtendrqueconfirgurarelservidorweb manualmente(documentacinincluidaenpaquetedeinstalacin). BajoLinuxexistendosposibilidadesparainstalarPHP:compilarelpackete,outilizarunapaquete precompilado(siexisteparasuversindeLinux). SitiowebdePHP:http://www.php.net Laversin10.1deSuseLinuxtraelaversin5dePHPensuspaquetesdisponiblesenelCD/DVD. HayquenotarquePHPnopuedefunccionarsolo,sinoqueeltienequefuncionarconunservidor Web,comoApacheorIIS.EnestecursovamosautilizarPHP5conApache2. VamosainstalarlosutilizandoYAST,elprogaramadeinstalacinyconfiguracindeLinux.Hayque buscarsobrePHPyseleccionarelconectorapache2modphp5,php5,php5mysqli,php5mbstring,y phpzlib.LosdosltimosestanutilizadosporelsitiowebphpMyAdmin,quepermitemanejarlabase dedatosMySQL.

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina12/73

5.4. InstalacindeEclipseydelpluginparaPHP ParadisearlaspginasPHP,vamosautilizarlaherramientaEclipseversin3.2,conelpluginpara PHP. Estosprogramassonlibresygratuitos,yfuncionanbajoWindowscomobajosLinux. ParainstalarEclipevamosaabrirunaventanadeconsolayponernoscomoRoot(su). Primero,Eclipseversin3.2necesitaJavaversin1.5oarriba.SuelJava1.5noestinstaladohay queinstalarloprimero: DedesdeelCDrom:rpm -iv jdk-1_5_0_07-linux-i586.rpm

AhoraelJavaestadisponibleenensistemabajo/usr/java/jdk1.5.0_07peroelJavapordefectoes todavialaversion1.4.2queveniaconSuse.Sepuedeverificarejecutandojava -version Paraquelaversionpordefectosealaversion1.5hayquecambiaralgunosenlacesdebajo de/etc/alternatives.Paraeso,ejecutadesdeelCD'. modifySuseJDK15.sh'.Sisaleunerrordeque algunarchivonoexiste,ignorala. AhorapodemosinstalarEclipseysusplugins: Comoroot,vamosacopiarelarchivodeinstalacindeEclipseyluegodecomprimirlo. DedesdeelCDrom:cp eclipse-SDK-3.2-linux-gtk.tar.gz /opt cd /opt tar -xvf eclipse-SDK-3.2-linux-gtk.tar.gz cd /media/PHP cp net.sourceforge.phpeclipse_1.1.8.bin.dist.zip /opt/eclipse cd /opt/eclipse unzip -o net.sourceforge.phpeclipse_1.1.8.bin.dist.zip cd /opt/eclipse chgrp users -R *

VamosacrearlacarpetaqueutilizaremosconEclipse.md /workspace chmod 777 -R /workspace/

VamosacopiarelarchivodeinstalacindeEclipseyluegodescomprimirlo.cp Eclipse.desktop /opt/kde3/share/applnk/Development cp Eclipse.desktop /usr/share/applications

AhoraEclipseestaenelmenudeaplicaciones(ydedesarrollo).

5.4.1. InicializacindelpluginparaPHP ParapodermanejarPHPdedesdeEclipse,hayqueconfigurarelplugin. Debajodelmenu'Window',elegir'Preferences'yelobjetoPHPeclipseWebDevelopment.Seleccionar PHPexternaltoolsycorregirelcaminohaciaPHP.Ennuestrocaso/usr/bin/php5.

5.4.2. ConfiguracindeApache ParaqueApachelealaspginasquecreamosenEclipse,tenemosqueconfigurarApache. Hayqueabrirelarchivo/etc/apache2/httpd.confyalfinaladjuntarlaslneassiguientes:NameVirtualHost *:80 ########## Apache por defecto ########## ServerName localhost

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina13/73

ServerAdmin [email protected] AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|ru))?(/.*)?$ "/usr/share/apache2/manual$1" Options Indexes AllowOverride None Order allow,deny Allow from all SetHandler type-map SetEnvIf Request_URI ^/manual/(de|en|es|fr|ja|ko|ru)/ prefer-language=$1 RedirectMatch 301 ^/manual(?:/(de|en|es|fr|ja|ko|ru)){2,}(/.*)?$ /manual/$1$2 ########## PHP (Eclipse workspace) ########## DocumentRoot /workspace ServerName alumnoX (remplaza X por el numero de su maquina) ServerAdmin [email protected] AllowOverride None Order allow,deny Allow from all

Ahoratenemosdossitioswebennuestramquino:http://localhostqueapuntaalsitioApacheporde defecto,yhttp://alumnoXqueapuntaraalacarpetadeEclipse(error403/accesoprohibidopor defecto).

5.5. InstalacindeMySQL EnestecursovamosautilizarlabasededatosMySQL,ensuversin5.0.27.Poresolavamosa instalarya. ParainstalarMySQLvamosprimeroaentrarcomoelusuarioRoot(ousarsu). Luegoabrimosunaventanadeconsola,introducemoselCDdelcurso,yvamosainstalarlaversion deMySQLqueestaenelCDlanzandodesdeelCDlainstruccin: rpm -iv MySQL-server-5.0.27-0.glibc23.i386.rpm parainstalarelsevidor rpm -iv MySQL-client-5.0.27-0.glibc23.i386.rpm parainstalarelcliente EsoinstalloMySQLbajo/usr/bin. Vamosacrearunacarpeta/mysqlconteniendolosatajoshaciaprogramasdeMySQL.. createMySQLlinks.sh

Vamosahoraacambiarlaclavedelusuarioroot.Paracambiarlaclave,entraen/mysqlyejecuta: /usr/bin/mysqladmin -u root password 'SolPHP'.Lanuevaclavesera'SolPHP'. ParaverificarqueMySQLestabieninstaladoyseinicia,ejecuta'rcmysql Yahoravamosacrearlabasededatosdelcurso:cd /media/PHP /mysql/mysql -u root -pSolJava create database curso; exit; /mysql/mysql -u root -pSolJava curso < curso.sql restart'comoRoot.

Einstalarunentornodedesarrollo(enPHP!)parapodervisualizarlabasededatos:cp phpMyAdmin.tar.gz /workspace cd /workspace tar -xvf phpMyAdmin.tar.gz

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina14/73

6. PrimerapginaPHP6.1. Objetivodelcapitulo Alfindeestecapitulo,elalumnoharcreadoyejecutadosuprimercdigoPHP. Estaprimerapginaservirdebaseparaponerenprcticayprobarlateoraquevamosaverenlos prximoscaptulos.

6.2. Creacindeunnuevoproyectoweb AliniciarEclipseelegimoselworkspace'/workspace'. ParacrearnuestraprimerapginaPHP,necesitamoscrearunsitioweb.Poreso,enEclipse,creamos unnuevoproyectoPHP,quellamamoscurso,conlosvalorespordefecto. AliniciarEclipseelegimoselworkspace'/workspace'.

6.3. Creacindelapginadendice Parapoderprobarelservidor,vamosacrearnuestraprimerapginaPHP. Poreso,hacemosunclicderechosobrelacarpetacurso,yelegimosnew...PHPFile,yenlaventana queseabre,mencionamosennombredelarchivo:index.php. Todaslapginasconextensinphp(.phpenminuscula)sernanalizadasporelservidorPHPy producirnunapginaHTMLcomosalida.

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina15/73

Paraprobarsilapginafunciona,tenemosquellenarlaconalgncdigoPHPy/oHTML.Pordefecto lapaginaindex,phpquehemoscreadoyaestaabierta.Miramosqueyavieneconalgncdigopre hecho. Vamosamodificarelcdigodelamanerasiguiente,yloguardamos: Este es mi pgina en PHP numero .

Luegomiramoselresultadoconunnavegadorwebeneldomicilio:http://alumnoX/curso/o http://alumnoX/curso/index.php Aspodemosverqueenlabarradeaplicacincomoenlaprimeralneadelapginasaleenvalorde lavariable'titulo'. 1.1

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina16/73

7. Utilizacindelosscriptlets7.1. Qusonlosscriptlets? LosscriptletssonlasetiquetasquepermitendedelimitarelcdigoPHP,quetienequeseranalizado porelservidorPHP,delcdigoHTML,quetienequeserenviadoalclientecomotal.Aselservidor PHPcombinaelcdigoHTMLconelresultadodelcdigoPHPparaobtenerlapginaHTMLque serregresadaalclienteyseraledaporelnavegadordelcliente. ElPHPeslapartedelaprogramacinqueseejecutaalniveldelservidor,encontradelJavaScript, queseejecutaalladodelcliente. Parainterpretarunarchivo,elservidorPHPsmplementeleaeltextodelarchivohastaque encuentraunodeloscarcteresespecialesquedelimitaneliniciodecdigoPHP.Elintrprete ejecutaentoncestodoelcdigoqueencuentra,hastaqueencuentraunaetiquetadefindecdigo,que ledicealintrpretequesigaignorandoelcdigosiguiente.Estemecanismopermiteembebercdigo PHPdentrodeHTML:todoloqueestfueradelasetiquetasPHPsedejatalcomoest,mientras queelrestoseinterpretacomocdigo. HaycuatroconjuntosdeetiquetasquepuedenserusadasparadenotarbloquesdecdigoPHP.De estascuatro,slo2(y...)estnsiempredisponibles;el restopuedenserconfiguradasenelficherodephp.iniparaseronoaceptadasporelintrprete. LasetiquetassoportadasporPHPson: 1.)implicaelfindeladeclaracin,porlotantolosiguientees equivalente:

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina17/73

8. CaractersticasdellenguajePHP8.1. Objetivodelcapitulo Alfindeestecapitulo,elalumnosercapazdeentenderelusodevariablesylostipodedatos utilizadosenPHP. Elpodrtambinponercomentariosensucdigo,convertirdatosdeuntipoaotro,yhacer operacionessobrevariables.

8.2. ListadePalabrasClave EstaspalabrastienenunsignificadoespecialenPHP.Algunasdeellasrepresentancosasquelucen comofunciones,oalgunassevencomoconstantes,yassucesivamenteperonoloson,enrealidad: sonconstruccionesdellenguaje.Ustednopuedeusarningunadelassiguientespalabrascomo constantes,nombresdeclase,nombresdefuncionesomtodos.Usarlascomonombresdevariables estbien,generalmente,peropuedeconduciraconfusiones. ListadePalabrasClave: and or __LINE__ array() class const die() do empty() enddeclare endswitch endwhile for foreach include() include_once() print() require() switch unset() __FUNCTION__ __CLASS__ interface implements protected abstract throw private

xor as continue echo() endfor eval() function isset() require_once() use __METHOD__ extends clone catch

__FILE__ break declare else endforeach exit() global list() return() var final public try this

exception case default elseif endif extends if new static while php_user_filter

8.3. Sensibilidad PHPesavecessensiblealasmaysculasylasminsculas,avecesno.As$miVariableesuna variablediferentede$MiVariableperofalseoFALSEsoniguales.

8.4. Identificadores Losidentificadoressonlosnombresquesedanparaidentificaralasclases,funciones,variables, constantesocualquieraetiquetaPHP. Elnombredeunidentificadortienequecumplirconciertasreglas: Debetenerunomascaracteres Elprimercarctertienequeserunaletraoelcarcter_(subrayado). Lasletrasquepuedenserutilizadasdespusdelprimercarctersoncualquiernmerode letras,nmerosyrayas.Comoexpresinregularsepodraexpresarcomo:'[azAZ_\x7f\xff] [azAZ09_\x7f\xff]*'

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina18/73

8.5. Declaracindevariables Lasvariablespermitenalmacenardatosdeentrada,desalida,ointermedios. EnPHPlasvariablesserepresentancomounsignodedlarseguidoporelnombredelavariable.El nombredelavariableessensibleaminsculasymaysculas. Lasintaxisbsicadedeclaracindevariablees:$ = ; $miNumero=1;

PHP4yarribaofreceotraformadeasignarvaloresalasvariables:asignarporreferencia.Esto significaquelanuevavariablesimplementereferencia(enotraspalabras,"seconvierteenunalias de""apuntaa")lavariableoriginal.Loscambiosalanuevavariableafectanalaoriginal,y viceversa.Estotambinsignificaquenoseproduceunacopiadevalores;portanto,laasignacin ocurremsrpidamente.Decualquierforma,cualquierincrementodevelocidadsenotarsloenlos buclescrticoscuandoseasignengrandesmatricesuobjetos. Paraasignarporreferencia,simplementeseanteponeunsigno"&"alcomienzodelavariablecuyo valorseestasignando(lavariablefuente).Porejemplo,elsiguientetrozodecdigoproducela salida'MinombreesBob'dosveces:

Algoimportanteatenerencuentaesqueslolasvariablesconnombrepuedenserasignadaspor referencia. // Invalida.

// Esta es una asignacion valida. // Invalida; referencia una expresion sin nombre.

8.6. Tipossimples(oprimitivos) PHPsoportaochotiposprimitivos. Cuatrotiposescalares: boolean integer float(nmerodepuntoflotante,tambinconocidocomo'double') string Dostiposcompuestos: array object

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina19/73

Yfinalmentedostiposespeciales: resource NULL Eltipodeunavariableusualmentenoesdeclaradoporelprogramador;encambio,esdecididoen tiempodecompilacinporPHPdependiendodelcontextoenelqueesusadolavariable.

8.6.1. Boolean Esteeseltipomssimple.Unbooleanexpresaunvalordeverdad.PuedeserTRUEorFALSE. 8.6.1.1. Sintaxis Paraespecificarunliteralbooleano,usealgunadelaspalabrasclaveTRUEoFALSE.Ambasson insensiblesamaysculasyminsculas.

Usualmenteseusaalgntipodeoperadorquedevuelveunvalorboolean,yluegosteespasadoa unaestructuradecontrol.

8.6.1.2. Conversinabooleano Paraconvertirexplcitamenteunvaloraboolean,useelmoldeamiento(bool)o(boolean).Sin embargo,enlamayoradecasosnoesnecesariousarelmoldeamiento,yaqueunvalorser convertidoautomticamentesiunoperador,funcinoestructuradecontrolrequiereunargumento tipoboolean. Cuandoserealizanconversionesaboolean,lossiguientesvaloressonconsideradosFALSE: elbooleanFALSEmismo elinteger0(cero) elfloat0.0(cero) elvalorstringvaco,yelstring"0" unarrayconceroelementos unobjectconcerovariablesmiembro(sloenPHP4) eltipoespecialNULL(incluyendovariablesnodefinidas) CualquierotrovaloresconsideradoTRUE(incluyendocualquierresource). Ejemplo: // // // // numero decimal un numero negativo numero octal (equivalente al 83 decimal) numero hexadecimal (equivalente al 26 decimal)

Eltamaodeunenteroesdependientedelaplataforma,aunqueunvalormximode aproximadamentedosbilloneseselvalorusual(loqueesunvalorde32bitsconsigno). 8.6.2.2. Desbordamientodeenteros Siespecificaunnmeromsalldeloslmitesdeltipointeger,serinterpretadoensulugarcomo unfloat.Asimismo,sirealizaunaoperacinqueresultaenunnmeromsalldeloslmitesdeltipo integer,unfloatesretornadoensulugar.

NohayunoperadordedivisindeenterosenPHP.1/2produceelfloat0.5.Puedemoldearelvalora unenteroparaasegurarsederedondearlohaciaabajo,opuedeusarlafuncinround().

8.6.2.3. Conversinaentero Paraconvertirexplcitamenteunvalorainteger,usealgunodelosmoldeamientos(int)o(integer). Sinembargo,enlamayoradecasosnonecesitausarelmoldeamiento,yaqueunvalorser convertidoautomticamentesiunoperador,funcinoestructuradecontrolrequiereunargumento tipointeger.Tambinpuedeconvertirunvaloraenteroconlafuncinintval(). Desdebooleans:FALSEproducir0(cero),yTRUEproducir1(uno). Desdenmerosdepuntoflotante:Cuandoserealizanconversionesdesdeunflotanteaun entero,elnmeroserredondeadohaciacero.

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina21/73

Sielflotanteseencuentramsalldeloslmitesdelentero(usualmente+/2.15e+9=2^31),el resultadoesindefinido,yaqueelflotantenotienesuficienteprecisinparadarunresultadoentero exacto.Noseproducirunaadvertencia,nisiquieraunanoticiaenestecaso! Aviso:Nuncamoldeeunafraccindesconocidaainteger,yaqueestoenocasionesproduceresultados inesperados. Desdecadenas:VeaConversindecadenasanmeros Desdeotrostipos:Atencin:Elcomportamientodeconvertirdesdeenteronoesdefinidoparaotros tipos.Actualmente,elcomportamientoeselmismoquesielvalorfueraantesconvertidoabooleano. Sinembargo,noconfeenestecomportamiento,yaquepuedesermodificadosinaviso.

8.6.3. Nmerosdepuntoflotante Losnmerosdepuntoflotante(tambinconocidoscomo"flotantes","dobles"o"nmerosreales") puedenserespecificadosusandocualquieradelassiguientessintaxis:

Eltamaodeunflotantedependedelaplataforma,aunqueunvalorcomnconsisteenunmximo de~1.8e308conunaprecisindeaproximadamente14dgitosdecimales(loqueesunvalorde64 bitsenformatoIEEE). 8.6.3.1. Precisindelpuntoflotante Esbastantecomnquealgunasfraccionesdecimalessimplescomo0.1o0.7nopuedanser convertidasasurepresentacinbinariainternasinperderunpocodeprecisin.Estopuedellevara resultadosconfusos:porejemplo,floor((0.1+0.7)*10)usualmentedevolver7enlugardelesperado8 yaqueelresultadodelarepresentacininternaesenrealidadalgocomo7.9999999999.... Estoseencuentrarelacionadoalhechodequeesimposibleexpresardeformaexactaalgunas fraccionesennotacindecimalconunnmerofinitodedgitos.Porejemplo,1/3enformadecimalse convierteen0.3333333.... Asquenuncaconfeenresultadosdenmerosflotanteshastaelltimodgito,ynuncacompare nmerosdepuntoflotanteparaconocersisonequivalentes.Sirealmentenecesitaunamejor precisin,esbuenaideaqueuselasfuncionesmatemticasdeprecisinarbitrariaolasfunciones gmpensulugar. 8.6.3.2. Conversinaflotante Paramsinformacinsobrecundoycmosonconvertidaslascadenasaflotantes,vealaseccin tituladaConversindecadenasanmeros.Paravaloresdeotrostipos,laconversineslamismaque sielvalorhubiesesidoconvertidoaenteroyluegoaflotante.VealaseccinConversinaenteropara msinformacin.ApartirdePHP5,unanoticiaesgeneradasiintentaconvertirunobjetoaflotante.

8.6.4. Cadenas Unvalorstringesunaseriedecaracteres.EnPHP,uncaractereslomismoqueunbyte,esdecir, hayexactamente256tiposdecaracteresdiferentes.EstoimplicatambinquePHPnotienesoporte nativodeUnicode.CopyrightCdricSimon,2006 Versin1.1 Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina22/73

8.6.4.1. Sintaxis Unliteraldecadenapuedeespecificarseentresformasdiferentes. comillassimples comillasdobles sintaxisheredoc 8.6.4.2. Comillassimples Laformamssimpledeespecificarunacadenasencillaesrodearladecomillassimples(elcaracter'). Paraespecificarunacomillasencillaliteral,necesitaescaparlaconunabarrainvertida(\),comoen muchosotroslenguajes.Siunabarrainvertidanecesitaaparecerantesdeunacomillasencillaoal finaldelacadena,necesitardoblarla.Notequesiintentaescaparcualquierotrocaracter,labarra invertidaserimpresatambin!Demodoque,porlogeneral,nohaynecesidaddeescaparlabarra invertidamisma. Ejemplo:

8.6.4.3. Comillasdobles Silacadenaseencuentrarodeadadecomillasdobles("),PHPentiendemssecuenciasdeescape paracaracteresespeciales(caracteresescapados): Secuencia \n \r \t \\ \$ \" \[07]{1,3} \x[09AFaf]{1,2} Significado alimentacindelnea(LFo0x0A(10)enASCII) retornodecarro(CRo0x0D(13)enASCII) tabulacinhorizontal(HTo0x09(9)enASCII) barrainvertida signodedlar comilladoble lasecuenciadecaracteresquecoincideconlaexpresinregularesun caracterennotacinoctal lasecuenciadecaracteresquecoincideconlaexpresinregularesun caracterennotacinhexadecimal

CopyrightCdricSimon,2006

Versin1.1

Reproduccinprohibida

CursodeprogramacinenPHPconMySQL

Pagina23/73

Nuevamente,siintentaescaparcualquierotrocaracter,labarrainvertidaserimpresatambin! AntesdePHP5.1.1,labarrainvertidaen\{$var}novenaimprimindose. Perolacaractersticamsimportantedelascadenasentrecomillasdobleseselhechodequelos nombresdevariablessernexpandidos. 8.6.4.4. Heredoc Otraformadedelimitarcadenasesmedianteelusodelasintaxisheredoc("