Sei sulla pagina 1di 68

PHP para todos

DOCENTE: Ing. Edwin ARUHUANCA CCAMA

Este curso se distribuye bajo una licencia Creative Commons. Y Usted es libre de: Copiar, distribuir y comunicar pblicamente la obra Hacer obras derivadas Bajo las condiciones siguientes: Reconocimiento. ebe reconocer y dar cr!dito al autor original "#auri$$io %e&alba 'amayoa(

Introducc in
%H% "acr)nimo de *%H%: Hyperte+t %reprocessor*( es un lenguaje interpretado de alto nivel embebido en p,ginas H-#. y ejecutado en el servidor. Es decir, es un lenguaje de programaci)n /ue no re/uiere ser compilado. 0ctualmente, muc1os de los sitios /ue conocemos est,n desarrollados en %H%, aun/ue claro, nosotros no vemos la ejecuci)n del programa sino nicamente el resultado de su ejecuci)n, dic1a comunicaci)n se reali$a usualmente a trav!s del lenguaje H-#.. %or lo /ue es un re/uisito para llevar este curso el conocer al menos los 2undamentos b,sicos de la sinta+is H-#.. Cuando nosotros tipeamos una direcci)n en nuestro e+plorador, por ejemplo cuando entramos al sitio 1ttp:33bloggeandolo.blogspot.com estamos enviando una petici)n al servidor. ic1o servidor reconoce /ue la petici)n es una p,gina con e+tensi)n p1p y solicita al int!rprete /ue ejecute el c)digo de la misma. El resultado de dic1a ejecuci)n estar, escrito en H-#. de modo /ue el navegador pueda leerlo y mostrarnos el resultado. 0un/ue ese es el 2uncionamiento b,sico, tambi!n podemos incluir consultas a bases de datos #y'4. y la ejecuci)n de otros elementos /ue veremos m,s adelante. Este es/uema plantea el 2uncionamiento b,sico de un sitio escrito en p1p

0 di2erencia de H-#., %H% es un lenguaje de programaci)n, y debe ser estudiado tal, es por eso, /ue en este curso dedicaremos el primer cap5tulo al estudio de los 2undamentos b,sicos de programaci)n.

Captulo I: Fundamentos Anlisis Numrico y Programa cin

Bsicos

de

Un algoritmo es una secuencia 2inita y ordenada de instrucciones /ue 1an de seguirse para resolver un problema. ic1a de2inici)n es la base misma de la programaci)n pues lo /ue 1ace un lenguaje de programaci)n es traducir un algoritmo. Hoy en d5a, e+isten di2erentes t!cnicas de programaci)n, unas m,s complejas de otras y en ocasiones algunas no pueden ser utili$adas con cual/uier lenguaje de programaci)n, las dos t!cnicas m,s comunes son: %rogramaci)n estructurada %rogramaci)n orientada a objetos

.a programaci)n estructurada es una 2orma de escribir programas de manera clara. %ara ello utili$a nicamente tres estructuras: secuencia, selecci)n e iteraci)n o instrucciones secuenciales, condicionales y repetitivas. Una de las 1erramientas /ue utili$an los programadores para traducir sus algoritmos en un lenguaje de programaci)n cual/uiera es el pseudoc)digo, o 2also lenguaje. Es decir, utili$ando un lenguaje 67 programable o ine+istente /ue permita darle una estructura traducible a un determinado algoritmo. #ediante el an,lisis del pseudoc)digo /uien incursione en el mundo de la programaci)n puede comprender la l)gica /ue re/uiere el escribir un determinado programa y 2acilita la comprensi)n de cual/uier otro lenguaje. Es por ello /ue en este cap5tulo describiremos las estructuras de control y los elementos 2undamentales de un programa usando un pseudoc)digo /ue traduciremos m,s adelante.

Pseudocdigo y estructura de un programa


%odemos considerar /ue la ejecuci)n b,sica de un algoritmo debe obedecer un cierto orden. 'iguiendo este principio podemos a2irmar /ue todo programa cuenta con una cabecera y un cuerpo donde se incluyen di2erentes elementos. Claro, siendo la sinta+is de algunos lenguajes mas o menos restrictiva. En esencia la estructura b,sica de un programa es

1. Cabecera. 1. Programa.

2. Mod !o. ". Ti#o$ de da%o$. &. Con$%an%e$. '. (ariab!e$. 2. C er#o. 1. Inicio. 2. In$%r ccione$. ". )in.

1 1 Programa
'e re2iere al nombre con el cual identi2icamos nuestro algoritmo, en pseudoc)digo se de2ine como: algoritmo <nombre> 67-0: 0un/ue en un pseudoc)digo no tenemos grandes restricciones en cuanto a la sinta+is de un programa, con el 2in de ad/uirir buenas costumbres de programaci)n vamos a evitar el uso de maysculas en nuestros programas.

1! "odulo
'e re2iere a los arc1ivos necesarios /ue deber,n incluirse para la correcta ejecuci)n del programa por ejemplo librer5as /ue contengan 2unciones especiales /ue utili$aremos en nuestro programa. Este elemento lo ignoraremos en este cap5tulo pues nicamente sentaremos las bases de la programaci)n estructurada.

1 # $ipos de datos
'e re2iere a la creaci)n de nuevos tipos de dato, 6o de2iniremos tipos en este cap5tulo por lo /ue obviaremos este elemento.

1% Constante s
.lamaremos una constante a un valor /ue no variara durante la ejecuci)n de un programa, por ejemplo el valor de pi en un programa /ue calcule el ,rea de un c5rculo siempre ser, el mismo 8.9:9;. e modo /ue nuestro pseudoc)digo seria: algoritmo <area>

CONST pi = 3.1416

Como vemos, de2inimos /ue estamos declarando una constante utili$ando una palabra clave, C76'-, damos un nombre a la constante <pi= y posteriormente le asignamos un valor.

1& 'aria(les
.as variables son elementos /ue almacenan un valor /ue puede variar durante la ejecuci)n de un programa. En la mayor5a de los lenguajes de programaci)n es necesario de2inirlas, es decir darles un nombre y asignarles el tipo de dato /ue van a almacenar. 0un/ue en %H% no es necesario pues el int!rprete les asigna el tipo del dato del valor /ue contengan en este cap5tulo y a 2in de e+tender la comprensi)n sobre el tipo de datos /ue pueden almacenar las variables y la interacci)n entre los mismos vamos a de2inirlas siempre. %or ejemplo, para un programa /ue calcule el ,rea de un circulo, se re/uerir, el radio del mismo sabiendo /ue el ,rea de un circulo se calcula multiplicando el valor de pi por el radio al cuadrado. Entonces radio ser, una variable pues no siempre calcularemos al ,rea del mismo c5rculo adem,s, necesitaremos una variable /ue almacene la respuesta. algoritmo <area> CONST pi = 3.1416 var real: radio, resp En este ejemplo, 1emos declarado la constante pi, y estamos declarando dos variables de nombre <radio= y <resp= /ue contendr,n datos de tipo num!rico real.

1 & 1 $ipos de datos


En casi cual/uier lenguaje de programaci)n e+isten ciertos tipos de datos 2undamentales, estos pueden ser de tipo num!rico, cadenas y datos bol!anos, aun/ue en cada lenguaje e+iste un identi2icador para cada tipo de dato. En este cap5tulo consideraremos nicamente: Numri co

Real Entero

6meros con decimales 6meros sin decimales

Cadena C1ar Cadena Bolanos 'olo pueden contener valores verdaderos o 2alsos, por ejemplo cuando evaluamos condiciones o bucles repetitivos. Un solo car,cter #,s de un car,cter

! 1 Inicio
-odo programa e instrucci)n debe tener un inicio y un 2inal, dic1o elemento puede de2inirse sea con una palabra clave, o con un car,cter, en nuestro pseudoc)digo lo de2iniremos como: algoritmo <area> CONST pi = 3.1416 var real:radio, resp ni!io 67-E'E /ue no estamos considerando ningn delimitador entre las instrucciones, en nuestro pseudoc)digo estamos considerando /ue un salto de l5nea delimita el 2in de la instrucci)n.

!! Instruccione s
.as instrucciones son las operaciones /ue se reali$aran durante la ejecuci)n del programa. 7>7 /ue 1e mencionado una palabra clave muy importante. <operaciones= y estas ser,n de2inidas por ciertos <operadores=

)perado res

Un operador, es un elemento /ue controla la ejecuci)n del programa. Y e+isten operaciones de asignaci)n, operadores aritm!ticos, relacionales y operadores l)gicos. )peradores Asignacin de

.os operadores de asignaci)n permiten asignarle un determinado valor a una variable. En nuestro pseudoc)digo utili$aremos el signo <?= como nuestro operador de asignaci)n. )peradores Aritmticos Como su nombre lo indica, son operadores /ue se utili$an usualmente para ejecutar operaciones aritm!ticas entre variables o bien entre variables y nmeros. En pseudoc)digo utili$aremos: @ A B 3 C D )peradores relacionales 'on a/uellos /ue se utili$an para evaluar si una condici)n es verdadera o es 2alsa. Y se utili$an principalmente en las instrucciones selectivas y las instrucciones repetitivas. E E? G G? ?? H? #ayor #ayor o Fgual #enor #enos o Fgual Fgual istinto 'uma Resta %roducto Cociente Resto %otenciaci)n

)peradores lgicos Y 7 Es true si ambas condiciones son true Es true si una condici)n es true

! ! 1 Instrucciones *ecuenciales
.as instrucciones secuenciales son a/uellas /ue se ejecutan l5nea por l5nea, por ejemplo para el caso del c,lculo del ,rea de un c5rculo.

algoritmo <area> CONST pi = 3.1416 var real: radio, resp ini!io radio = " resp = pi#radio$" %in

Como podemos observar, en este programa se le asigna un valor a la variable radio utili$ando un operador de asignaci)n, posteriormente se le asigna a la variable resp el valor /ue resulte del c,lculo de la constante pi por el valor de la variable radio elevado al cuadrado. Este programa 2unciona, y si e+istiera un compilador para nuestro pseudoc)digo probablemente no devolver5a ningn error, sin embargo este programa en esencia no sirve para nada, pues en principio no se comunica con el usuario y tampoco solicita /ue el usuario ingrese un radio as5 /ue nicamente puede calcular el valor de un c5rculo de radio I

+atos entran datos salen


%ara /ue un programa sea til para el usuario, debe comunicarse con !l, solicitar in2ormaci)n y mostrar in2ormaci)n. Es por eso, /ue en nuestro pseudoc)digo utili$aremos las palabras <Escribir= y <.eer= para comunicarnos con el usuario. e modo /ue escribir, lo utili$aremos para mostrar un mensaje al usuario y leer para recibir in2ormaci)n del mismo y almacenarla en una variable.

e esta 2orma podr5amos 1acer /ue nuestro programa sea un poco m,s til.

algoritmo <area> CONST pi = 3.1416 var real: radio, resp ini!io es!ribir&' ngrese el radio de la es%era: '( leer&radio( resp = pi#radio$" es!ribir&')l *rea del !ir!+lo es: ',resp( %in Esta ve$, nuestro programa solicita al usuario /ue ingrese el radio de la es2era, una ve$ /ue el usuario lo ingresa el programa lo almacena en la variable <radio= para calcular despu!s el valor de la variable <resp= para mostrar el valor de resp despu!s con otro escribir. 67-E'E: /ue el te+to plano se ingresa entre comillas a di2erencia de las variables, en casi todos los lenguajes de programaci)n se sigue este principio

,-ercicio N1
dise&e un pseudoc)digo /ue solicite al usuario dos tres nmeros, sume el primero con el segundo, el segundo con el tercero y muestre el resultado del cociente entre los dos resultados.

!!! Instrucciones *electi.as


.lamamos instrucciones selectivas a las /ue re/uieren de una condici)n previa para ser evaluadas. Y normalmente se las conoce como condicionales, pueden ser simples, dobles, anidadas y mltiples. *electi.as *imples Re/uieren de una sola condici)n a ser evaluada, para este ejemplo vamos a utili$ar un caso donde el usuario debe ingresar su edad para saber si puede ingerir o no alco1ol. %or lo /ue utili$aremos una sola variable. <edad= algoritmo <edad>

var real:edad ini!io es!ribir&' ngrese s+ edad: '( leer&edad( si edad > 1, enton!es es!ribir&'-sted p+ede ingerir al!o.ol !on modera!ion'( %in/si es!ribir&'+sted no p+ede ingerir al!o.ol'( %in

01ora, una ve$ /ue el usuario introduce su edad, la selectiva simple evala si es o no mayor de 9J, si el usuario es mayor de 9J entra a la sentencia condicional si no, simplemente la salta y pasa a la siguiente l5nea. 0un/ue este ejemplo es v,lido, no muestra el uso correcto de las instrucciones selectivas pues la 2rase <usted no puede ingerir alco1ol= deber5a estar dentro del condicional como una negativa a la primera condici)n.

67-E'E: /ue la sentencia 2inali$a con un 2inAsi es decir un KF6 para el 'F *electi.as do(les 'e consideran sentencias /ue evalan una condici)n, si dic1a condici)n no se cumple entonces reali$an otra acci)n siempre dentro de la misma estructura condicional. %or ejemplo para el caso anterior la sinta+is seria: algoritmo <edad> var real:edad ni!io es!ribir&' ngrese s+ edad: '( leer&edad( si edad > 1, enton!es es!ribir&'-sted p+ede ingerir al!o.ol !on modera!i0n'( si/no es!ribir&'+sted no p+ede ingerir al!o.ol'( %in/si 1in En este ejemplo se muestra una sinta+is m,s elaborada /ue no depende del modo en /ue se ejecuta el programa sino de las estructuras de control /ue se incluyen. *electi.as anidadas B,sicamente, una selectiva anidada es una selectiva dentro de otra selectiva, podemos anidar un sinnmero de estructuras, para no perder el 1ilo de nuestro programa, es importante /ue aprendamos a comentar nuestro c)digo. Un comentario es b,sicamente una l5nea de c)digo /ue no es le5da y en nuestro pseudoc)digo los representaremos como en p1p con una doble barra <33= Lamos a anali$ar un ejemplo en el /ue se le solicita al usuario los tres lados de un triangulo para saber si es e/uil,tero, escaleno o bien si es is)sceles.

algoritmo <triang+lo>

var real:lado1, lado", lado3 ini!io es!ribir&' ngrese los lados del triag+lo: '( leer&lado1, lado", lado3(

22ini!io de la sele!tiva

si lado1 3= lado" enton!es 224a sabemos el primer lado no es ig+al al seg+ndo si lado" 3= lado3 enton!es 22todos los lados son di%erentes es!ribir&')l triang+lo es es!aleno'( si/no 22+no de los lados es ig+al es!ribir&'el triang+lo es isos!eles'( %in/si

si/no 224a sabemos 5+e el primero es ig+al al seg+ndo si lado" 3= lado3 enton!es 22tenemos dos lados ig+ales es!ribir&'el triang+lo es isos!eles'( si/no

22todos los lados son ig+ales es!ribir&'el triang+lo es e5+ilatero'( %in/si

%in Como podemos observar no es demasiado complicado, la parte di25cil es el ra$onamiento de la l)gica /ue seguir, el programa, es decir el dise&o del algoritmo. El uso de selectivas anidadas re/uiere plantearse un es/uema mental del procedimiento /ue seguir, al programa antes de empe$ar a escribir l5neas de c)digo. 67-E'E: .a sinta+is coloreada se utili$ara de a/u5 en adelante a 2in de de2inir los elementos propios del pseudoc)digo, las variables y las cadenas de te+to de2inidas por el programador. *electi.as "/ltiples Una selectiva mltiple es una instrucci)n /ue nos permite reali$ar determinada acci)n en caso de /ue una variable <+= tome un valor <y= se utili$a la palabra clave <'egn sea= para de2inir el segmento integrado por una selectiva mltiple. %or ejemplo si /uisi!ramos un programa /ue nos escribiera en letras los nmeros del 9 al die$ permiti!ndole al usuario ingresar un numero en dic1o rango nuestro pseudoc)digo seria m,s o menos as5: algoritmo <n+meros> var entero:n+meros ini!io es!ribir&'ingrese +n n+mero del 1 al 16'( leer&n+meros( Seg+n sea <n+meros> .a!er 1: es!ribir&'+no'( ": es!ribir&'dos'(

3: es!ribir&'tres'( 4: es!ribir&'!+atro'( 7: es!ribir&'!in!o'( 6: es!ribir&'seis'( 8: es!ribir&'siete'( ,: es!ribir&'o!.o'( 9: es!ribir&'n+eve'( 16: es!ribir&'die:'( si/no es!ribir&'N+mero no valido'( %in/seg+n %in Como 1emos observado, en el caso de las selectivas mltiples son instrucciones /ue se ejecutan en caso de e+istir opciones prede2inidas para una determinada situaci)n. %or ejemplo, podr5amos programar una calculadora /ue ejecutara una determinada acci)n para cada uno de los operadores aritm!ticos "7>7 tratando cada operador como una variable de tipo car,cter(.

,-ercicio N!
Como ejercicio para la pr,ctica de las 2unciones secuenciales y las selectivas mltiples dise&e un pseudoc)digo /ue simule una calculadora muy rudimentaria /ue permita al usuario sumar, restar multiplicar dividir, sacar ra5$ cuadrada y elevar un numero + a una potencia y.

!!# Instrucciones repetiti.as


.as instrucciones repetitivas son a/uellas /ue se ejecutan mientras se cumpla una condici)n. ic1as instrucciones deben ser 2initas y contar siempre con un mecanismo de escape. Instruccin mientras repetiti.a

.a instrucci)n mientras se&ala /ue un determinado procedimiento se ejecutara mientras una condici)n <M= sea verdadera. E+iste en la mayor5a de los lenguajes de programaci)n incluyendo p1p. 6os permite por ejemplo, evaluar los nmeros del 9 al 9N sumando a/uellos /ue sean pares para mostrar al 2inal la suma de los mismos. algoritmo <s+matoria> var entero: i, a! ini!io i = 6 a! = 6

mientras i < 16 .a!er

si i ; " == 6 enton!es a! = a! < i si/no a! = a! %in/si

i = i < 1

%in/mientras es!ribir&'la s+ma de los n=meros pares del 1 al 16 es: ',a!( %in En principio se declararon las dos variables, i un contador y ac un acumulador ambas de tipo real, despu!s se iniciali$aron "siempre se debe iniciali$ar las variables asign,ndoseles un valor cuando se utili$aran en instrucciones repetitivas( 'e evala si i es menor /ue 9N, como i vale N para la primera secuencia entra al bucle mientras, se evala si el resto de i y I es N para evaluar si es un numero par, si lo es, se suma al acumulado <ac= si no, nicamente se le suma uno a i /ue regresa a evaluar si i es menor /ue 9N y as5 sucesivamente 1asta /ue la condici)n i menor /ue 9N ya no se cumpla. ,structura repetiti.a para 7tra estructura repetitiva /ue conviene estudiar es la estructura para, /ue repite una acci)n desde + igual a n9 1asta nI con un incremento de 9 o bien un incremento especi2icado por el usuario. 0 di2erencia de la estructura mientras, la estructura para siempre incluye un contador /ue repetir, la instrucci)n + nmero de veces. 0s5 pues, el ejemplo anterior puede ser escrito utili$ando la estructura para, cuya sinta+is es: algoritmo <s+matoria> var entero: i, a! ini!io a! = 6

para i = 6 .asta

16 .a!er

si i ; " == 6 enton!es a! = a! < i

si/no a! = a! %in/si %in/para es!ribir&'la s+ma de los n=meros pares del 1 al 16 es: ',a!( %in 67-E'E: 4ue a di2erencia de la estructura mientras, la variable contador se iniciali$a dentro de la propia estructura. 0dem,s el incremento si no se especi2ica siempre ser, de @9

,-ercicio N #
ise&e un pseudoc)digo /ue devuelva usuario la suma de los nmeros del 9 al 9N pares e impares de 2orma independiente.

!# Fin
-odo programa, debe incluir un 2in, aun/ue en los ejemplos anteriores lo 1emos incluido y se sobreentiende /ue cada instrucci)n y procedimiento debe incluir un 2inAprocedimiento es importante recalcarlo en este apartado.

Conclusio nes
'e 1an estudiado los elementos comunes de cada uno de los lenguajes de programaci)n, un paso importante para aprender cual/uier otro lenguaje, sea este compilado o bien sea interpretado. 0un/ue muc1as de las caracter5sticas a/u5 descritas, principalmente la declaraci)n de variables no 1a lugar en p1p, es importante considerar /ue aun/ue no se declaran, los tipos de variable e+isten aun en p1p. 0s5 pues, esta introducci)n a la programaci)n es per2ectamente v,lida para p1p, tanto como para C, pascal o cual/uier otro lenguaje, claro /ue se modi2icaron algunos operadores y procedimientos en nuestro pseudoc)digo para ajustarlo al trabajo /ue reali$aremos con p1p.

Captulo II: Preparando el espacio de tra(a-o


Es conveniente /ue si no sabes 60 0 de H-#. te descargues el curso -u'itioYa antes de reali$ar %H% para todos, puedes 1acerlo a/u5: 1ttp:33bloggeandolo.blogspot.com3IN9N3N;3creandoAunAsitioAOebAdesdeA N.1tml 0un/ue 1oy en d5a, e+isten muc1os F Es para trabajar con p1p, por ser el /ue m,s se ajusta a nuestras necesidades y por ser el /ue 1emos utili$ado en otros cursos como <-u'itioYa= vamos a utili$ar reamOeaver. 'i no lo tienes, puedes descargarte la versi)n de prueba desde el sitio o2icial de 0dobe, nosotros en este tutorial trabajaremos con la versi)n C'P por ser la m,s nueva. 67 utili$aremos en absoluto m,s /ue en la con2iguraci)n m,s b,sica, el modo dise&ador de reamOeaver.

'i utili$as .inu+ o bien QindoOs pero no deseas descargar reamOeaver puedes seguir este tutorial utili$ando eclipse o cual/uier otro F E.

'i pre2ieres no utili$ar ningn so2tOare adicional, tambi!n puedes trabajar con el bloc de notas. 0l 2in y al cabo, lo /ue si necesitaremos y est, disponible de 2orma gratuita es un servidor. -anto para .inu+ como para QindoOs, podemos descargarnos +ampp desde el sitio o2icial 1ttp:33OOO.apac1e2riends.org3es3+am pp.1tml

Una ve$ /ue lo 1emos instalado, conviene /ue iniciemos apac1e y #y'4.. 6o re/ueriremos nada m,s por el momento.

Una ve$ /ue 1emos iniciado apac1e, vamos a iniciar reamOeaver para con2igurar el servidor con el /ue vamos a trabajar y la direcci)n donde guardaremos nuestros arc1ivos.

En la pantalla de Fnicio de 6uevoR 'itio de reamOeav er.

reamOeaver, vamos a seleccionar,

'i 1as le5do -u'itioYa este procedimiento te ser, muy 2amiliar, recuerdas cuando dijimos /ue no especi2icar5amos nada en <'ervidor= esta ve$ 1a cambiado. %1p necesita ser interpretado y 1emos instalado un servidor en nuestra %C para 1acerlo.

7jo con la direcci)n, en mi caso voy a ubicar mi sitio en C:S+amppS1tdocsSp1pyaS puedes variar la direcci)n de la ultima carpeta, pero siempre debes ubicar tu sitio dentro de la carpeta 1tdocs de +ampp En la pesta&a servidores 1aremos clic sobre <@= para agregar un nuevo servidor, y donde con2iguraremos as5 nuestro nuevo sitio

01ora, crearemos arc1ivo p1p

un

nuevo

Y vamos a escribir lo siguiente entre el GbodyEG3bodyE

amos vista previa en el navegador y deber5amos de ver algo m,s o menos as5:

0un/ue no te 1as dado cuenta de c)mo, 1as escrito tu primer programa en p1p, pero buenoR no es la gran cosa, sin embargo prueba /ue 1emos instalado apac1e, p1p y lo 1emos con2igurado correctamente en reamOeaver.

67-E'E: %ara /uienes utilicen algn otro so2tOare como eclipse o bien bloc de notas, basta con guardar los documentos dentro de la carpeta 1tdocs de +ampp y ejecutar desde local1ost para ejecutar sus programas.

Captulo III: Introduccin a PHP


TLale /ue era 1ora de empe$ar con p1p 1eU 0un/ue 1emos descrito los elementos b,sicos de un programa en el cap5tulo F es 1ora de trabajar espec52icamente con p1p.

Inicio del programa


%ara indicarle al servidor /ue un lenguaje, o un segmento de un sitio est, escrito en p1p y debe ser traducido por el int!rprete se se&ala dic1o programa con: GUp1p 0s5 mismo, el programa debe 2inali$ar con UE -odas las sentencias incluidas entre estos s5mbolos ser,n interpretadas y traducidas para devolver un elemento escrito en H-#.. %or ejemplo, si en un sitio escribirnos:

El navegador lo traducir, como

%or otro lado, si escribimos

0 la 1ora de visuali$arlo en el navegador recibiremos el siguiente mensaje de error

e modo /ue de a/u5 en adelante, lo U6FC7 /ue podremos escribir entre las sentencias GUp1p y UE ser, en e2ecto, %H%.

Constan tes
.as constantes en p1p se declaran utili$ando la 2unci)n de2ine"(, y ubicando entre par!ntesis en nombre de la constante y su valor. %or ejemplo, para de2inir el valor constante de pi, seria:

'aria(l es
Un elemento 2undamental en cual/uier lenguaje de programaci)n son las variables, en %H% no 1ace 2alta declararlas antes de asignarles un valor, de 1ec1o una variable se declara en el momento en /ue se le

asigna un valor, dic1a declaraci)n la reali$a el interprete en el momento de la ejecuci)n.

ebemos tener presentes los tipos, pues no podemos sumar una variable de tipo cadena con una variable de tipo num!rico. %ara declarar una variable en p1p, basta con utili$ar el signo V para identi2icar el elemento como una variable y asignarle un valor cual/uiera. 'i dic1o valor es una cadena, debe estar entre comillas. %or ejemplo: >a = ?.ttp:22bloggeandolo.blogspot.!om@ En nuestro programa, vamos a de2inir varias variables a 2in de trabajar mas adelante con ellas. e2iniremos una de tipo entero, una de tipo real, una de tipo cadena y una de tipo booleana.

67-E'E: /ue se usa <W= como delimitador para cada e+presi)n, esto es importante pues le permite al int!rprete identi2icar cada instrucci)n. Como se puede observar, basta con asignarle un valor a nuestra variable para declararla. El te+to escrito tras las 33 es un comentario y ser, ignorado por el interprete.

*alida datos

de

%H%, 1ace uso de elementos propios de H-#. como dispositivos de entrada, estos son los 2ormularios. 'in embargo, antes de comprender el uso de dic1os elementos, debemos repasar las instrucciones selectivas y las instrucciones repetitivas.

0s5 pues, por el momento, nicamente trabajaremos con programas prede2inidos /ue muestren datos. .a 2unci)n e/uivalente a nuestro <escribir= en pseudoc)digo es <ec1o= Y 2unciona de la siguiente 2orma: <Ap.p e!.o ?Bola C+ndo@D A> Esto imprimir5a en el navegador:

Utili$ando la 2unci)n ec1o entonces podr5amos darle algn 2ormato a nuestro te+to utili$ando H-#.. %or ejemplo

4ue imprimir,

Esta es la 2orma en la /ue H-#. sirve de <consola= a %H%

'ector es
Un array, es una colecci)n de valores, y pueden ser unidimensionales, bidimensionales o multidimensionales, 6os permiten almacenar una variedad de datos /ue son delimitados por un identi2icador /ue puede ser num!rico o bien una cadena, si no se especi2ica un valor, este ser, num!rico y comen$ara desde N, se ubica entre dos corc1etas. 'e de2inen de la siguiente 2orma:

En el navegador, dic1o programa imprimir,

7>7 /ue no de2inimos identi2icadores para el array, por lo tanto este empie$a desde N, donde el valor de la variable Vnombre ser, >uan. 7tra 2orma de de2inir arrays, y nos permite crear estructuras mas complejas es utili$ando la 2unci)n array, y su sinta+is es la siguiente: >variable = arra4&?valor@ => ?!ontenido@, ?otro ?!ontenido@( Y en un programa, donde anidamos un par de arrays: valor@ =>

4ue en el navegador imprimir5a:

)perado res
0s5 como con nuestro pseudoc)digo p1p cuenta con sus propios operadores, las principales variaciones respecto a nuestro pseudoc)digo son los valores de asignaci)n pues aun/ue se mantiene <?= como principal operador de asignaci)n en p1p se me$clan operadores de asignaci)n con algunos operadores aritm!ticos sin embargo no es un re/uisito reali$ar las operaciones de esta manera. Operadores aritmticos
+ * / % ++ -Operadores de asignacin = += -= *= /= %= .= * ma do$ +a!ore$ Re$%a do$ +a!ore$ ,o #a$a a nega%i+o n +a!orM !%i#!ica do$ +a!ore$ Di+ide do$ +a!ore$ Re$%o de di+idir do$ +a!ore$ Incremen%o en na nidad Decremen%o en na nidad

A$igna a !a #ar%e derec.a e! +a!or i/0 ierdo Rea!i/a !a $ ma de !a derec.a con !a i/0 ierda 1 !a a$igna a !a derec.a Rea!i/a !a re$%a de !a derec.a con !a i/0 ierda 1 !a a$igna a !a derec.a Rea!i/a !a m !%i#!icaci2n de !a derec.a con !a i/0 ierda 1 !a a$igna a !a derec.a Rea!i/a !a di+i$i2n de !a derec.a con !a i/0 ierda 1 !a a$igna a !a derec.a *e ob%iene e! re$%o 1 $e a$igna Conca%ena e! +a!or de !a i/0 ierda con !a derec.a 1 !o a$igna a !a derec.a

Operadores lgicos ! and or xor &&

O#erador NO o negacion. *i era %r e #a$a a 3a!$e 1 +ice+er$a O#erador 45 $i ambo$ $on +erdadero$ +a!e +erdadero O#erador O5 +a!e +erdadero $i a!g no de !o$ do$ e$ +erdadero (erdadero $i a!g no de !o$ do$ e$ %r e #ero n nca ambo$ Tr e $i ambo$ !o $on

|| Operadores condicionales == != > < >= <=

Tr e $i a!g no !o e$

Com#r eba $i do$ n6mero$ $on ig a!e$ Com#r eba $i do$ n6mero$ $on di$%in%o$ Ma1or 0 e5 de+ e!+e %r e en ca$o a3irma%i+o Menor 0 e5 de+ e!+e %r e en ca$o a3irma%i+o Ma1or o ig a! Menor o ig a!

Instrucciones *ecuenciales
01ora, si consideramos nuestro primer pseudoc)digo, podr5amos calcular el ,rea de un c5rculo en p1p utili$ando la siguiente sinta+is.

'i 1acemos vista previa en el navegador, podremos observar:

0un/ue claro, no es algo demasiado agradable a la vista, podemos entonces agregarle algn te+to para mejorar la apariencia de nuestro resultado:

67-E'E: /ue para concatenar cadenas de te+to y variables no se utili$an <,= con en pseudoc)digo, sino <.= En el navegador seria:

7tra 2orma de e+presar este mismo resultado 1ubiera sido:

Y el resultado ser5a el mismo pues en p1p las variables embebidas en el te+to son tratadas como tales. 0un/ue /ueda algo tosco esa es la idea, claro /ue podr5amos agregarle estilos C'' y seguro /uedar5a muc1o mejor, sin embargo ese es un tema /ue tocamos en el primer curso, y no 1ace 2alta /ue volvamos a tocarlo. 0/u5 estamos aprendiendo a programar. 'e supone /ue ya el dise&o es cosa de ni&os WA(.

Instrucciones *electi.as
En pseudoc)digo, llam,bamos al elemento /ue de2in5a una sentencia condicional <si= en p1p dic1o elemento es <i2= y su sinta+is es la siguiente. Recordemos a/uel ejemplo en el /ue evalu,bamos si una persona ten5a o no edad para ingerir alco1ol. 'i traducimos nuestro pseudoc)digo a %H% ser5a algo m,s o menos as5 "obviando la entrada de datos /ue veremos m,s adelante(:

01ora, basados en este ejemplo podemos deducir /ue la sinta+is es: i% &Condi!i0n( E nstr+!!i0n 1D nstr+!!i0n "D F else E nstr+!!i0n *D nstr+!!i0n GD FD Es importante observar /ue antes de <else= no se incluye un <W= lo /ue indica al int!rprete /ue no se 1a terminado de ejecutar la sentencia condicional, si lo incluy!ramos 1abr5a un error de sinta+is. En p1p, podemos anidar nuestras sentencias condicionales tal y como lo estudiamos en el cap5tulo F, pero adem,s en p1p podemos incluir condiciones adicionales dentro de la condici)n principal utili$ando la estructura <elsei2=. 4ue 2unciona de la siguiente 2orma. 'upongamos un programa /ue nos indi/ue si un nmero tiene uno, dos o tres d5gitos:

ic1o programa imprimir5a en el navegador:

Instrucciones selecti.as m/ltiples .as instrucciones selectivas mltiples permiten al evaluar si una variable cual/uiera toma M o Y valores. 'u sinta+is es muy similar a la /ue describirnos con nuestro pseudoc)digo. .a palabra clave /ue delimita la estructura de control es sOitc1, y su sinta+is, por ejemplo para una calculadora es:

%odemos observar un caso /ue bien puede aplic,rsele a una calculadora muy rudimentaria, donde la variable Vsigno ser, evaluada, y se reali$ara la operaci)n pertinente de acuerdo a su valor prede2inido. 67-E'E /ue la palabra breaX, indica /ue de cumplirse la condici)n, inmediatamente el puntero sale de la declaraci)n sOitc1. Y no se incluye en la ltima declaraci)n. El resultado en el navegador de la sentencia seria:

Instrucciones 0epetiti.as
Como 1emos visto en cap5tulos anteriores, las instrucciones repetitivas son a/uellas /ue se repiten 1asta /ue se cumpla una determinada condici)n. 0nali$amos el ejemplo de <#ientras= y <%ara= es 1ora de saber c)mo representamos estas 2unciones en p1p.

En el caso de la sentencia O1ile, su sinta+is y 2uncionamiento en p1p es muy similar a lo ya estudiado en nuestro capitulo de introducci)n a la programaci)n. Es una sentencia /ue ejecuta un procedimiento mientras una condici)n + sea verdadera. %or ejemplo, si /uisi!ramos evaluar los nmeros del 9 al 9NN evaluando a/uellos /ue son divisibles entre tres, podr5amos ejecutar una sentencia /ue los recorra evalu,ndolos uno por uno.

Este programa imprimir5a en el navegador:

Y es un claro ejemplo de la sinta+is de O1ile, donde debemos delimitar el bucle agregando un l5mite para la repetici)n del ciclo y un mecanismo /ue permita /ue el programa eventualmente alcance dic1a condici)n, en este caso utili$amos un operador de autoincreme nto >i<< %1p adem,s cuenta con la estructura <para= representada por la palabra clave <2or= y cuya sinta+is es: %or&ini!iali:amos la variableD espe!i%i!amos el in!remento( estable!emos la !ondi!i0nD

Es probablemente una estructura mas c)moda cuando de trabajar con bucles de2inidos se trata, el mismo ejemplo anterior puede ser escrito utili$ando la estructura repetitiva 2or.

Esto tendr5a el mismo resultado obtendr5amos algo como esto:

en

el

navegador,

as5

pues

0un/ue claro, ninguno de estos programas es demasiado til, pues solo imprimen datos, no permiten al usuario ninguna clase de interacci)n con la aplicaci)n, es por eso /ue en el siguiente cap5tulo nos dedicaremos de lleno a la entrada y manipulaci)n de datos desde p1p.

Captulo III: 1a con el usuario

interaccin

0un/ue nuestros programas en este momento son 2uncionales y podr5amos generar un sitio completo escrito en p1p con solo la instrucci)n ec1o, nos 1ace 2alta muc1o para programar aplicaciones en p1p, uno de los elementos primordiales /ue 1emos omitido 1a sido la interacci)n con el usuario. %ara el manejo de 2ormulario, usualmente es necesario crear dos paginas, una con el 2ormulario y otra /ue procese la in2ormaci)n del mismo, claro /ue podr5amos 1acerlo en la misma p,gina, sin embargo por a1ora, trabajaremos con un arc1ivo /ue contenga el 2ormulario y uno /ue procese los datos, es por eso /ue vamos a crear dos nuevos arc1ivos. Uno llamado procesar.p1p y un .H-#. llamado 2ormulario.

01ora vamos a trabajar sobre nuestro arc1ivo .H-#., en el vamos a crear un campo de te+to y le a&adiremos un bot)n a nuestra inter2a$, esto lo 1aremos entre las eti/uetas:
<%orm> <2%orm>

E$%a$ indican 0 e e$%amo$ creando n n e+o 3orm !ario5 e! m7%odo de en+i2 de !a$ +ariab!e$ $er8 a %ra+7$ de! m7%odo #o$%5 e$%o #or0 e: Con 9ET !o$ da%o$ $on encadenado$ a! UR: e$#eci3icado en ac%ion5 %i!i/ando e! %i#o de codi3icaci2n e$#eci3icado en e! a%rib %o enc%1#e. E$%e m7%odo $e %i!i/a c ando !o$ da%o$ no modi3ican !a ba$e de da%o$5 #or e;em#!o5 a! rea!i/ar na b6$0 eda5 1 !o$ carac%ere$ a en+iar %ienen 0 e #er%enecer ob!iga%i+amen%e a! con; n%o A*CII.

Con e! m7%odo PO*T $e rea!i/a na %ran$acci2n median%e e! #ro%oco!o HTTP5 %i!i/ando !a codi3icaci2n enc%1#e. *e %i!i/a #ara a#!icacione$ 0 e modi3ican !a ba$e de da%o$ de de$%ino.

0s5 pues, el m!todo de envi) de la variable se reali$a de la siguiente 2orma:


<%orm met.od='post' a!tion='pro!esar.p.p'> <2%orm>

Con el atributo acci)n se especi2ica la pagina a la /ue se env5a la in2ormaci)n, claro /ue no voy a entrar en detalles con la sinta+is H-#. pues no es el objetivo de este curso. espu!s agregaremos una eti/ueta y una caja de te+to de la siguiente 2orma:
<%orm met.od='post' a!tion='pagina".p.p'> ngrese s+ nombre: <inp+t t4pe='teHt' name='nombre'> <br> <inp+t t4pe='s+bmit' val+e='!on%irmar'> <2%orm>

7>7 a los atributos de la caja de te+to "<nombre=( pues este atributo ser, el /ue recogeremos en nuestro arc1ivo .p1p, por su parte el bot)n <con2irmar= es el /ue ejecuta la acci)n <procesar.p1p= si ya 1as le5do -u'itioYa no tendras problemas con la sinta+is en H-#..

El resultado en el navegador de este documento es:

01ora vamos a la parte /ue nos interesa, vamos a procesar el contenido de la caja de te+to <nombre= %ara eso, en nuestro arc1ivo .p1p vamos a escribir la siguiente cadena:

Esto nos permitir, recoger el valor de la caja de te+to nombre y almacenarla en la variable Vnombre. %odemos agregarle algn te+to adicional para mejorar nuestra salida al usuario:

Esto generara algo mas o menos as5:

Una ve$ /ue 1acemos clic en con2irmarR

%odemos observar /ue nuestro programa 1a recibido datos del usuario y los 1a utili$ado, aun/ue claro no 1a 1ec1o gran cosa. Y de 1ec1o no podemos 1acer demasiado con solo nuestra <Caja de te+to= Es por eso /ue vamos a conocer otros elementos de un 2ormulario y como trabajar con ellos a 2in de delimitar las opciones /ue tiene el usuario y 1acer 2uncionar mejor nuestro programa.

Control 0adioBo2
Lamos a escribir un pe/ue&o 2ormulario en el /ue incluiremos dos <radio= /ue son valores /ue el usuario puede seleccionar, puede seleccionar solo uno de ellos. Y se le asigna el valor con el atributo <value= Esta ve$, aprovec1ando /ue podemos asignarle un valor est,tico al radio, vamos a crear una pe/ue&a calculadora.

7>7 /ue el <name= de los RadioBo+ es el mismo, esto por/ue el usuario solo podr, seleccionar uno de ellos. En el navegador nuestro 2ormulario se ver5a m,s o menos as5 "a menos claro /ue 1ayan incluido estilos para mejorarle la apariencia(:

Una ve$ creado el 2ormulario, vamos a escribir nuestro procesar.p1p donde incluiremos un sOitc1 para evaluar cada operaci)n.

0s5 pues, una ve$ /ue damos clic al bot)n <Enviar consulta= veremos algo como esto:

Claro /ue convendr5a o2recer algn linX para regresar a la p,gina anterior, pero en principio, 1emos creado una calculadora /ue puede sumar, restar multiplicar y dividir en %H% con la ayuda del control <radio=

Control C3ec4(o2
T%ero si necesit,ramos /ue el usuario pudiera seleccionar m,s de una opci)n de una lista prede2inidaU H-#. nos o2rece un elemento muy interesante /ue nos permitir5a en e2ecto o2recer al usuario la posibilidad de elegir m,s de una opci)n, su nombre es <c1ecXbo+= y su sinta+is para un programa cual/uiera seria:

Como vemos, solo 1emos reempla$ado el control <radio= por el control <c1ecXbo+= en el mismo programa "al /ue 1emos /uitado un par de operaciones a 2in de aclarar nicamente la 2unci)n del control(. 7>7 /ue esta ve$, cada c1ecXbo+ tiene un nombre distinto, a1ora, nuestro programa en %H% seria:

Usamos la 2unci)n isset"( /ue nos permite evaluar si una variable toma algn valor, de esta evaluaci)n imprimimos la suma y la resta de los dos valores, el resultado de estos dos documentos en el navegador seria:

En caso de solo seleccionar <suma= veremos

En caso de seleccionar sumar y restar veremos en el navegador /ue una ve$ /ue se 1a procesado la solicitud en %H% se 1a evaluado la suma y la resta. %or lo /ue imprimir,:

Control *elect
7tro elemento /ue nos permite interactuar con el usuario mostr,ndole una lista de valores prede2inidos es el control 'elect, /ue permite al usuario seleccionar una sola opci)n de una lista. Usualmente se utili$a cuando las opciones son muc1as "a di2erencia del radiobo+ /ue se utili$a para listas m,s reducidas(

01ora, podemos observar /ue se ingresan las opciones entre la eti/ueta <'elect= cada una de las opciones por su parte se indican utili$ando la eti/ueta <option=, modi2icando solo un poco nuestra primera calculadora, obtendremos algo asi en %H%:

Y el resultado en nuestro navegador ser5a algo m,s o menos as5:

Y nuestro resultado:

Con /ue 1emos creado una calculadora un poco m,s pro2esional, o al menos de apariencia m,s agradable para el usuario. Claro /ue nuestro objetivo va muc1o m,s all,. eseamos crear sitios din,micos y 1emos obviado uno de los controles m,s importantes. El ,rea de te+to.

Control $e2tArea

0 di2erencia de nuestro cl,sico te+tbo+, el control ,rea de te+to permite al usuario ingresar mltiples l5neas de te+to, aun/ue su sinta+is no es muy di2erente de la sinta+is de un te+tbo+.
<teHtarea name='nombre'><2teHtarea>

Y la captura de datos desde este control tampoco es muy di2erente. 'olo 1ace 2alta agregar un VYre/uestZ[nombre\] para obtener los datos de una caja de te+to. %or ser su 2uncionamiento id!ntico al de un te+tbo+. 6o voy a detallarlo.

Funcio nes
'i bien no las estudiamos en nuestro cap5tulo F, son sumamente importantes, y permiten crear programas muy complejos. En palabras sencillas son como algoritmos individuales /ue pueden ser llamados para la resoluci)n de un problema. Usualmente se declara una 2unci)n cuando ejecutaremos el mismo procedimiento en m,s de alguna ocasi)n, estas pueden contener par,metrosW es decir, valores /ue ser,n reempla$ados por otros al momento de ejecutarse la 2unci)n. En %H%, las 2unciones se declaran de la siguiente 2orma: %+n!tion nombre &parImetros( E instrucciones F %ara llamar a una 2unci)n basta con escribir su nombre y los par,metros /ue se le asignanW un ejemplo:

Como podemos observar, nicamente pasamos los par,metros a la 2unci)n para 1acerla 2uncionar valga la redundancia. Lale, pero eso 1a sido muy sencillo. #,s adelante le daremos un uso m,s pr,ctico a las 2unciones.

Interaccin con (ases de datos


0un/ue 1emos aprendido muc1o sobre programaci)n estructurada, %H% no es un lenguaje demasiado 2uncional si no interacta con una base de datos. Y es /ue acceder y almacenar datos, es vital para cual/uier aplicaci)n Qeb. .a base de datos mas empleada para su uso con aplicaciones escritas en p1p es #y'4., adem,s de ser 7pen 'ource, es completamente gratuitaW y viene por de2ecto en M0#%%. En este capitulo, vamos a desarrollar un pe/ue&o C#' "^estor de contenido( /ue nos permita, actuali$ar un sitio Qeb de 2orma din,mica. 0dem,s, vamos a integrar nuestro sistema en un sitio escrito 2undamentalmente en H-#.. 0 partir de este momento, dejaremos un poco de lado la teor5a y nos en2ocaremos en la pr,ctica. %or tanto, vamos a con2igurar nuestro nuevo espacio de trabajo

Preparando nuestro espacio de tra(a-o


Lamos a escribir en nuestro navegador: 1ttp:33local1ost3p1pmyad min3 Y veremos una pantalla como esta:

onde crearemos una nueva base de datos, en mi caso la nombre <tusitioya= a continuaci)n nos solicitara in2ormaci)n para crear una nueva tabla, en mi caso la llamare <art5culos= y constara de : campos.

id: Contendr, un identi2icador nico para cada articulo, ser, clave primaria y de tipo autoYincremento menu: 0/u5 almacenaremos el nombre /ue tendr, cada elemento de nuestro men relacionado con nuestro articulo titulo: 0/u5 almacenaremos el titulo del articulo en cuesti)n arto: 0/u5 almacenaremos el titulo en si -ambi!n, podemos crear la tabla 1aciendo una consulta '4. desde el gestor de p1pmyadmin
CJ)*T) T*GK) LbaseL.Larti!+losL & LidL NT NOT N-KK *-TOM NCJ)C)NT NJ C*JO P)O , Lmen+L T)QT NOT N-KK , Ltit+loL T)QT NOT N-KK , LartoL T)QT NOT N-KK ( )NR N) = CO S*C D

Una ve$ /ue creamos nuestra tabla, a1ora, como con cual/uier programa vamos a dise&ar un es/uema /ue nos permita identi2icar cada uno de los elementos /ue necesitaremos para ec1ar a andar nuestro programa. 9. F6 EM En nuestro Fnde+, vamos a presentar la in2ormaci)n /ue deseamos /ue nuestros usuarios lean, adem,s vamos a mostrar un men din,mico /ue nos permita modi2icar el contenido de la pagina con solo un clic y en el mismo documento.

%ara lograr esto, vamos a incluir tres arc1ivos dentro de nuestro inde+, uno /ue lea las opciones pasadas por el men y muestre el contenido del articulo, uno /ue muestre el titulo del articulo y el propio contenedor para el menu, de modo /ue en nuestro inde+, vamos a incluir:

Como vemos, estoy utili$ando el sitio /ue creamos en -u'itioYa como lien$o sobre el cual trabajar, de 1ec1o nicamente 1e tomando mi inde+.1tml y le 1e cambiado la e+tensi)n a inde+.p1p, mas adelante veremos como 1acer estos includes, por el momento nicamente estamos planteando los objetivos de este curso. I. %06E. E 0 #F6F'-R0CF76

Lamos a dise&ar un pe/ue&o panel de administraci)n donde poder agregar nuevo contenido, eliminar contenido viejo y adem,s editar el contenido ya e+istente.

Cone2in con la (ase de datos


Lale, primero lo primero, para poder interactuar con los datos de una base de datos, tenemos /ue conectarnos con la misma, TciertoU

Lamos a crear un nuevo arc1ivo al /ue llamaremos conect.p1p en este almacenaremos los datos para conectarnos con nuestra base. .a sinta+is para entablar una cone+i)n con la base de datos es:

.a 2unci)n mys/lYconnect nos permite reali$ar la cone+i)n con la base de datos, los par,metros de dic1a 2unci)n son "<1ost=,=usuario=,=contrase&a=( si la cone+i)n 2alla, entonces se ejecuta <die= es decir, imprimir, /ue e+iste un problema en la cone+i)n. %or otra parte, como /ui$,s 1abr,n adivinado, la 2unci)n mys/lYselectYdb nos permite seleccionar una tabla de la base de datos 1aciendo uso de un recurso de cone+i)n "en este caso la variable cone+i)n(. 01ora, si ejecutamos este programa, no imprimir, nada, pues no es un programa /ue podamos utili$ar sino uno /ue vamos a incluir en la ejecuci)n de otro. Es importante /ue se&alemos /ue para cual/uier operaci)n con la base de datos es necesario incluir este script.

Alta de registros en una ta(la


Esto se 1ace, llamando a la 2unci)n F6'ER- de #y'4. sin embargo, primero debemos de2inir T4u! es lo /ue vamos a insertar en nuestra tablaU Crearemos un nuevo arc1ivo llamado <insertar.p1p= y vamos a crear un pe/ue&o 2ormulario donde solicitaremos al usuario un nombre para el elemento del men, un titulo para el art5culo y contenido para el mismo.

Hasta el momento, nada nuevo, crear un 2ormulario es algo muy b,sico y lo 1emos practicado bastante en cap5tulos anteriores, as5 /ue no vamos a detallar los elementos del mismoW 01ora la parte /ue nos interesa, el programa /ue procese los datos del 2ormulario.

En principio, de2inimos un i2 "isset"((_ `, para asegurarnos /ue la variable /ue env5a el 2ormulario e+ista, si esta e+iste entonces incluimos nuestro arc1ivo <conect.p1p= /ue reali$a la cone+i)n a la base de datos y selecciona nuestra tabla. %ara despu!s proceder a reali$ar la consulta. .a 2unci)n para reali$ar una consulta en nuestra base de datos es: m4s5lM5+er4&?!ons+lta@,@re!+rso de !oneHi0n@( Una ve$ 1emos reali$ado la consulta, cerramos la cone+i)n con #y'4., utili$ando la 2unci)n Y la consulta /ue vamos a reali$ar es: NS)JT into ?tabla@&!ampo1,!ampo",!ampo3( S*K-)S &valor1, valor", valor3(

m4s5lM!lose&?re!+rso de !oneHion@( Ejecutado el programa con !+ito, concluiremos con un mensaje /ue muestre /ue la ejecuci)n 1a sido e+itosaW 01ora, /ue sucede si ejecutamos nuestro programa, pues veremos algo como esto en el navegador:

0un/ue estamos ingresando los datos de 2orma correcta en nuestra base de datos, 6o 1ay 2orma de /ue podamos verlos, por eso vamos a crear un documento /ue nos permita leer los datos /ue tenemos almacenados en nuestra base de datos. 01ora, 7>7R lo /ue necesitamos es un script /ue lea un determinado articulo, es decir /ue debemos pasarle una variable al script.

Pasar una .aria(le por 501


0lgo interesante en p1p, es /ue podemos pasar una variable aun determinado arc1ivo con solo enviarla a trav!s de la UR.. %ara 1acerlo, utili$amos la siguiente sinta+is <a .re%=@ar!.ivo.p.pAvariable=valor@>)nla!e<2a> %ara capturar esta variable en nuestro arc1ivo.p1p debemos utili$ar el m!todo >MR)TTUvariableVW e modo /ue para mostrar la variable <variable= vamos a utili$ar la siguiente sinta+is <Ap.p )!.o >MR)TTUvariableVWD A>

*eleccin de registros en una ta(la


Hec1a esta aclaraci)n, vamos a crear un arc1ivo al /ue llamaremos leer.p1p, y su contenido ser,:

Lamos por partes, en principio capturamos la variable op, esta variable la enviaremos a trave$ del menu, despu!s evaluamos si la variable Vopcion e+iste, si es as5 signi2ica /ue se 1e enviado una variable por la UR. y por tanto vamos a reali$ar una consulta a la base de datos para mostrar el contenido asignado al id de la variable. %ara eso, en primera instancia vamos a incluir nuestro arc1ivo conect.p1p, y despu!s 1aremos un /uery del tipo select cuya sinta+is es: S)K)CT !ampo 1JOC tabla XB)J) !ampo = valor 01ora, algo importante es /ue el reali$ar esta consulta 67 devuelve el valor del campo, nicamente almacena en la variable Vrespuesta una re2erencia a los datos almacenados en el campo seleccionado. %ara recuperar esos datos 1acemos uso de un O1ile y de la 2unci)n mys/lY2etc1Yarray"( esta 2uncion retorna un vector asociativo con los datos del registro rescatados. e modo /ue la variable Ve+iste se trans2orma en un vector /ue contiene los datos rescatados de la consulta. Entonces, mientras Ve+iste e+ista, el bucle O1ile nos devolver, el contenido de la clave Z[arto\] 'i acaso no se paso ninguna variable por la UR., el script devolver, el contenido de la pagina de inicio "el ultimo ec1o /ue esta cortado en la imagen(

01ora, Tcomo incluimos estos resultados en nuestro inde+.p1pU E+acto, es lo /ue estabais pensando, 1aremos un include en el area /ue destinemos para nuestro contenido, de esta 2orma:

'i corremos nuestro inde+.p1p en nuestro navegador veremos algo como esto:

0l no pasar ninguna variable a trav!s de la UR., nuestro script simplemente nos muestra la pagina /ue de2inimos por de2ecto, sin embargo si agregamos a nuestro inde+.p1pUop?9 aL7F.0H Leremos el contenido /ue ingresamos en nuestra base de datos, para el campo b 9

Lamos por buen camino, sin embargo, aun nos 1ace 2alta crear un menu para acceder a los elementos de nuestro contenido. Lamos a crear un arc1ivo menu.p1p y en el vamos escribir un script /ue liste los valores de la tabla para el campo menu con un 2ormato de 1iperv5nculo

El script es muy parecido al ejemplo anterior, con la nica di2erencia /ue estamos solicitando en nuestra consulta una re2erencia a -7 7' los datos del campo <menu= y -7 7' los datos del campo <id= e esa 2orma, construimos un 1ipervinculo din,mico /ue pase por UR. la variable correspondiente al id de nuestro articulo, para /ue leer.p1p pueda mostrar el contenido de dic1o articulo. Cuando incluimos este script en nuestro inde+.p1p:

En principio, vamos a introducir el primer elemento de la lista, /ue corresponde a nuestro inde+.p1p y despu!s 1acemos nuestro include del arc1ivo /ue reci!n creamos, de modo /ue en el navegador veremos algo como esto:

cnicamente, nos 1ace 2alta incluir los t5tulos de nuestro contenido, esto lo 1are con un arc1ivo llamado leertitulos.p1p, /ue sera muy parecido a nuestro leer.p1p

.o incluimos donde mas nos guste en nuestro inde+.p1p, aun/ue claro esto no 1ace 2alta /ue lo e+pli/ue. Hemos terminado con nuestro inde+.p1p, y por ende con nuestro F6 EM sin embargo nuestro panel de administraci)n aun esta muy incompleto y es /ue solo tenemos un 2ormulario para ingresar datos a nuestra base de datos. atos /ue eventualmente podr5amos necesitar editar o bien eliminar.

+ar de (a-a un registro en la ta(la


Una tarea /ue vamos a reali$ar muy a menudo, es eliminar un registro, pero claro para eliminar un registro, primero necesitamos enlistarlos, esto lo 1aremos e+actamente como en los ejemplos anteriores, crearemos un arc1ivo al /ue llamaremos listedit.p1p y vamos a incluir el siguiente script

Como siempre, vamos a incluir nuestro arc1ivo conect.p1p de modo /ue accedamos a nuestra base de datos. En este script se envia el parametro del a trave$ de la UR. dentro del O1ile, si este parametro es enviado entonces se ejecuta el /uery: Y)K)T) 1JOC tabla YONY) !ampo=valor 'i no se env5a este valor, nicamente seguimos ejecutando el script /ue enlista cada uno de los elementos de nuestra base de datos, sin embargo no 1ace 2alta /ue detalle esto pues 1emos 1ablado su2iciente de c)mo enlistar valores. .a nica di2erencia con los ejemplos anteriores es /ue los enlistamos a modo de tabla. Esto en el navegador, 'e ver5a m,s o menos as5:

0un/ue editar por supuesto aun no 2unciona pues no 1emos creado nuestra p,gina de edici)n.

Actuali6ar un registro en la (ase de datos


Lale, a1ora vamos a crear una p,gina donde podamos editar nuestros datos, vamos a llamarle editar.p1p y vamos a crear el siguiente 2ormulario:

%robablemente os preguntarais /ue es eso de <1idden= pues un campo oculto no es mas /ue un elemento de 2ormulario /ue no se puede editar, lo utili$aremos para almacenar el valor de la variable antes de ser modi2icada. Con respecto a VmostrarZ[campo\] si, es e+actamente lo /ue creen, parte de un p1p /ue aun no 1emos escrito, pero /ue llamara a dic1os valores desde una base de datos.

E2ectivamente, lo nico nuevo en este script es la consulta a #y'4. /ue no es mas /ue: -NY*T) tabla S)T !ampo=valorMn+evo XB)J) !ampo=valorMvieZo e igual 2orma, de2inimos si se ejecuta uno u otro segmento del script considerando las acciones del usuario, Leamos el script completo:

Y en el navegador, si 1acemos clicX en <editar= de nuesto listedit.p1p, veremos algo como esto:

e modo /ue de esta 2orma podemos editar los elementos de nuestra base de datos, pero vamos a ponerlo todo junto para crear un precario panel de administraci)n, pero /ue valga para esta gu5a introductoria. 01ora, este panel de administraci)n debe estar protegido pues no deseamos /ue cual/uier usuario de nuestro sitio tenga acceso a modi2icar nuestra in2ormaci)n.

Creando un sistema autenti7icacin

de

Estamos considerando /ue nuestro sitio nicamente ser, editado por una persona, por lo /ue 1aremos un sistema de autenti2icaci)n muy b,sico para nuestro panel de administraci)n. En primera instancia, vamos a mover todos los arc1ivos /ue pertenecen al panel de administraci)n a una carpeta del mismo nombre, en mi caso 1e creado un arc1ivo inde+I.p1p donde 1e incluido el contenido de los otros arc1ivos. "esto no 1ace 2alta e+plicarlo pues lo 1emos visto para nuestro inde+.p1p( en la misma carpeta, vamos a crear un nuevo documento de nombre inde+.p1p Lamos a crear un 2ormulario /ue solicite al usuario el username y la contrase&a para entrar al ,rea de administraci)n:

01ora, Lamos a introducir un cartelito /ue diga <Fntroduce tu clave= si no se 1a enviado ninguna, o bien <Clave e/uivocada= si el usuario 1a introducido una clave incorrecta.

Entonces, en el navegador no veremos mas /ue un 2ormulario, sin embargo dado /ue el arc1ivo login.p1p aun no e+iste, es un 2ormulario /ue no tiene ninguna utili$ad, por eso, vamos a crear un nuevo documento llamado login.p1p En esta pagina, mediante una cl,usula condicional evaluamos si los valores del campo corresponden a los del usuario del panel de administraci)n:

'i los datos corresponden, entonces creamos una sesi)n con la 2unci)n sessionYstart"(W tambi!n podr5amos usar una cooXie, pero una variable de sesi)n es mas segura /ue una cooXie pues se almacena en el servidor. espu!s, asignamos un valor a nuestra variable de sesi)n en VY'E''F76Z[valor asociativo\] y procedemos a redireccionar al usuario a nuestro inde+I.p1p si la contrase&a no es correcta, unidamente mandamos al usuario a la pagina inde+.p1p con un valor de retorno. 'i probamos este sistema, en teoria 2unciona sin embargo un usuario podria simplemente escribir en el navegador url3administraci)n3inde+I.p1p y tendria acceso a nuestro panel de administraci)n, entonces debemos restringir ese acceso. %ara eso vamos a crear un nuevo arc1ivo /ue incluiremos en todos los documentos /ue deseemos restringir, le llamaremos llave.p1p

En este script, evaluamos si el contenido de la variable VY'E''F76 es <si=, contenido /ue se le asigna tras comprobarse /ue el campo de username y pass corresponde con la clave y contrase&a, si el contenido de la variable VY'E''F76 es di2erente de <si= entonces

enviamos al usuario a la pagina de login.

01ora, solo 1ace 2alta incluir el arc1ivo llave.p1p en cada uno de los arc1ivos /ue deseamos restringir.

e modo /ue si intentamos acceder a los mismos por UR., nos enviara a la pagina de login. 01ora solo 1ace 2alta crear un documento /ue 2inalice la session del usuario, yo le llamare salir.p1p

Un linX a este arc1ivo permitir, al usuario terminar la session, aun/ue si no 1ace clicX la sesi)n terminara al cabo de un determinado tiempo de inactividad. Kinalmente 1emos creado un sitio interactivo, con contenido dinamico, /ue probablemente puede /uedar muc1o mejor, pero eso lo dejo a su creatividad, mi objetivo con este pe/ue&o curso es unicamente mostrar las nociones basicas para la creaci)n de un sitio Oeb dinamico con el uso de p1p y #y'4., mas adelante en 2uturos cursos aprenderemos un poco mas sobre >ava'cript y H-#..

8+onde ayuda9

pedir

'i no entiendes algo, o tienes problemas con este curso, puedes escribirnos en nuestro 2oro 1ttp:33revolutionteam.in2o donde con gusto el e/uipo de desarrolladores y administradores del sitio te ayudaremos con tus dudas, o /ue mejor. 'i tienes sugerencias o 1ay algo /ue podria ser mejor en este curso. 0visanos

Potrebbero piacerti anche