Guiaphp

También podría gustarte

Está en la página 1de 127

Desarrollo de Portales

-1-

Ing.Alberto Moreno C.

DESARROLLO DE PORTALES

GUIA DE PHP5

ELABORADO POR:
PROF. ING. ALBERTO MORENO C.

Desarrollo de Portales Capitulo1.

-2-

Ing.Alberto Moreno C.

Conceptos Bsicos Requerimientos Tipos de datos Variables operadores Script de un programa en PHP

Capitulo2. Instrucciones condicionales Instrucciones repetitivas Objetos Arreglos y Matrices Funciones

Capitulo 3. Funciones Fecha Funciones de Cadena Funciones Numricas

Capitulo 4. Mysql Creacin de BDD y Tablas Creaciones de Claves primarias y foraneas Conexin con la Base de Datos Lectura de Tabla Adicion de registros Eliminacin Actualizacion Clases en PHP

Capitulo 5. Apliacciones con BDD , consultas en cascadas Funciones para manipular archivos tipos binarios Administrador de archivos Envio de E-mail

Desarrollo de Portales Capitulo 6.

-3-

Ing.Alberto Moreno C.

Aplicaciones Graficas Funciones y Metodos graficos Aplicaciones y ejercicios

Capitulo 7. Desarrollo de paginas con Wizard Insercin , listados, etc.

Desarrollo de Portales Conceptos bsicos

-4-

Ing.Alberto Moreno C.

El lenguaje PHP es un lenguaje de programacin de estilo clsico, con esto quiero decir que es un lenguaje de programacin con variables, sentencias condicionales, bucles, funciones.... No es un lenguaje de marcas como podra ser HTML, XML o WML. Est mas cercano a JavaScript o a C, para aquellos que conocen estos lenguajes. Pero a diferencia de Java o JavaScript que se ejecutan en el navegador, PHP se ejecuta en el servidor, por eso nos permite acceder a los recursos que tenga el servidor como por ejemplo podra ser una base de datos. El programa PHP es ejecutado en el servidor y el resultado enviado al navegador. El resultado es normalmente una pgina HTML pero igualmente podra ser una pagina WML.

Al ser PHP un lenguaje que se ejecuta en el servidor no es necesario que su navegador lo soporte, es independiente del navegador, pero sin embargo para que sus pginas PHP funcionen, el servidor donde estn alojadas debe soportar PHP. INSTALACION DEL APPSERV O PHPDEV VERSION 5.1 Es totalmente gratuito la instalacion se puede descargar desde Internet, hay varias

direcciones para su descarga siendo la pagina principal : www.php.net Su intslacion puede realizarle sobre cualquier plataforma operativa tales como: windows 98 , windows Xp, windows 2000 server, 2003 y windows vista.

EL APPSERV o PHPDEV es un programa que instalara el servidor APACHE, PHP y MYSQL sin necesidad de configurar muchas cosas.

Desarrollo de Portales 3.- INSTALAR APPSERVER

-5-

Ing.Alberto Moreno C.

Abrimos el archivo appserver (hasta la fecha ,es la ultima versin)

Aqu se escoge la ruta donde se desea instalar. Luego se presiona el botn INSTALL Se recomienda que se deje por defecto la ruta a instalar INICIAR SERVIDOR APACHE - PHP Una vez terminada la instalacin veremos una carpeta llamada PHPDEV que

contendr otras sub carpetas como se ve en la figura de la izquierda

Ahora debemos de activar el servidor APACHE para eso nos vamos al menu INICIO Programas PHPDEV -

Desarrollo de Portales Debera salir las siguientes ventanas.

-6-

Ing.Alberto Moreno C.

Esto significa que el servidor apache esta corriendo Adems tambin sale la sgte. pagina

5.- DONDE ALOJAR MIS PAGINAS PHP

Para que el servidor apache pueda interpretar nuestras paginas PHP se deben de guardar dentro de la carpeta APPSERVER - WWW Ahora si queremos podramos crear carpetas dentro de esta ruta; por ejemplo creamos la carpeta MICARPETA dentro de APPSERVER WWW, para poder visualizar las paginas que estn ah entramos al navegador de Internet y ponemos http://localhost/micarpeta/pag.php y se mostrara la pagina PAG.PHP que se supone que esta dentro de MICARPETA

NOTA: Si alojamos por ejemplo la pagina PAG2.PHP en la ruta PHPDEV Para poder visualizar esta pagina debemos de escribir en el navegador web http://localhost//pag2.php

WWW

5.- MI PRIMERA PAGINA CON PHP

Desarrollo de Portales -7Ing.Alberto Moreno C. Para crear paginas PHP necesitamos un editor de paginas web (DreamWeaver , Front Page o simplemente el Block de Notas) en este caso utilizaremos Dreamweaver Para eso primero debemos crear un sitio web. Bueno ese punto se supone que ya lo sabemos as que lo nico importante que hay que rescatar de esto es en donde crear el sitio web Podr ser en cualquier sitio??? No PHPDEV WWW se acuerdan ??? . Eso debido a que las paginas deben de guardarse en

Ahora para poder ver las paginas directamente desde el dreamweaver sin necesidad de entrar al navegador web vamos a configurar un SERVIDOR DE PRUEBA En Modo de Servidor escogemos el tipo de programacin a usar. En acceso escogemos el tipo de acceso que tendremos en este caso LOCAL RED En carpeta de servidor se mostrara la carpeta que escogimos para nuestro sitio.

Desarrollo de Portales -8Ing.Alberto Moreno C. En PREFIJO DE URL debemos de poner la ruta que escribiremos en el navegador web para acceder a nuestro sitio. En este caso http://localhost sale por defecto debiendo aumentar el nombre de la carpeta (CLASE1). Al final quedara http://localhost/clase1 Una vez configurado nuestro sitio vamos a crear nuestra pagina PHP as que nos vamos al men Archivo Nuevo

Al crear una pagina lo mas probables es que trabajemos en la vista de Cdigo ya que vamos a programar en la pagina. La programacin PHP se mezcla con el HTML es decir dentro de la pagina podemos poner cualquier cosa en PHP. Para escribir cdigo PHP dentro de una pgina html, tenemos varias alternativas:

Incluir el cdigo entre <? y ?> Incluir el cdigo entre <?PHP y ?> Incluir el cdigo entre bloques <SCRIPT LANGUAGE="php"> y </SCRIPT>

En el ejemplo anterior lo que se ha programado en PHP es ECHO HOLA UCSS ; echo .- es una instruccin que permite escribir o visualizar algo en una pagina

Desarrollo de Portales

-9-

Ing.Alberto Moreno C.

NOTA IMPORTANTE .- Al final de cada instruccin va punto y coma. Adems las palabras reservadas son sensibles a maysculas y minsculas (Casi todas las palabras reservadas en PHP se escriben en minsculas)

L Nuestro primer PHP


La ventaja que tiene PHP sobre otros lenguajes de programacin que se ejecutan en el servidor (como podran ser los script CGI Perl), es que nos permite intercalar las sentencias PHP en las paginas HTML, es un concepto algo complicado de entender si no se ha visto nunca como funciona unas paginas PHP o ASP. Una vez que ya tenemos instalados PHP y MySQL, y el servidor Apache configurado para usarlos, podemos comenzar a escribir nuestro primer Script en PHP. Ejemplo script php <html> <body> <?php $myvar = "Hola Mundo. Este es mi primer script en PHP"; //Esto es un comentario echo $myvar; ?> </body> </html> Una vez escrito esto lo salvamos en un fichero con la extension php3, y lo colocamos en nuestro servidor, http://mi_servidor/php/test.php3. Ahora si ponemos esta URL en nuestro navegador veremos una linea con el texto "Hola Mundo. Este es mi primer script en PHP". Lo primero que apreciamos en el script son sus delimitadores. En la primera lnea del script vemos <?php que nos indica que comienza un script en PHP, y en la ltima colocamos ?> para indicar el final del script. Hay que destacar que todas las lneas que se encuentre entre estos delimitadores deben acabar en punto y coma, excepto las sentencias de control (if, swich, while, etc.). Como en toda programacin, es importante poner muchos comentarios, para lo cual si queremos comentar una sola lnea tenemos que poner al principio de la lnea //, si lo que queremos es comentar varias utilizaremos los delimitadores /* - */. Para que el servidor envie texto utilizaremos la instruccin echo, aunque tambin podemos utilizar printf de uso similar al del C oPerl. Finalmente, vemos que la palabra myvar comienza con el signo dlar ($) . Este smbolo le indica a PHP que es una variable. Nosotros le hemos asignado un texto a esta variable, pero tambin pueden contener nmeros o arrays. Es importante recordar que todas las variables comienza con el signo dlar.

Ejemplo 2.- Muesra diez lineas Parte de HTML normal. <BR><BR>

Desarrollo de Portales
<?php echo "Parte de PHP<br>"; for($i=0;$i<10;$i++) { echo "Linea ".$i."<br>"; } ?>

-10-

Ing.Alberto Moreno C.

</body> </html>

El cdigo PHP ejecutado tiene dos partes: la primera imprime "Parte de PHP" y la segunda es un bucle que se ejecuta 10 veces de 0 a 9, por cada vez que se ejecuta se escribe una lnea, la variable $i contiene el nmero de lnea que se est escribiendo. No importa si no entiende muy bien el programa este ejemplo solo es para ilustrar como se intercala el cdigo HTML y el cdigo PHP.

Variables
Una variable es un contenedor de informacin, en el que podemos meter nmeros enteros, nmeros decimales, carcteres... el contenido de las variables se puede leer y se puede cambiar durante la ejecucin de una pgina PHP. En PHP todas las variables comienzan con el smbolo del dlar $ y no es necesario definir una variable antes de usarla. Tampoco tienen tipos, es decir que una misma variable puede contener un nmero y luego puede contener carcteres.
<!-- Manual de PHP de Variables.php --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php $a = 1; $b = 3.34; $c = "Hola Mundo"; echo $a,"<br>",$b,"<br>",$c; ?> </body> </html>

En este ejemplo hemos definido tres variables, $a, $b y $c y con la instruccin echo hemos impreso el valor que contenan, insertando un salto de lnea entre ellas. Existen 2 tipos de variables, las variables locales que solo pueden ser usadas dentro de funciones y las variables globales que tienen su mbito de uso fuera de las funciones,

Desarrollo de Portales

-11-

Ing.Alberto Moreno C.

podemos acceder a una variable global desde una funcin con la instruccin global nombre_variable;
Operadores Aritmticos Los operadores de PHP son muy parecidos a los de C y JavaScript, si usted conoce estos lenguajes le resultaran familiares y fciles de reconocer. Estos son los operadores que se pueden aplicar a las variables y constantes numricas. Operador Nombre + * / % ++ -Suma Resta Multiplicacin Divisin Mdulo Suma 1 Resta 1 Ejemplo Descripcin 5+6 7-9 6*3 4/8 7%2 $a++ $a-Suma dos nmeros Resta dos nmeros Multiplica dos nmeros Divide dos nmeros Devuelve el resto Incremento Decremento

<!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php $a = 8; $b = 3; echo $a + $b,"<br>"; echo $a - $b,"<br>"; echo $a * $b,"<br>"; echo $a / $b,"<br>"; $a++; echo $a,"<br>"; $b--; echo $b,"<br>"; ?> </body> </html> resultado 11 5 24 2.6666666666667 9 2

Comparacin Los operadores de comparacin son usados para comparar valores y as poder tomar decisiones.

Desarrollo de Portales
Operador Nombre == != < > <= >= Igual Distinto Menor que Mayor que

-12-

Ing.Alberto Moreno C.

Ejemplo Devuelve cierto cuando: $a == $b $a es igual $b $a != $b $a es distinto $b $a < $b $a > $b $a es menor que $b $a es mayor que $b

Menor o igual $a <= $b $a es menor o igual que $b Mayor o igual $a >= $b $a es mayor o igual que $b

<!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php $a = 8; $b = 3; $c = 3; echo $a == $b,"<br>"; echo $a != $b,"<br>"; echo $a < $b,"<br>"; echo $a > $b,"<br>"; echo $a >= $c,"<br>"; echo $b <= $c,"<br>"; ?> </body> </html>

Operadores Lgicos

Los operadores lgicos son usados para evaluar varias comparaciones, combinando los posibles valores de estas. Operador Nombre Ejemplo && and || or ! Y Y O O No (7>2) && (2<4) (7>2) and (2<4) (7>2) || (2<4) (7>2) or (2<4) ! (7>2) Devuelve cierto cuando: Devuelve verdadero cuando ambas condiciones son verdaderas. Devuelve verdadero cuando ambas condiciones son verdaderas. Devuelve verdadero cuando al menos una de las dos es verdadera. Devuelve verdadero cuando al menos una de las dos es verdadera. Niega el valor de la expresin.

Desarrollo de Portales
<head> <title>Ejemplo de PHP</title> </head> <body> <?php $a = 8; $b = 3; $c = 3; echo ($a == $b) && ($c > $b),"<br>"; echo ($a == $b) || ($b == $c),"<br>"; echo !($b <= $c),"<br>"; ?> </body> </html>

-13-

Ing.Alberto Moreno C.

<!-- Manual de PHP de WebMoreno.com --> <html>

Condicionales
Las sentencias condicionales nos permiten ejecutar o no unas ciertas instrucciones dependiendo del resultado de evaluar una condicin. Las ms frecuentes son la instruccin if y la instruccin switch. Sentencia if ... else <?php if (condicin) { Sentencias a ejecutar cuando la condicin es cierta. } else { Sentecias a ejecutar cuando la condicin es falsa. } ?> La sentencia if ejecuta una serie de instrucciones u otras dependiendo de la condicin que le pongamos. Probablemente sea la instruccin ms importante en cualquier lenguaje de programacin. <!-- Manual de PHP --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php $a = 8; $b = 3; if ($a < $b) { echo "a es menor que b";

Desarrollo de Portales
} else { echo "a no es menor que b"; } ?> </body> </html>

-14-

Ing.Alberto Moreno C.

En este ejemplo la condicin no es verdadera por lo que se ejecuta la parte de cdigo correspondiente al else. Sentencia switch ... case <!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php $posicion = "arriba"; switch($posicion) { case "arriba": // Bloque 1 echo "La variable contiene"; echo " el valor arriba"; break; case "abajo": // Bloque 2 echo "La variable contiene"; echo " el valor abajo"; break; default: // Bloque 3 echo "La variable contiene otro valor"; echo " distinto de arriba y abajo"; } ?> </body> </html>

Con la sentencia switch podemos ejecutar unas u otras instrucciones dependiendo del valor de una variable, en el ejemplo anterior, dependiendo del valor de la variable $posicion se ejecuta el bloque 1 cuando el valor es "arriba", el bloque 2 cuando el valor es "abajo" y el bloque 3 si no es ninguno de los valores anteriores.

Variables estaticas y globales <?

Desarrollo de Portales

-15-

Ing.Alberto Moreno C.

function cambia() { global $cad; // observe que el valor sera cambiado $cad="estamos ahora en la funcion"; } function cuenta() { static $a=0; $b=0; $a++; $b++; echo "<br> valor de a=$a ..b=$b"; } echo "valores <br>"; cuenta(); cuenta(); cuenta(); $cad="estamos en la pag. principal <br>"; echo $cad; cambia(); echo $cad; $n=45.566; //a diferencia de echo printf da un valor con formato printf("<br><br>valor de n=%5.2f",$n); ?>
La salida sera:

Colocar estilos en una pagina, o tambien puede efectuarse en una pagina aparte de hoja de estilos, esto nos van a permitir colocar atributos a diferentes etquitas en HTML Ejemplo: Generar valores aleatorios entre 100-2000, si el valor generado es menos de 800 colocar fondo Rojo con letras blancas Si es esta entre 800 y menor de 1000 fondo gris y letras negras Si esta entre 1000 y 2000 fondo verde y letras negras

Desarrollo de Portales -16Ing.Alberto Moreno C. <title>Tabla con datos aleatorios </title> </head> <style type="text/css"> .estilo1 { background-color:#00FF00; color:#000000} //fondo verde color de car rojo .estilo2 {background-color:#CCCCCC; color:#000000}//fondo plomo letras negras .estilo3 {background-color:#FF0000; color:#FFFFFF} // Fondo Rojo Letras Blancas </style> <body bgcolor="#FFFFCC"> <center> <form action="" > <input type=submit value=Generar> </form> <table border=1> <tr class="estilo2"><td> <p>Mes</p> <td>Ingresos<td>Observacion</tr> <? for($m=1;$m<=12;$m++) { $mon=rand(100,2000); if($mon<800) //$obs="<span class=estilo1>Critico</span>"; { $obs="critico"; echo "<tr class=estilo3>"; } elseif($mon<1000) //$obs="<span class=estilo2>Baja</span>"; { $obs="Regular"; echo "<tr class=estilo2>"; } else //$obs="<span class=estilo1>regular</span>"; { $obs ="bueno"; echo "<tr class=estilo1>"; } echo "<td>$m<td>$mon<td>$obs"; }

?> </body> </html>

Desarrollo de Portales

-17-

Ing.Alberto Moreno C.

Ejemplo Hoja de estilos , ingresando un valor que muestre la tabla de multiplicar de dicho valor , pero mostrando las filas pares con un fondo plomo y las filas pares con un color verde : Codigo multiplica.php <title>Multiplica</title> </head> <style type="text/css"> .estilo3 {background-color:#3333FF; color:#FFFFFF; font:"Arial Black"} .estilo1 {background-color:#00FF00; color: #000000} .estilo2 { background-color:#CCCCCC; color:#000000; font-style:italic} </style> <body> <blockquote> <blockquote> <form name="form1" method="post" action="multiplica.php"> <table width="200" border="2"> <tr> <td>Valor</td> <td><input name="txtn" type="text" id="txtn"></td> </tr> <tr> <td>&nbsp;</td> <td><input type="submit" name="Submit" value="Enviar"></td> </tr> </table> </form> <table width="200" border="2"> <tr bgcolor="#CCCCCC"> <td><strong>Expresion</strong></td> <td><strong>producto</strong></td> </tr> <? if($_POST) { $n=$_POST['txtn']; echo "<tr><td colspan=2 class=estilo3>tabla del $n"; for($a=1;$a<=12;$a++) { $p=$n*$a; if($a%2==0) echo "<tr class=estilo1><td>$a x $n=<td>$p\n"; else echo "<tr class=estilo2><td>$a x $n=<td>$p\n";
} } ?>

Desarrollo de Portales </table> <p>&nbsp;</p> </blockquote> </blockquote> </body> </html>

-18-

Ing.Alberto Moreno C.

Programa `para obtener la hora del sistema, y que muestre un saludo de acuerdo a la hora en que nos encontramos: <? echo "hoy es :" . date("d/m/Y"); $t=date("H:i:s"); echo "<br>hora :$t <br>"; if( $t<"12:00:00" ) echo "buenos dias"; elseif ($t<"18:00:00") echo "buenas tardes"; else echo "buenas noches"; echo "<br>version ..". PHP_VERSION; echo "<br> otra ruta ".__FILE__; echo "<br> nombre del fichero ".$PHP_SELF;

Desarrollo de Portales

-19-

Ing.Alberto Moreno C.

?> La salida ser:

VARIABLES DE SISTEMA
Dada su naturaleza de lenguaje de lado servidor, PHP es capaz de darnos acceso a toda una serie de variables que nos informan sobre nuestro servidor y sobre el cliente. La informacin de estas variables es atribuida por el servidor y en ningn caso nos es posible modificar sus valores directamente mediante el script. $_ENV -- Contiene las variables del sistema. $_GET -- Contiene las variables en el "query string" incluyendo los formularios GET. $_POST -- Contiene las variables enviadas des de un formulario POST. $_COOKIE -- Contiene todas las variables de las Cookies. $_SERVER -- Contiene todas las variables de servidor, tales como HTTP_USER_AGENT.etc. $_REQUEST -- Contiene todo dentro de $_GET, $_POST y $_COOKIE. $_SESSION -- Contiene todas las variables de sesiones registradas.

$_SERVER Existen multitud de variables de este tipo, algunas sin utilidad aparente y otras realmente interesantes y con una aplicacin directa para nuestro sitio web. Aqu algunas de las propiedades de estas variables Variable Descripcin Nos informa principalmente sobre el sistema operativo y tipo HTTP_USER_AGENT y versin de navegador utilizado por el internauta. Su principal utilidad radica en que, a partir de esta informacin, podemos redireccionar nuestros usuarios hacia pginas

Desarrollo de Portales

-20-

Ing.Alberto Moreno C.

optimizadas para su navegador o realizar cualquier otro tipo de accin en el contexto de un navegador determinado. Nos devuelve la o las abreviaciones de la lengua considerada como principal por el navegador. Esta lengua o HTTP_ACCEPT_LANGUAGE lenguas principales pueden ser elegidas en el men de opciones del navegador. Esta variable resulta tambin extremadamente til para enviar al internauta a las pginas escritas en su lengua, si es que existen. Nos indica la URL desde la cual el internauta ha tenido HTTP_REFERER acceso a la pgina. Muy interesante para generar botones de "Atrs" dinmicos o para crear nuestros propios sistemas de estadsticas de visitas. Nos devuelve una cadena con la URL del script que est PHP_SELF siendo ejecutado. Muy interesante para crear botones para recargar la pgina. Almacena la variable usuario cuando se efecta la entrada a PHP_AUTH_USER pginas de acceso restringido. Combinado con $PHP_AUTH_PW resulta ideal para controlar el acceso a las pginas internas del sitio. Almacena la variable password cuando se efecta la entrada PHP_AUTH_PW a pginas de acceso restringido. Combinado con $PHP_AUTH_USER resulta ideal para controlar el acceso a las pginas internas del sitio. REMOTE_ADDR DOCUMENT_ROOT Muestra la direccin IP del visitante. Nos devuelve el path fsico en el que se encuentra alojada la pgina en el servidor. Guarda el identificador de sesin del usuario. Veremos ms adelante en qu consisten las sesiones.

PHPSESSID

Ejemplo: <body> <?php echo "<b>Navegador web : ".$_SERVER['HTTP_USER_AGENT']."<br>"; echo "<b>IP del Vistante : ".$_SERVER['REMOTE_ADDR']."<br>"; echo "<b>Nombre del Servidor : ".$_SERVER['SERVER_NAME']."<br>";

Desarrollo de Portales ?> </body> Resultado:

-21-

Ing.Alberto Moreno C.

Ejemplo con formularios: Pasando valores a otros formularios (Los datos pueden ser enviados por el metodo POST o GET) Formulario.html <!-- formulario.html --> <HTML> <HEAD> <TITLE>Formulario de Recepcin de Pedidos</TITLE> </HEAD> <BODY> <H1 ALIGN="CENTER">Recepcin de Pedidos</H1> <FORM ACTION="procesar1.php"> Nombre Usuario: <INPUT TYPE="text" NAME="NombreUsuario" SIZE="20"><BR> Listado de libros disponibles: <UL> <LI>Libro A - (Precio = 10) - Unidades: <INPUT TYPE="text" NAME="UnidadesA" SIZE="2"> </LI> <LI>Libro B - (Precio = 12) - Unidades: <INPUT TYPE="text" NAME="UnidadesB" SIZE="2"> </LI> </UL> <P ALIGN="CENTER"><INPUT TYPE="submit" VALUE="Enviar"></P> </FORM> </BODY> </HTML>

Desarrollo de Portales

-22-

Ing.Alberto Moreno C.

Valores recibos por Procesar1.php <!-- Cap01/procesar1.php --> <HTML> <HEAD> <TITLE>Datos Introducidos</TITLE> </HEAD> <BODY> <H1 ALIGN="CENTER">Datos Introducidos</H1> <?php $uniA=$_POST[ UnidadesA ]; $uniB=$_POST[ UnidadesB ]; $nom=$_POST[ NombreUsuario ]; echo "Nombre = <B> $nom</B> <BR>"; echo "Nmero Unidades Libro A = <B> $UniA </B><BR>"; echo "Nmero Unidades Libro B = <B> $UniB </B><BR>"; ?> </BODY> </HTML>

Desarrollo de Portales

-23-

Ing.Alberto Moreno C.

Primera Practica continua PHP


Objetivo.- Con estos primeros ejercicios , le va ayudar a familiarizarse con este lenguaje , desde ya cree su sitio para colgar sus pginas, para la respectiva presentacin en www.tripod.com 1.- Ingresar como datos , la dimensiones del terreno( largo y ancho) y el precio por metro cuadrado , y un check box (da Cuota inicial) en una pgina htm , luego mostrar los datos calculados como : El rea del Terreno, El Precio Total , Cuota inicial y el Pago Mensual. Condicin.- El pago es en dos aos si se da una cuota inicial(15% del precio del terreno se har un descuento del 3% del precio)

2.-Realizar una proforma de venta de una computadora ensamblada

Precios: Monitor 15 $ 60 , 17 $80 Procesador : 2200 Mhz $120 , 1800 $105 , 1200 $80 ,800 $70 Memoria : 128 $60 , 256$80 , 512 $100

3.- Empleando Bucles y tablas mostrar la tabla de multiplicar:

Desarrollo de Portales

-24-

Ing.Alberto Moreno C.

4.- Dos atletas parten de dos puntos diferentes A y B separados una distancia D , con velocidades diferentes ( la velocidad del atleta A tiene que ser mayor al de B) , se pide mostrar una tabla de tiempo y distancias recorridas por el atleta A y B cada 3 segundos , como tambin en que tiempo alcanza el atleta A al B Distancia Recorridas Velocidad A m/seg Velocidad B m/seg Distancia de separacin Enviar Tiempo Distancia x A Distanciax B

<<Retornar

4.-El gobierno tiene un plan para vivienda de los docentes , bajo las siguientes condiciones : Si los ingresos del comprador son menores a $500 , dar como cuota inicial del 2% del costo de la casa y el resto lo distribuir en pago mensuales, a pagar en diez aos; Si los ingresos del comprador es mayor a $500 la cuota inicial ser del 5% y el resto se pagara en pago mensuales de siete aos Se pide mostrar la cuota inicial y el pago mensual del comprador, el dato de ingreso es el costo de la casa y el ingreso del trabajador.

Desarrollo de Portales

-25-

Ing.Alberto Moreno C.

5.- Inabec ofrece prestamos a todos los docentes para comprar computadoras, o seguir estudios de especializacin , teniendo como datos de entrada :

Consideraciones: Los intereses de acuerdo a los meses son para 6 m -> 20% , 12m -> 35% y 18m -> 50% Las cuotas mensuales son constantes El saldo disminuye cada mes hasta cero

6.- Elabore una Pagina de que permita establecer los enlaces con otras paginas. Validar estos datos en una pagina PHP
Colocar las contraseas en una arreglo , si existe mostrara el men que une todas las paginas.

Uso de Constantes : Por ejemplo para obtener la versin del PHP la ruta donde esta instalado <!-- Cap03/constantes.php --> <HTML> <HEAD><TITLE>Constantes de PHP</TITLE></HEAD> <BODY> <?php echo "Ejecuto la versin de PHP: ",PHP_VERSION,"<BR>\n"; echo "El sistema operativo es: ",PHP_OS,"<BR>\n"; echo "Estoy en el fichero <B>",__FILE__," lnea ",__LINE__,"</B>"; ?> </BODY> </HTML>

Desarrollo de Portales

-26-

Ing.Alberto Moreno C.

Bucles
Los bucles nos permiten iterar conjuntos de instrucciones, es decir repetir la ejecucin de un conjunto de instrucciones mientras se cumpla una condicin. Sentencia while <?php while (condicin) { intrucciones a ejecutar. } ?> Mientras la condicin sea cierta se reiterar la ejecucin de las instrucciones que estn dentro del while. <!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> Inicio<BR> <?php $i=0; while ($i<10) { echo "El valor de i es ", $i,"<br>"; $i++; } ?> Final<BR> </body> </html>

En el siguiente ejemplo, el valor de $i al comienzo es 0, durante la ejecucin del bucle, se va sumando 1 al valor de $i de manera que cuando $i vale 10 ya no se cumple la condicin y se termina la ejecucin del bucle.

Sentencia for <?php for (inicial ; condicin ; ejecutar en iteracin)

Desarrollo de Portales
{ intrucciones a ejecutar. } ?>

-27-

Ing.Alberto Moreno C.

<!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> Inicio<BR> <?php for($i=0 ; $i<10 ; $i++) { echo "El valor de i es ", $i,"<br>"; } ?> Final<BR> </body> </html> Resultado Inicio El valor de i es El valor de i es El valor de i es El valor de i es El valor de i es El valor de i es El valor de i es El valor de i es El valor de i es El valor de i es Final

0 1 2 3 4 5 6 7 8 9

La instruccin for es la instruccin de bucles ms completa. En una sola instruccin nos permite controlar todo el funcionamiento del bucle. El primer parmetro del for, es ejecutado la primera vez y sirve para inicializar la variable del bucle, el segundo parmetro indica la condicin que se debe cumplir para que el bucle siga ejecutndose y el tercer parmetro es una instruccin que se ejecuta al final de cada iteracin y sirve para modificar el valor de la variable de iteracin.

Salida Hasta ahora hemos usado la instruccin echo para realizar salida a pantalla, esta instruccin es bastante limitada ya que no nos permite formatear la salida. En esta pgina veremos la instruccin printf que nos da mucha ms potencia. Sentencia printf <?php printf(cadena formato, variable1, variable2...); ?>

Desarrollo de Portales

-28-

Ing.Alberto Moreno C.

La cadena de formateo indica cmo se han de representar las valores que posteriormente le indicaremos. La principal ventaja es que adems de poder formatear los valores de salida, nos permite intercalar texto entre ellos. <!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php printf("El numero dos con diferentes formatos: %d %f %.2f",2,2,2);
?> </body> </html>

La cadena de formato puede incluir una seria de carcteres especiales que indican como formatear las variables que se incluyen en la instruccin.
Elemento %s %d %f %c Tipo de variable Cadena de carcteres. Nmero sin decimales. Nmero con decimales. Carcter ASCII.

Aunque existen otros tipos, estos son los ms importantes.

<!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php $var="texto"; $num=3; printf("Puede fcimente intercalar <b>%s</b> con nmeros <b>%d</b> <br>",$var,$num); printf("<TABLE BORDER=1 CELLPADDING=20>"); for ($i=0;$i<10;$i++) { printf("<tr><td>%10.d</td></tr>",$i); } printf("</table>"); ?> </body> </html>

Manejo de cadenas

Desarrollo de Portales

-29-

Ing.Alberto Moreno C.

Dado el uso del lenguaje PHP el tratamiento de cadenas es muy importante, existen bastantes funciones para el manejo de cadenas, a continuacin explicaremos las ms usadas. 1. strlen(cadena). Nos devuelve el nmero de carcteres de una cadena. 2. split(separador,cadena). Divide una cadena en varias usando un carcter separador. 3. sprintf(cadena de formato, var1, var2...). Formatea una cadena de texto al igual que printf pero el resultado es devuelto como una cadena.
4. substr(cadena, inicio, longitud). Devuelve una subcadena de otra, empezando por inicio y de longitud longitud. 5. chop(cadena). Elimina los saltos de lnea y los espacios finales de una cadena. 6. strpos(cadena1, cadena2). Busca la cadena2 dentro de cadena1 indicndonos la posicin en la que se encuentra. 7. str_replace(cadena1, cadena2, texto). Reemplaza la cadena1 por la cadena2 en el texto.

<!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php echo strlen("12345"),"<br>"; $palabras=split(" ","Esto es una prueba"); for($i=0;$palabras[$i];$i++) echo $palabras[$i],"<br>"; $resultado=sprintf("8x5 = %d <br>",8*5); echo $resultado,"<br>"; echo substr("Devuelve una subcadena de otra",9,3),"<br><br>"; if (chop("Cadena \n\n ") == "Cadena") echo "Iguales<br><br>"; echo strpos("Busca la palabra dentro de la frase", "palabra"),"<br><br>"; echo str_replace("verde","rojo","Un pez de color verde, como verde es la hierba."),"<br>"; ?> </body> </html>

Resultado 5 Esto es una prueba 8x5 = 40

Desarrollo de Portales

-30-

Ing.Alberto Moreno C.

Un pez de color rojo, como rojo es la hierba.

Envio de archivos al servidor


Ejem. Para pasar las caractersticas de un archivo seleccionado de una caja de dialogo: <!-- Envio.html --> <HTML> <HEAD><TITLE>Carga de ficheros</TITLE></HEAD> <BODY> <FORM NAME="miformulario" ENCTYPE="multipart/form-data" ACTION="Envio.php" METHOD="POST"> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="102400"> <INPUT TYPE="file" NAME="mifichero"> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </BODY> </HTML>

Salida

<!-- Envio.php --> <?php echo "Tipo: <B>", $HTTP_POST_FILES['mifichero']['type'], "</B>"; echo "<BR>\n"; echo "Nombre: <B>", $HTTP_POST_FILES['mifichero']['name'], "</B>"; echo "<BR>\n"; echo "Tamao: <B>", $HTTP_POST_FILES['mifichero']['size'], "</B>"; echo "<BR>\n"; echo "Almacenado temporalmente en: <B>"; echo $HTTP_POST_FILES['mifichero']['tmp_name'], "</B>\n"; ?>

Ejemplo.- Para ver el nombre del fichero,del servidor y el Servidor Web instalado

Desarrollo de Portales

-31-

Ing.Alberto Moreno C.

<!-- Cap03/varPHP2.php --> <HTML> <HEAD><TITLE>Variables de Servidor</TITLE></HEAD> <BODY> <?php echo "Nombre del script: <B>$PHP_SELF</B><BR>\n"; echo "Nombre del servidor: <B>$SERVER_NAME</B><BR>\n"; echo "Software: <B>$SERVER_SOFTWARE</B><BR>\n"; ?> </BODY> </HTML>

Objetos PHP permite la construccin de objetos con atributos y mtodos propios , con herencia y redefinicin de funciones. Por ejemplo creamos una clase llamada persona , que determina todas las caractersticas de los objetos que van a pertenecer a dicha clase . Para ello en la definicin de la clase se detallan tanto loa atributos(variables de la clase que tomaran un determinado valor en cada objeto de dicha clase. Como los mtodos (mediante una funcin para cada mtodo ) la palabra reservada para la definicin es class. <!-- /object1.php --> <HTML> <HEAD><TITLE>Objetos en PhP</TITLE></HEAD> <BODY> <?php class Persona { var $Nombre = ""; var $DineroAhorrado = 0; function DaNombre($varnombre) { $this->Nombre = $varnombre; } function Ahorra($Cantidad) { $this->DineroAhorrado += $Cantidad; echo $this->Nombre, " tiene ahorrado ", $this->DineroAhorrado, "<BR>\n"; } function Gasta($Cantidad) { if ($this->DineroAhorrado >= $Cantidad) { $this->DineroAhorrado -= $Cantidad; echo $this->Nombre, " tiene ahorrado ", $this->DineroAhorrado, "<BR>\n"; }

Desarrollo de Portales -32Ing.Alberto Moreno C. else echo "$this->Nombre no se puede gastar esa cantidad<BR>"; } // de la funcin Gasta } // de la clase $UnaPersona = new Persona; $UnaPersona->DaNombre("Santiago"); $UnaPersona->Ahorra(1000); $UnaPersona->Gasta(250); $UnaPersona->Ahorra(100); $UnaPersona->Gasta(1000); ?> </BODY> </HTML>

Otras caractersticas importantes son la herencia y la posibilidad de tener valores de parmetros por defecto. Ejemplo 11. <!-- /object2.php --> <HTML> <HEAD><TITLE>Objetos en PHP</TITLE></HEAD> <BODY> <?php class Persona { var $Nombre = ""; var $DineroAhorrado = 0; function Persona($varnombre) { $this->Nombre = $varnombre; } function Ahorra($Cantidad) { $this->DineroAhorrado += $Cantidad; echo $this->Nombre, " tiene ahorrado ", $this->DineroAhorrado, "<BR>\n"; } function Gasta($Cantidad)

Desarrollo de Portales

-33-

Ing.Alberto Moreno C.

{ if ($this->DineroAhorrado >= $Cantidad) { $this->DineroAhorrado -= $Cantidad; echo $this->Nombre, " tiene ahorrado ", $this->DineroAhorrado, "<BR>\n"; } else echo $this->Nombre, " no puede gastar esa cantidad<BR>\n"; } // de la funcin Gasta() } // de la clase Persona class Trabajador extends Persona { var $Sueldo=0; function Trabajador($varnom,$Paga=10000) { $this->Nombre = $varnom; $this->Sueldo = $Paga; $this->Ahorra(); } function Ahorra() { echo "Un trabajador ahorra todo su sueldo: "; $this->DineroAhorrado += $this->Sueldo; echo $this->Nombre, " tiene ahorrado ", $this->DineroAhorrado, "<BR>\n"; } // de la funcin Ahorra() } // de la subclase Trabajador $UnaPersona = new Persona("Santiago"); $UnaPersona->Ahorra(1000); $UnaPersona->Gasta(250); $UnTrabajador = new Trabajador("Fernando",5000); $OtroTrabajador = new Trabajador("Pepe"); $UnTrabajador->Gasta(1000); ?> </BODY> </HTML> salida:

Desarrollo de Portales

-34-

Ing.Alberto Moreno C.

Arreglos o Matrices Una matriz es una serie de varibles agrupados con un nombre comn , cada uno se diferencia del otro mediante su indice: Ejem: $matriz[1]= Ana ; $matriz[2]= Jose Cada elemento es accesado por su indice <!-- /matriz1.php --> <HTML> <HEAD><TITLE>Matrices en PHP</TITLE></HEAD> <BODY> <?php $MiArray[0] = 'Hola'; $MiArray[1] = 25; echo "Posicin cero: $MiArray[0] <BR>"; echo "Posicin uno: $MiArray[1] <BR>"; ?> </BODY> </HTML>

ejemplo 8.- Calculo de la media de una matriz:

<!--media.php --> <HTML>

Desarrollo de Portales -35Ing.Alberto Moreno C. <HEAD> <TITLE>Clculo de la media</TITLE> </HEAD> <BODY> <CENTER> <H1>Clculo de la media</H1> <HR> <?php function listar($matriz) { echo "<TABLE BORDER=3>\n"; for ($i = 0; $i < count($matriz); $i++) { echo "<TR>\n"; echo "<TD>Elemento $i</TD>\n"; echo "<TD>$matriz[$i]</TD>\n"; echo "</TR>\n"; } echo "</TABLE>\n"; } function media () { $limite = func_num_args(); $acumulado = 0; echo "<TABLE WIDTH=175>\n"; echo "<CAPTION ALIGN=TOP>Numero de argumentos: $limite </CAPTION>\n"; for ($i = 0; $i < $limite; $i++) { echo "<TR>\n"; echo "<TD ALIGN=CENTER>Parmetro $i</TD>\n"; echo "<TD align=center>", func_get_arg($i), "</TD>\n"; echo "</TR>\n"; $acumulado += func_get_arg($i); } echo "</TABLE>\n"; listar(func_get_args()); return $acumulado/$limite; } $valor_media = media(12, 13, 15); echo "<H2>Valor de la media: ", $valor_media, " </H2>\n"; ?> </CENTER> </BODY> </HTML> Nota.func_get_arg

Desarrollo de Portales (PHP 4 )

-36-

Ing.Alberto Moreno C.

func_get_arg -- Devuelve un elemento de la lista de argumentos.

Int func_get_arg ( int arg_num)

Devuelve el argumento que est en la posicin arg_num en la lista de argumentos de una funcin definida por el usuario. Los argumentos de la funcin se cuentan comenzando por la posicin cero. func_get_arg() generar un aviso si se llama desde fuera de la definicin de la funcin.

Uso del foreach Para leer un conjunto de datos de forma secuencial hasta detectar el final. <!-- Cap03/foreach1.php --> <HTML> <HEAD><TITLE>Bucles</TITLE></HEAD> <BODY> <CENTER> <H3>Lista de autores</H3> </CENTER> <?php $Nombres[0]='Abraham'; $Nombres[1]='Agustn'; $Nombres[2]='Javier'; echo "<B>Bucle clsico</B><Br>\n"; for ($i = 0; $i < 3; $i++) { echo "Un autor de este libro se llama:<B> $Nombres[$i]</B>"; echo "<BR>\n"; } echo "<B>Bucle foreach</B><BR>\n"; foreach ($Nombres as $autor) echo "Un autor de este libro se llama:<B> $autor</B><BR>\n"; ?> </BODY> </HTML>

Desarrollo de Portales

-37-

Ing.Alberto Moreno C.

ejemplo 10.. Cuando cada elemento de un arreglo tiene asociado otro elemento o indice llamdo clave:

<!-- Cap03/foreach2.php --> <HTML> <HEAD><TITLE>Bucles</TITLE></HEAD> <BODY> <CENTER> <H3>Lista de autores</H3> </CENTER> <?php $Nombres = array ('primero' => 'Javier', 'segundo' => 'Jorge', 'tercero' => 'Santiago'); echo "<B>Bucle foreach</B><BR>\n"; foreach ($Nombres as $clave => $autor) { echo "Un autor de este libro se llama:<B> $autor</B>\n"; echo " y su clave es <B>$clave</B>.<BR>\n"; } ?> </BODY> </HTML>

Desarrollo de Portales Funciones

-38-

Ing.Alberto Moreno C.

El uso de funciones nos da la capacidad de agrupar varias instrucciones bajo un solo nombre y poder llamarlas a estas varias veces desde diferentes sitios, ahorrndonos la necesidad de escribirlas de nuevo. <?php function Nombre(parametro1, parametro2...) { instruccin1; instruccin2; instruccin3; instruccin4; return valor_de_retorno; } ?> Opcionalmente podemos pasarle parmetros a las funciones que se trataran como variable locales y as mismo podemos devolver un resultado con la instruccin return valor; Esto produce la terminacin de la funcin retornando un valor.
<!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php function media_aritmetica($a, $b) { $media=($a+$b)/2; return $media; } echo media_aritmetica(4,6),"<br>"; echo media_aritmetica(3242,524543),"<br>"; ?> </body> </html>

Resultado:

Resultado 5 263892.5 Funciones con arreglos.<!--variablesfuncion.php --> <?php $matriz = array("Color" => "Blanco", "Nombre" => "Agustn", "Edad" => 15); function listar($matriz) {

Desarrollo de Portales

-39-

Ing.Alberto Moreno C.

echo "<TABLE BORDER=3 ALIGN=CENTER>\n"; while (list($clave, $valor) = each($matriz)) { echo "<TR>\n"; echo "<TD>$clave</TD>\n"; echo "<TD>$valor</TD>\n"; echo "</TR>\n"; } echo "</TABLE>\n"; } function frecuencia() { echo "<TABLE BORDER=3 ALIGN=CENTER>\n"; $matriz2 = array_count_values(func_get_arg(0)); // Listar el contenido del array 2 while ($elemento = each($matriz2)) { echo "<TR>\n"; echo "<TD>Clave: $elemento[0]</TD>\n"; echo "<TD>Valor: $elemento[1]</TD>\n"; echo "</TR>\n"; } echo "</TABLE>\n"; } $func = 'listar'; $func($matriz); $func = 'ksort'; $func($matriz); $func = 'listar'; $func($matriz); $func = 'frecuencia'; $func($matriz); ?>

Funciones Fecha: Ejemplos:

Desarrollo de Portales

-40-

Ing.Alberto Moreno C.

<!-- Cap06/vencimientos.html --> <HTML> <HEAD> <TITLE>Clculo de vencimientos</TITLE> </HEAD> <BODY> <CENTER> <H1>Clculo de vencimientos</H1> <HR> <FORM ACTION="calcula.php" METHOD="POST"> <TABLE> <TR> <TD ALIGN="RIGHT">Importe</TD> <TD><INPUT TYPE="Text" NAME="importe"></TD> </TR> <TR> <TD ALIGN="RIGHT">Entrada</TD> <TD><INPUT TYPE="Text" NAME="entrada"></TD> </TR> <TR> <TD ALIGN="RIGHT">Nmero de pagos</TD> <TD><INPUT TYPE="Text" NAME="numero_pagos"></TD> </TR> <TR> <TD ALIGN="RIGHT">Primer Vencimiento</TD> <TD> <INPUT TYPE="Text" NAME="fecha1" VALUE='mm/dd/yyyy'> (Formato mm/dd/yyyy) </TD> </TR> <TR> <TD COLSPAN=2 ALIGN=CENTER> <INPUT TYPE="SUBMIT" VALUE="calcular"></TD> </TR> </TABLE> </FORM> </CENTER> </BODY> </HTML>

Desarrollo de Portales

-41-

Ing.Alberto Moreno C.

Al enviar , primero va a validar los datos de ingreso antes de efectuar los calculos , el resultado sera:

Aunque el resultado se puede dar formatocon lo visto anteriormente


<!-- Cap06/calcula.php --> <HTML> <HEAD> <TITLE>Clculo de Vencimientos</TITLE> </HEAD> <BODY> <?php function validar_campo($campo, $texto) { echo "<TR>\n"; echo "<TD>$texto</TD>\n"; if (empty($campo)) echo "<TD><FONT COLOR='red'>Falta</FONT></TD>\n"; else echo "<TD>$campo</TD>\n"; echo "</TR>\n"; } // Primero se comprueba que los campos no estn vacos. Si hay // alguno que no tiene datos, se muestra una pgina de error // que indica los campos que faltan por completar if ((empty($importe)) || (empty($entrada)) || (empty($numero_pagos)) || (empty($fecha1)) || (strtotime($fecha1) == -1)) { ?> <CENTER> <h1>Faltan datos de entrada</h1> <hr> <TABLE> <?php validar_campo($importe, 'Importe'); validar_campo($entrada, 'Entrada'); validar_campo($numero_pagos, 'Numero de Pagos'); validar_campo($fecha1, 'Primer Vencimiento'); ?>

Desarrollo de Portales

-42-

Ing.Alberto Moreno C.

</TR> <TR> <TD COLSPAN=2 ALIGN=CENTER> <A HREF="vencimientos.html">Volver</A></TD> </TR> </TABLE> <?php } else { ?> <CENTER> <H1>Descripcin de los vencimientos</H1> <HR> <TABLE BORDER=3> <TR> <TH>Nmero de pago</TH> <TH>Importe vencimiento</TH> <TH>Restante</TH> <TH>Fecha</TH> <TR> <?php // Se calcula la cantidad que que falta por pagar $resto = $importe - $entrada; // Se calcula el importe de las amortizaciones restantes $amortizacion = $resto / $numero_pagos; // Se obtiene la fecha del primer pago $fecha_inicio = strtotime("$fecha1"); // Se escribe la fila de la tabla HTML con los valores // de la entrada echo "<TR>\n"; echo "<TD ALIGN=CENTER>Entrada</TD>\n"; echo "<TD ALIGN=RIGHT>$entrada</TD>\n"; echo "<TD ALIGN=RIGHT>$resto</TD>\n"; echo "<TD ALIGN=RIGHT>", strftime("%d/%b/%Y"), "</TD>\n"; echo "</TR>\n"; // Se escriben la filas de la tabla HTML con los valores // de cada uno de los pagos for ($i = 1; $i <= $numero_pagos; $i++) { // Se obtiene lo que falta por pagar $resto = $resto - $amortizacion; echo "<TR>\n"; echo "<TD ALIGN=CENTER>$i</TD>\n"; echo "<TD ALIGN=RIGHT>$amortizacion</TD>\n"; echo "<TD ALIGN=RIGHT>$resto</TD>\n"; echo "<TD ALIGN=RIGHT>", strftime("%d/%b/%Y", strtotime("$i months", $fecha_inicio)), "</TD>\n"; echo "</TR>\n"; } ?>
</TABLE> <A HREF="vencimientos.html">Volver</A></TD>

Desarrollo de Portales
<?php } ?> </CENTER> </BODY> </HTML>

-43-

Ing.Alberto Moreno C.

Funciones Empleadas: int strtotime ( string hora [, int ahora]) La funcin espera que se le pase una cadena conteniendo una fecha en formato Ingls e intentar procesarla y convertirla a una timestamp (muestra de tiempo) de UNIX relativa a la timestamp proporcionada en ahora, o la hora actual si no se indica ninguna. Si falla, devolver -1 string strtoupper ( string cadena) Devuelve la cadena con todas sus letras en maysculas. string strtolower ( string cad) Devuelve la cadena con todas sus letras en minsculas. string ucfirst ( string cad) Pone en maysculas el primer carcter de cad si es alfabtico. Descripcin
string date ( string format [, int timestamp]) Devuelve una cadena formateada de acuerdo con la cadena de formato dada, utilizando el valor de timestamp dado o la hora local actual si no hay parmetro. Se reconocen los siguientes caracteres en la cadena de formato:

a - "am" o "pm" A - "AM" o "PM" d - da del mes, dos dgitos con cero a la izquierda; es decir, de "01" a "31" D - da de la semana, en texto, con tres letras; por ejemplo, "Fri" F - mes, en texto, completo; por ejemplo, "January" h - hora, de "01" a "12" H - hora, de "00" a "23" g - hour, sin ceros, de "1" a "12" G - hour, sin ceros; de "0" a "23" i - minutos; de "00" a "59" j - da del mes sin cero inicial; de "1" a "31" l ('L' minscula) - da de la semana, en texto, completo; por ejemplo, "Friday" L - "1" or "0", segn si el ao es bisiesto o no m - mes; de "01" a "12" n - mes sin cero inicial; de "1" a "12" M - mes, en texto, 3 letras; por ejemplo, "Jan" s - segundos; de "00" a "59" S - sufijo ordinal en ingls, en texto, 2 caracteres; por ejemplo, "th", "nd" t - nmero de das del mes dado; de "28" a "31"

Desarrollo de Portales

-44-

Ing.Alberto Moreno C.

U - segundos desde el valor de 'epoch' w - da de la semana, en nmero, de "0" (domingo) a "6" (sbado) Y - ao, cuatro cifras; por ejemplo, "1999" y - ao, dos cifras; por ejemplo, "99" z - da del ao; de "0" a "365" Z - diferencia horaria en segundos (de "-43200" a "43200")

Los caracteres no reconocidos se imprimen tal cual. El formato "Z" siempre devuelve "0" en la funcin gmdate()()
Ejemplo 1. Ejemplo de date() print (date("l dS of F Y h:i:s A"));

print ("July 1, 2000 is on a " . date("l", mktime(0,0,0,7,1,2000)));


Es posible usar date() y mktime() juntas para obtener fechas futuras o pasadas.

Ejemplo 2. Ejemplo de date() y mktime() $tomorrow = mktime(0,0,0,date("m") ,date("d")+1,date("Y")); $lastmonth = mktime(0,0,0,date("m")-1,date("d"), date("Y"));

$nextyear = mktime(0,0,0,date("m"), date("d"), date("Y")+1);


Para dar formato a fechas en otros idiomas, se deben usar las funciones setlocale() y strftime(). Ejemplo: <!-- fecha2.php --> <HTML> <HEAD> <TITLE>Ejemplo de getdate()</TITLE> </HEAD> <BODY> <CENTER> <H3 ALIGN=center>Ejemplo de getdate()</H3> <?php function listar($matriz, $titulo) { // Listar el contenido de un array echo "<TABLE BORDER=3 WIDTH=400>\n"; echo "<CAPTION ALIGN=TOP>$titulo</CAPTION>\n"; foreach($matriz as $clave => $valor) { echo "<TR>\n"; echo "<TD ALIGN=CENTER>$clave</TD>\n"; echo "<TD ALIGN=CENTER>$valor</TD>\n"; echo "</TR>\n"; } echo "</TABLE>\n"; } // Se obtiene la hora del sistema $hora = getdate(); listar($hora, "Informacin de la hora del sistema"); ?> </CENTER> </BODY> </HTML>

Desarrollo de Portales

-45-

Ing.Alberto Moreno C.

Ejemplo2.- Pasando una lista crear un combo en tiempo de ejcucion: <? // Funcion para crear un combo function CreaCombo($nombre,$elementos) { $combo="<SELECT NAME=$nombre>"; foreach($elementos as $valor) $combo .= "<option value=$valor>$valor</option>"; $combo.= "</select>"; return($combo); } // Proceso Principal $a = array('AZUL','VERDE','ROJO','NEGRO','MARRON'); $b = array('Administracion','Contabilidad','Computacion'); $c= array(23,45,67,45,45,78,8,34,57,32,23,43,12,123,234); echo CreaCombo("cboPRO", $a)."<br>"; echo CreaCombo("cboCAR", $b); echo CreaCombo("cbopre", $c); ?> </body> </html>

Desarrollo de Portales

-46-

Ing.Alberto Moreno C.

Ejemplo3.- Elaboracin de Una Factura simple , los valores de entrada se conservan despus de una ida y vuelta al servidor.

<body> <? function ImprimeFactura($pro1,$pro2,$can1,$can2,$pre1,$pre2,$sub1,$sub2,$stotal,$igv,$total){ ?> <form method="get" action="factura.php"> <table width="500" border="1" align="center" cellpadding="1" cellspacing="1" bgcolor="#FFFFCC"> <tr> <td><div align="center"> <h1>FACTURA</h1> </div></td> </tr> <tr> <td><table width="479" height="69" border="0" align="center" cellpadding="1" cellspacing="1"> <tr> <td><div align="center"><strong>PRODUCTO</strong></div></td> <td><div align="center"><strong>CANTIDAD</strong></div></td> <td><div align="center"><strong>PRECIO</strong></div></td> <td><div align="center"><strong>SUB-TOTAL</strong></div></td> </tr> <tr> <td><input name="pro1" value=<? echo $pro1; ?>></td> <td><input name="can1" value=<? echo $can1; ?>></td> <td><input name="pre1" value=<? echo $pre1; ?>></td> <td><input name="stot1" value=<? echo $sub1; ?>></td>

Desarrollo de Portales

-47-

Ing.Alberto Moreno C.

</tr> <tr> <td><input name="pro2" value=<? echo $pro2; ?>></td> <td><input name="can2" value=<? echo $can2; ?>></td> <td><input name="pre2" value=<? echo $pre2; ?>></td> <td><input name="stot2" value=<? echo $sub2; ?>></td> </tr> </table></td> </tr> <tr> <td><table width="367" height="55" border="0" align="right" cellpadding="1" cellspacing="1"> <tr> <td width="78"><input type="submit" value="Calcular"></td> <td width="282"><div align="left"> <table width="232" height="57" border="0" align="right" cellpadding="1" cellspacing="1"> <tr> <td><strong>SUB-TOTAL</strong></td> <td><input name="stotal" value=<? echo $stotal; ?>></td> </tr> <tr> <td><strong>IGV</strong></td> <td><input name="igv" value=<? echo $igv; ?>></td> </tr> <tr> <td><strong>TOTAL</strong></td> <td><input name="total" value=<? echo $total; ?>></td> </tr> </table> </div></td> </tr> </table></td> </tr> </table> </form> <? } ?> <? if($_GET){ // Recuperar valores $pro1 = $_GET['pro1']; $pro2 = $_GET['pro2']; $can1 = $_GET['can1']; $can2 = $_GET['can2']; $pre1 = $_GET['pre1']; $pre2 = $_GET['pre2']; // Calculos $sub1 = $can1 * $pre1; $sub2 = $can2 * $pre2; $sumasub = $sub1 + $sub2; $igv = $sumasub * 0.19; $total = $sumasub + $igv; ImprimeFactura($pro1,$pro2,$can1,$can2,$pre1,$pre2,$sub1,$sub2,$sumasub,$igv,$total); } else ImprimeFactura("","","","","","","","","","",""); ?> </body> </html>

Desarrollo de Portales

-48-

Ing.Alberto Moreno C.

Como ahorramos lneas de cdigo (Inclusin de archivos php)


En las lecciones anteriores hemos aprendido el uso bsico de las funciones de PHP para trabajar con MySQL. En esta leccin y sucesivas vamos a ver nuevas funciones que nos facilitan y potencian nuestras pginas web. Por lo general, todos nuestros script tienen partes de cdigo iguales, las funciones include( ) y require( ) nos van ahorrar muchas de estas lneas de cdigo. Ambas funciones hacen una llamada a un determinado fichero pero de dos maneras diferentes, con include( ), insertamos lo que contenga el fichero que llamemos de manera literal en nuestro script, mientras que con require( ), que decimos que el script necesitar parte de cdigo que se encuentra en el fichero que llama require( ). Como todo esto es un poco lioso, veamos unos ejemplos que nos lo aclara. <?php include ("header.inc"); echo "Hola Mundo"; include ("footer.inc"); ?> Si tenemos en cuenta que el fichero header.inc contiene: <html> <body> y el fichero footer.inc contiene: </body> </html> Nuestro script sera equivalente a: <html> <body> <?php echo "Hola Mundo"; ?> </body> </html> Ahora veamos el script de ejemplo para la funcin require( ): <?php require ("config.inc"); include ("header.inc"); echo $cadena; include ("footer.inc"); ?> Donde el fichero config.inc tendra algo como sto: <?php $cadena = "Hola Mundo"; ?>

Librera

Desarrollo de Portales

-49-

Ing.Alberto Moreno C.

El uso de libreras es tremendamente til, nos permiten agrupar varias funciones y variables en un mismo fichero, de manera que luego podemos incluir esta librera en distintas pginas y disponer de esas funciones fcilmente. <!-- Manual de PHP de WebMoreno.com --> <?php function CabeceraPagina() { ?> <FONT SIZE="+1">Esta cabecera estar en todas sus pginas.</FONT><BR> <hr> <? } function PiePagina() { ?> <hr> <FONT SIZE="-1">Este es el pie de pgina.</FONT><BR> <? } ?>
Ahora vamos a crear 2 pginas que usan la librera definida anteriormente para conseguir que las dos paginas tengan la misma cabecera y pie de pagina. La instruccin para incluir una librera en nuestra pgina es include("nombre de librera") <!-- Manual de PHP Autor:Alberto Moreno --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php include("libreria01.html") ?> <?php CabeceraPagina(); ?> Pgina 1 <BR><BR><BR><BR><BR> Contenido blalbl blalb alb<BR><BR> ms cosas...<BR><BR> fin<BR><BR> <?php PiePagina(); ?> </body> </html>

<html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php include("libreria01.phtml") ?>

Desarrollo de Portales
<?php CabeceraPagina(); ?>

-50-

Ing.Alberto Moreno C.

Esta es otra pgina<BR><BR> completamente distinta<BR><BR> pero comparte el pie y la cabecera con la otra.<BR><BR> <?php PiePagina(); ?> </body> </html> Esta cabecera estar en todas sus pginas. Esta es otra pgina completamente distinta pero comparte el pie y la cabecera con la otra.

Envo y recepcin de datos


El lenguaje PHP nos proporciona una manera sencilla de manejar formularios, permitindonos de esta manera procesar la informacin que el usuario ha introducido. Al disear un formulario debemos indicar la pgina PHP que procesar el formulario, as como en mtodo por el que se le pasar la informacin a la pgina. <!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1> Introduzca su nombre: <FORM ACTION="procesa.phtml" METHOD="GET"> <INPUT TYPE="text" NAME="nombre"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html> Al pulsar el botn Enviar el contenido de cuadro de texto es enviado a la pgina que indicamos en el atributo ACTION de la etiqueta FORM. PHP crea una variable por cada elemento del FORM, esta variable creada tiene el mismo nombre que el cuadro de texto de la pgina anterior y el valor que hayamos introducido. En este ejemplo se ha creado una variable llamada $nombre con el valor que haya introducido el navegante. <!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body>

Desarrollo de Portales

-51-

Ing.Alberto Moreno C.

<H1>Ejemplo de procesado de formularios</H1> El nombre que ha introducido es: <?php echo $nombre ?> <br> </FORM> </body> </html>

PRACTICA NRO 2
1.- Elaborar las siguientes funciones(colocarlos en un modulo) a) Pasando dos fechas que devuelva la cantidad de das que hay entres amabas fechas b) Pasando dos horas que devuelva la cantidad de minutos c) Pasando el una fecha con el formato dd/mm/aa que lo devuelva en el formato mm/dd/aa d) Pasando una fecha que devuelva la fecha en letras: Por ejemplo si es 19/07/06 debe devolver jueves 19 de julio del 2006 e) Pasando una Fecha que devuelva los das que faltan para terminar el ao f) Pasando un conjunto de nmeros de cantidad indeterminada(debe ser mas de 5) , que muestre el promedio de dichos nmeros eliminando los dos nmeros de menor magnitud. 2.- Ingrese un conjunto de valores en una caja de texto , luego en php realizar las funciones para determinar: a) el valor mximo b) El valor mnimo c) La suma de los elementos d) Su promedio e) Mostrar los datos ordenados
3.- Una compaa desea pronosticar sus ventas respecto a un ao, ya que las ventas son variables se van a generar con valores aleatorios de 500 6000, las ventas que son mayores al promedio en valor de 200 colocar un incono (carita feliz) y pintar las ventas con color azul, si esta en el rango del promedio (+)( -) 200 colocar otro icono como se muestra en la figura y el color de letra negro, si es menor al promedio en menos de doscientos mostrar con color rojo e icono (carita triste).

Desarrollo de Portales

-52-

Ing.Alberto Moreno C.

4.-crear una pagina para la venta de DVD ,Mostrar en una lista desplegables con una lista de videos (*.avi, *.mpg) al seleccionar un video ser mostrado el video seleccionado , con una descripcin pequea del video. (debe emplear una clase luego adaptarlo con cdigos en php) 5.- realizar una pagina en php para envi de postales , Ud. Puede seleccionar otras imgenes , primero se mostrara una pagina HTM para seleccionar el fondo , la imagen y el mensaje respectivo la pagina PHP compondr la postal :

Desarrollo de Portales

-53-

Ing.Alberto Moreno C.

la pagina Postal.php va recibir las opciones elegidas. 5.- Empleando funciones realizar una pagina para convertir nmeros a letras para ello se ingresa un valor numrico mximo de 6 dgitos. 6.- Unir las paginas con un men principal.

Desarrollo de Portales

-54-

Ing.Alberto Moreno C.

Ejercicios resueltos
1.- empleando arreglos , en una matriz colocar una lista de personas por cada pas luego al seleccionar un pas que muestre las personas solo de ese pas

<html> <head> <title>sELECCION</title> </head> <body> <?php $pais=array("Peru","Japon","Mexico"); $alumno[]=array("A001","Juana Solis","Peru"); $alumno[]=array("A002","Mirtha Torres","Peru"); $alumno[]=array("A003","Luis Perez","Japon"); $alumno[]=array("A004","Pedro Solano","Japon"); $alumno[]=array("A005","Manuel Braybar","Alemania"); $alumno[]=array("A006","Iris Montalvo","Alemania"); $alumno[]=array("A007","Cinthya Perez","Peru"); $alumno[]=array("A008","Ivette Horna","Alemania"); $alumno[]=array("A009","Mariano Marin","Mexico"); $alumno[]=array("A0010","Juan Lopez","Mexico"); ?> <form name="form1" method="post" action=""> <p>Seleccione Pais : <select name="cbopais" onChange="form1.submit()"> <option value="">Seleccione Pais</option>

Desarrollo de Portales -55Ing.Alberto Moreno C. <?php for($i=0;$i<count($pais);$i++){ if($pais[$i]==$_POST["cbopais"]){ echo "<option value='$pais[$i]' selected>$pais[$i]</option>"; }else{ echo "<option value='$pais[$i]'>$pais[$i]</option>"; } } ?> </select> </p> <table width="368" border="1"> <tr> <td width="65"><strong>Codigo</strong></td> <td width="189"><strong>Nombre</strong></td> <td width="92"><strong>Pais</strong></td> </tr> <?php foreach($alumno as $valor){ if($valor[2]==$_POST["cbopais"]){ echo "<tr>"; echo "<td>$valor[0]</td>"; echo "<td>$valor[1]</td>"; echo "<td>$valor[2]</td>"; echo "</tr>"; } } ?> </table> </form> </body> </html>

2.- para si un valor esta vacio .

Desarrollo de Portales

-56-

Ing.Alberto Moreno C.

</head> <?php $respuesta=""; $respuesta2=""; if(isset($_POST["txtn"])){ if(empty($_POST["txtn"])){ $respuesta="esta vacio"; $respuesta2= "onLoad=\"alert('ingerse un valor');form1.txtn.focus();\""; }else { $respuesta="ud. ha digitado ".$_POST["txtn"]; } } ?> <body <?php echo $respuesta2 ?>> <div align="center"> <p>uso de empty</p> <form name="form1" method="post" action=""> <table width="337" border="5" cellspacing="0" cellpadding="5"> <tr> <td width="66" height="53">ingrese numero </td> <td width="164"><input name="txtn" type="text" id="txtn"></td> </tr> <tr> <td><input type="submit" name="Submit" value="verifica numero"></td> <td><?php echo $respuesta ?></td> </tr> </table> </form> <p>&nbsp; </p> </div> </body> </html>

Desarrollo de Portales

-57-

Ing.Alberto Moreno C.

3.- Seleccionar una lista de Artefacto mediante los checkbox en tiempo de ejecucin y al seleccionar uno o varios va mostrar en otra pagina los artefactos seleccionados:

<title>MANEJO DE WHILE LIST EACH</title> </head> <?php $producto=array("cocina","radio","televisor","licuadora","refrigeradora","filmadora"); $precio=array(900,250,2500,150,2332,1500); ?> <body> <form name="form1" method="post" action="carrito.php"> <table width="158" height="85" border="1" align="center"> <tr bgcolor="#CCCCCC"> <td><strong>Imagen</strong></td> <td><strong>Artefacto</strong></td> <td><strong>precio</strong></td> </tr> <?php for($i=0;$i<count($producto);$i++){ $foto="<img src='imagenes/$producto[$i].jpg' width=60 height=50 >"; $check="<input type=checkbox name='$producto[$i]' value='$precio[$i]'>$producto[$i]"; echo "<tr><td> $foto <td>$check <td> $precio[$i]"; } ?> <tr> <td><input type="submit" value="agregar carrito"></td> <td><input type="submit" value="Limpiar"></td>

Desarrollo de Portales <tr> <tr> </table> </form> </body> </html>

-58-

Ing.Alberto Moreno C.

CARRITO.PHP

<title>MANEJO DE WHILE LIST EACH</title> </head> <?php $producto=array("cocina","radio","televisor","licuadora","refrigeradora","filmadora"); $precio=array(900,250,2500,150,2332,1500); ?> <body> <form name="form1" method="post" action="carrito.php"> <table width="158" height="85" border="1" align="center"> <tr bgcolor="#CCCCCC"> <td><strong>Imagen</strong></td> <td><strong>Artefacto</strong></td> <td><strong>precio</strong></td> </tr> <?php for($i=0;$i<count($producto);$i++){

Desarrollo de Portales -59Ing.Alberto Moreno C. $foto="<img src='imagenes/$producto[$i].jpg' width=60 height=50 >"; $check="<input type=checkbox name='$producto[$i]' value='$precio[$i]'>$producto[$i]"; echo "<tr><td> $foto <td>$check <td> $precio[$i]"; } ?> <tr> <td><input type="submit" value="agregar carrito"></td> <td><input type="submit" value="Limpiar"></td> <tr> <tr> </table> </form> </body> </html>

4.- Empleando una funcion que permita similar un combo luego al seleccionar un curso que afecte al otro combo( lista de cursos)

<body>
<? function combo($arr,$nom,$sel)

{ $cad="<select name=$nom onchange='submit();'>"; for($a=0;$a<count($arr);$a++)

Desarrollo de Portales { if($sel==$arr[$a]) $cad=$cad ."<option selected>$arr[$a]"; else $cad=$cad ."<option >$arr[$a]"; } $cad .= "</select>"; return $cad; }

-60-

Ing.Alberto Moreno C.

$sw=$_POST['cb1']; // obtiene el nivel seleccionado $sw1=$_POST['cur']; // obtiene el curso seleccionado ?> <form action="combo1.php" method=post> <? $vec1=array("Web","BDD","Office"); $vec2=array("ASP","PHP","Macromedia"); $vec3=array("oracle","SQL server","Iseris","Informix"); $vec4=array("Word","Execel","POwer Point"); echo " seleccione Nivel:".combo($vec1,"cb1",$sw); echo "<br> Lista de cursos "; switch($sw){ case "Web": echo combo($vec2,"cur",$sw1);break; case "BDD": echo combo($vec3,"cur",$sw1);break; case "Office": echo combo($vec4,"cur",$sw1);break; } ?> </form> <? if(isset($_POST['cur'])) // si la variable esta en memoria { echo "<br> Ud selecciono el curso de : ".$_POST['cur']; } ?> </body> </html>

Desarrollo de Portales Envio de emails

-61-

Ing.Alberto Moreno C.

PHP nos ofrece la posibilidad de enviar emails de una manera sencilla y fcil, para ello el lenguaje nos proporciona la instruccin mail( ) <?php mail(destinatario, tema, texto del mensaje); ?> En el parmetro destinatario pondremos la direccin de email a donde se enviar el mensaje, en el parmetro tema el tema o subject del mensaje y el parmetro texto del mensaje el cuerpo del mensaje en formato texto plano. Existe una sintaxis extendida de la instruccin mail( ) que nos permite aadir informacin adicional a la cabecera del mensaje. <?php mail(destinatario, tema, texto del mensaje, informacin adicional de cabecera); ?> En la informacin de cabecera podremos incluir parmetros adicionales al mensaje como Reply-To:, From:, Content-type:... que nos permiten tener un mayor control sobre el mensaje. <!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de envio de email</H1> Introduzca su direccion de email: <FORM ACTION="email.phtml" METHOD="GET"> <INPUT TYPE="text" NAME="direccion"><BR><BR> Formato: <BR> <INPUT TYPE="radio" NAME="tipo" VALUE="plano" CHECKED> Texto plano<BR> <INPUT TYPE="radio" NAME="tipo" VALUE="html"> HTML<BR><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

email.php <!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de envio de email</H1> <? if ($direccion!=""){ if ($tipo=="plano"){ // Envio en formato texto plano mail($direccion,"Ejemplo de envio de email","Ejemplo de envio de email de texto plano\n\nWebEstilo.\nhttp://www.WebMoreno.com/\n Manuales para desarrolladores web.\n","FROM: Pruebas <webmaster@hotmail.com>\n"); } else { // Envio en formato HTML mail($direccion,"Ejemplo de envio de email","<html><head><title>WebEstilo. Manual de

Desarrollo de Portales

-62-

Ing.Alberto Moreno C.

PHP</title></head><body>Ejemplo de envio de email de HTML<br><br>WebEstilo.<br>http://www.WebMoreno.com/<br> <u>Manuales</u> para <b>desarrolladores</b> web.</body></html>","Content-type: text/html\n", "FROM: Pruebas <webmaster@hotmail.com>\n"); } echo "Se ha enviado un email a la direccion: ",$direccion," en formato <b>",$tipo,"</b>."; } ?> <br> </FORM> </body> </html>

Qu son las sesiones?


Si existe una consulta repetida en las listas de PHP, es la relativa al uso de las sesiones. El uso de sesiones es un mtodo ampliamente extendido en cualquier aplicacin de cierta entidad. Bsicamente una sesin es la secuencia de pginas que un usuario visita en un sitio web. Desde que entra en nuestro sitio, hasta que lo abandona. El trmino sesin en PHP, session en ingls, se aplica a esta secuencia de navegacin, para ello crearemos un identificador nico que asignamos a cada una de estas sesiones de navegacin. A este identificador de sesin se le denomina, comnmente, como la sesin. El proceso en cualquier lenguaje de programacin podra ser algo as: Existe una sesin? Si existe la retomamos Si no existe creamos una nueva
Generar un identificador nico

Y para que no perdamos el hilo de la navegacin del usuario deberemos asociar esta sesin a todas las URLs y acciones de formulario. Podemos tambin crear un cookie que incluya el identificador de sesin, pero es conveniente recordar que la disponibilidad o no de las cookies depende del usuario, y no es conveniente fiarse de lo que un usuario pueda o no tener habilitado. Lo contado hasta ahora es teora pura y es aplicable a cualquier lenguaje de programacin C, Perl, etc. Los que programamos en PHP4 tenemos la suerte de que toda la gestin de sesiones la hace el mismo PHP. Por lo tanto lo comentado a partir de aqu es solo aplicable a PHP4. Si an desarrollas PHP3, tendrs que crear tus propias libreras de gestin de sesiones o recurrir a alguna de las existentes, como la de PHPLIB .

Inicializacin de la sesin
Para utilizar sesiones en PHP lo primero es inicializarlas. Podemos hacerlo explcitamente, mediante la funcin session_start(), o al registrar una variable en una sesin mediante session_register('miVariable'). En ambos casos se crea una nueva sesin, si no existe, o se retoma la sesin actual. Veamos un sencillo ejemplo: <?php // Manual de PHP de WebMoreno.com session_start();

Desarrollo de Portales
echo "He inicializado la sesin"; ?>

-63-

Ing.Alberto Moreno C.

Esta es la forma ms bsica, si el usuario tiene los cookies activados, PHP habr insertado de forma automtica la sesin y sta ser pasada de una pgina a otra sin hacer nada ms. Desde un punto de vista prctico la sesin es operativa, pero no vemos nada. Podemos obtener la sesin en cualquier momento mediante la funcin session_id(). Inserta en las sucesivas pginas la siguiente lnea para ver si la sesin est disponible: <?php // Manual de PHP de WebMoreno.com session_start(); echo 'La sesin actual es: '.session_id(); ?>

En este caso session_start() comprueba en los cookies que existe una sesin y continua con ella, session_id() devuelve el identificador actual.
Inicio PHP Manual Sesiones Valora: 4.55/5

Ejemplo prctico
<?php session_register('contador'); echo '<a href="'.$PHP_SELF.'?'.$SID.'">Contador vale: '.++$contador.'</a>'; ?>

En nuestro ejemplo anterior, registramos la variable $contador en la primera lnea del script. En la segunda lnea, entre otras cosas, cada vez que recarguemos la pgina o hagamos click sobre el enlace, el valor de $contador se incrementar en 1. En esta lnea hacemos uso de la variable reservada $PHP_SELF, que hace referencia al propio script en ejecucin y una constante propia de PHP5, $SID, que contiene el nombre de la sesin y el identificador de la misma. Podemos averiguar tambin el nombre de la sesin, o modificarlo, mediante la funcin session_name(). Veamos una prueba prctica: <?php session_name('misesion'); session_register('contador'); echo '<a href="'.$PHP_SELF.'?'.SID.'">Contador vale: '.++$contador.'</a><br>'; echo 'Ahora el nombre es '.session_name().' y la sesin '.$misesion.'<br>'; ?> La asignacin del nombre de sesin debe realizarse antes que ninguna otra funcin con sesiones, antes que session_start() o session_register().

Desarrollo de Portales
Error comn

-64-

Ing.Alberto Moreno C.

Uno de los errores ms comunes cuando se utilizan sesiones es dejar lneas en blanco antes de la inicializacin de PHP o enviar alguna salida a la pantalla. Para probarlo crea una lnea en blanco o con cualquier cosa antes de <?php. Si tienes los cookies activados, te encontrars un error de este tipo: Warning: Cannot send session cookie - headers already sent by (output started at /home/session.php:2) in /home/session.php on line 4 PHP est informando de que no puede activar los cookies en el navegador del usuario, porque las cabeceras ya han sido enviadas. Simplemente por la existencia de una lnea en blanco. Como medida prctica, no dejes espacios ni antes del inicio del script, ni despus de la finalizacin. Te ahorrar muchos disgustos. Si despus de todo lo comentado an no entiendes para que sirven las sesiones, veamos un ejemplo prctico. Imagina que quisieras crear un sistema de cesta de la compra.

Carrito de compra
Un ejemplo basico de un carrito de Compras:

<?php session_start(); session_register('itemsEnCesta'); if ($item){ if (!isset($itemsEnCesta)){ $itemsEnCesta[$item]=$cantidad; }else{ foreach($itemsEnCesta as $k => $v){ if ($item==$k){ $itemsEnCesta[$k]+=$cantidad; $encontrado=1; } } if (!$encontrado) $itemsEnCesta[$item]=$cantidad; } } ?> <html> <body> <tt> <form action="<?=$PHP_SELF."?".SID?>" method="post"> Dime el producto <input type="text" name="item" size="20"><br> Cuantas unidades <input type="text" name="cantidad" size="20"><br> <input type="submit" value="Aadir a la cesta"><br> </form> <? if (isset($itemsEnCesta)){ echo'El contenido de la cesta de la compra es:<br>'; foreach($itemsEnCesta as $k => $v){

Desarrollo de Portales
echo 'Artculo: '.$k.' ud: '.$v.'<br>'; } } ?> </tt> </body> </html>

-65-

Ing.Alberto Moreno C.

Dime el producto Cuantas unidades


Enviar

El contenido de la cesta de la compra es: Artculo: Mouse Logitex ud: 23

Una breve explicacin. En la lnea 4 comprobamos si el usuario ha pasado algn artculo, desde el formulario. En la 5 si el array itemsEnCesta no existe, lo creamos con el nuevo producto y la cantidad indicada. Si el array existe recorremos su contenido, entre las lneas 8 y 13, y si encontramos un artculo igual, aadimos la cantidad en la lnea 10. Si no lo encontramos, es un nuevo artculo, por lo tanto, aadimos el nuevo producto con la correspondiente cantidad a itemsEnCesta en la lnea 14. Y a continuacin imprimimos el formulario y los resultados, si los hubiera, a partir de la lnea 18, donde empieza el HTML. Te imaginas las posibilidades de un sistema de almacenamiento de informacin de estas caractersticas?. No necesitas ficheros, ni bases de datos, ni tienes que andar pasando valores de una pgina a otra. PHP va gestionando estos datos por nosotros, hasta el momento en que decidamos almacenar la informacin donde ms nos interese. Qu son las cookies? La principal utilidad de las cookies (galletas) es la de solventar el problema de la falta de estado en la navegacin a travs de las paginas web. Con las cookies, pequeas porciones de informacin se quedan registradas en el navegador permitiendo identificar a este a travs de diferentes pginas de un mismo sitio e incluso durante visitas entre distintos das. Realmente las cookies no son mas que cadenas de texto que son enviadas desde el servidor al cliente (navegador) y almacenadas en este, luego el navegador enva estas cookies al servidor permitiendo as la identificacin del cliente en el servidor.

Funcionamiento

La cookie es enviada al navegador desde el servidor y si este la acepta permanece en l.

Desarrollo de Portales

-66-

Ing.Alberto Moreno C.

Las pginas piden la cookie al navegador...

El navegador las enva, permitiendo la identificacin del usuario por parte del servidor.

A continuacin vamos a ver como usar las cookies para nuestro beneficio.

Cmo usar las cookies


El manejo de cookies en PHP se realiza mediante el uso de la funcin setcookie, esta funcin esta disponible a partir de la versin 4 de PHP. int setcookie (string Nombre [, string Valor [, int Expire [, string Path [, string Dominio [, int Secure]]]]]) Setcookie() define una cookie que es enviada junto con el resto de la informacin de la cabecera(header). Las cookies deben ser enviadas antes de cualquier tag de html, por lo tanto deberemos realizar la llamada a estas funciones antes de cualquier tag <HTML> o <HEAD>. Esta es una restriccin de las cookies no de PHP. Todos los argumentos excepto el nombre son opcionales.

Nombre. Nombre de la cookie. Si creamos una cookie solamente con el nombre, en el cliente se eliminara la cookie que exista con ese nombre. Tambin podemos reemplazar cualquier argumento con una cadena vaca (""). Value. Valor que almacenar la cookie en el cliente. Expire. El argumento expire es un argumento entero que indica la hora en que se eliminara la cookie en el formato de hora que devuelven las funciones UNIX time() y mktime(). Normalmente se usa time() + N. segundos de duracin, para especificar la duracin de una cookie. Path. Subdirectorio en donde tiene valor la cookie. Dominio. Dominio en donde tiene valor la cookie. Si ponemos como dominio www.domain.com la cookie no se transmite para domain.com, mientras que si

Desarrollo de Portales

-67-

Ing.Alberto Moreno C.

ponemos domain.com la cookie se transmite tanto para domain.com como para www.domain.com Secure. El argumento secure indica que la cookie solo se transmitir a travs de una conexin segura HTTPS.

Ejemplo setcookie("usuario", "Luis", time()+3600,"/","WebMoreno.com"); En este ejemplo establecemos una cookie de nombre usuario que contiene el valor Luis, que dura 1 hora (3600 segundos) vlida para todo el dominio WebMoreno.com

Ejemplo de uso de cookies En este ejemplo vamos a ver como establecer una cookie y cmo se recupera el valor establecido. Para ello pediremos al usuario que introduzca su nombre, que guardaremos en una cookie. Primero pedimos al usuario que introduzca el valor de su nombre, usamos un formulario que procesar la pgina procesar_cookie.phtml. <!-- Manual de PHP de WebMoreno.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de uso de cookie</H1> Introduzca su nombre: <FORM ACTION="procesar_cookie.phtml" METHOD="GET"> <INPUT TYPE="text" NAME="nombre"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

Ejemplo de uso de cookie Introduzca su nombre:


Enviar

Ejemplo de uso de cookie


Se ha establecido una cookie de nombre ejemusuario con el valor: Laura que ser vlida durante 1 hora.

Desarrollo de Portales

-68-

Ing.Alberto Moreno C.

Se establece la cookie ejemusuario con el valor introducido anteriormente, y cuya duracin es una hora. <?php // Manual de PHP de WebMoreno.com setcookie("ejemusuario", $nombre, time()+3600,"/",""); ?> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de uso de cookie</H1> Se ha establecido una cookie de nombre <b>ejemusuario</b> con el valor: <b><? print $nombre; ?></b> que ser vlida durante 1 hora. </body> </html>

PRACTICA CONTINUA 3 1.- Empleando un archivo tipo texto y sessiones elaborar un carrito de compra para la compra de CDs , donde va a colocar los datos de las disqueras las paginas iniciales de :

Desarrollo de Portales -69en el combo ser llenado con las opciones

Ing.Alberto Moreno C. Al seleccionar una opcin solo debe aparecer los Discos de la casa seleccionada, tal como se muestra en la figura 1.

Aunque esta pagina tendr una presentacin similar cuando se lija los Cds por Estilo (Rock,balada, etc ) modificando datos en el combo. 2.-Al hacer un clic sobre la imagen o foto de la cantante mostrara en una ventana la informacin mas ampliada como se muestra en la figura 2.

Esta ventana tendr solo cuatro segundos , de presentacion.

3.- Cuando hace un clic en el carrito debe mostrar la siguiente pagina (cesta.php) para el usuario vea las compras que ha realizado, teniendo la opcin de comprar mas CDs y actualizar su compra (para ello es necesario trabajar con sesiones)

Desarrollo de Portales

-70-

Ing.Alberto Moreno C.

4.- al aceptar la compra se va a guardar en un archivo texto el nombre del cliente su tarjeta de crdito y el total importe a pagar y la fecha de compra , luego de efectuar la compra cerrar la sesin.

5.- En una pagina se mostrara por fecha (ingresar la fecha) todas las compras que se han realizado para llevar un control respectivo.

6.- Unir las paginas con men Nota.- la presentacin es importante, puede agregar efectos flash , u otras animaciones que se considerara en la nota.

Colocar en un arreglo la casa de discos: $casa=array("SonyBMG","Warner","Records","Columbia"); $estilo=array("Pop","Rock","Dance","Clasico","Baladas"); en un archivo de tipo texto colocar los datos del cantante: ejemplo: A0001 : Fijacion Oral: Shakira: Columbia: Pop:21.95: Grabado ntegramente en espaol, ha sido grabado en las Islas Bahamas, Madrid y Miami entre otras ciudades, y todas las canciones llevan la firma de Shakira, que tambin ha colaborado en la produccin. Destaca el do con Alejandro Sanz de su primer single 'La tortuta'. Los datos en orden son : Codigo del Cds, Titulo, autor,Casa Discografica,Estilo, Precio y descripcin as colocar muchos mas registros.

Desarrollo de Portales

-71-

Ing.Alberto Moreno C.

CAPITULO DE BASE DE DATO


1.- Introduccin
MySQL es un sistema de administracin de bases de datos muy potente. La principal virtud es que es totalmente gratuito, por lo que es una fuerte alternativa ante sistemas como SQL u Oracle. es pequeo y compacto y no solo sirve para pequeas aplicaciones. En adicin soporta el standard SQL (ANSI) ademas de compilar en un gran numero de plataformas Muchas empresas han decidido comenzar a utiliza MySQL como gestor de bases de datos para sus proyectos Web, y se han dado cuenta de que es realmente muy poderoso, y no tiene nada que envidiarle a sus competidores. Otra de las razones es que tiene un costo nulo y se distribuye bajo licencia GNU (General Public License).

2.- Instalacion
Cuando se ha instalado el Appserv o el PHPDEV automticamente instala el motor de base de Dato del mysql , cuyo directorio es c:\appserv\mysql. Donde todas las bases creadas se situan el directorio ..\mysql\data , que fcilmente se puede transportar y colocar automticamente en dicha carpeta , su gestion de datos es muy similar al SQL SERVER . La creacin de BDD , tablas y consulta puden realizarle a trves de consola o un asistente. Mediante asistente hay que instalarlo de manera a parte, que es el FrontMysql y que se puede descargar de manera gratuita. Inicializacin Nos dirigimos hacia el directorio c:\mysql\bin y ejecutamos el archivo winmysqladmin.exe o puede acceder del menu. Aqu aparecer una pantalla: Administracin de MySQL Para administrar MySQL bajo Windows es recomendable utilizar una herramienta visual, uno de los ms populares para este trabajo es el MysqlFront Trabajar con MysqFront es muy similar que hacerlo

Desarrollo de Portales -72Ing.Alberto Moreno C. desde SQL Server. Una vez creada la conexin puedes administrar las tablas y usuarios de manera sencilla. Otra de las caractersticas importantes, es que incluye un asistente de importacin, que ayuda a migrar de una base de datos Access u otra compatible con ODBC. La primera vez que se entra al MysqlFront (Inicio- programas MysqlFrontMysqlFront) nos mostrara una ventana en la cual nos pedira el nombre del servidor al cual nos queremos conectar(localhost osea local), el usuario con el cual vamos a entrar (root el usuario por defecto), password (si lo hubiera) y la base de datos a la cual nos queremos conectar (si no ponemos nada se podra trabajar con todas las base de datos). El puerto de sera 3306

como se ve en la imagen ese es el entorno del MysqlFront y es en la pestaa de QUERY en donde vamos a trabajar con codigo SQL

3.- Sentencias SQL para Manipular Base de Datos y Tablas en MYSQL


Las sentencias SQL en Mysql llevan punto y coma al final, aqu algunas sentencias: Instruccin Show databases; Descripcin Muestra el conjunto de bases de datos presentes en el servidor

Desarrollo de Portales Use nombreBD; Create Database nombreBD; Drop Database nombreBD; Show tables; Describe nomTabla; Drop Table nomtabla;

-73Ing.Alberto Moreno C. Determina la base de datos sobre la que vamos a trabajar Crea una nueva bd con el nombre especificado Elimina la base de datos del nombre especificado Muestra las tablas presentes en la base de datos actual Describe los campos que componen la tabla Borra la tabla de la base de datos

Crea una tabla y entre parntesis se pone los Create table nomtab(Nomcampo1 campos y el tipo de dato que contendra esa tipo,Nomcampo2 tipo) tabla 3.2.- Tipos de datos en Mysql
VARCHAR Tiene un nmero variable de caracteres el nmero que se pone es el nmero mximo de caracteres que puede tener este nmero va de 1 a 255 CHAR Tiene un nmero fijo de caracteres va de 1 a 255 DATE Tipo fecha (YYYY-MM-DD)-( '1000-01-01' a '9999-12-31') TIME Tipo hora (HH:MM:SS) (-838:59:59' a '838:59:59) DATETIME Tipo fecha y hora (YYYY-MM-DD HH:MM:SS) YEAR(2 o 4) Tipo ao (1970 a 2069) INTEGER (INT) Tipo numrico entero (-2147483648 a 2147483647) FLOAT (M,D) Nmero real de coma flotante M es el nmero y D los decimales (-3.402823466E+38 a -1.175494351E-38, 0, y 1.175494351E-38 a 3.402823466E+38.) DOUBLE(M,D) Nmero real de doble precisin M es el nmero y D los decimales (- 1.7976931348623157E+308 a -2.2250738585072014E-308, 0, y 2.2250738585072014E-308 a 1.7976931348623157E+308) BLOB Para grandes textos la longitud mxima es 65535 con este tipo las bsquedas de texto son sensibles a las maysculas. TEXT Para grandes textos la longitud mxima es 65535 con este tipo las bsquedas de texto NO son sensibles a las maysculas.

3.3.- Restricciones para los campos en Mysql


not null auto_increment primary key El valor no puede ser nulo en el campo Automticamente incrementa el nmero del registro anterior El PRIMARY KEY es un campo que MySQL usa como ndice. Este ndice puede hacer cosas como: Hallar rpidamente filas que acierten una clusula WHERE. Regresar filas de una tabla desde otras tablas cuando se realizan uniones.

Desarrollo de Portales Key

-74-

Ing.Alberto Moreno C.

Esto definitivamente te va a ayudar a agilizar sus peticiones tambin.

Crea una llave secundaria

3.4.- Sentencia Alter en Mysql


Modificacin de la Estructura de una Tabla Ejemplo: ALTER TABLE clientes CHANGE nombre NomAlu varchar(70); Cambia el campo nombre por el campo nomalu que sera varchar 70 ALTER TABLE clientes ADD edad int; Agrega un campo edad a la tabla clientes ALTER TABLE clientes DROP edad; Elimina el campo edad 3.5.- Ejemplo: Crear una base de datos llamada IDAT y una tabla llamada Articulos que tendra los sgtes campos codigo, nombre, unidad de medida, precio y stock)

3.6.- Sentencia Insert, Update, Delete y Select Para insertar datos a una tabla la sentencia es Insert Ejemplo: INSERT INTO articulos VALUES ('A0019','TECLADO EPSON 102 ','UNI', 30,122)

Desarrollo de Portales

-75-

Ing.Alberto Moreno C.

Para Modificar los datos de una tabla la sentencia es Update Ejemplo


Update articulos set Art_Nombre='TECLADO Maxell',Art_Precio=60 where Art_Codigo='A0019'; Para eliminar los datos de la tabla la sentencia es Delete Ejemplo: DELETE from Articulos where Art_Codigo= A0019 ; Para Mostrar datos la sentencia es Select SELECT * FROM clientes WHERE nombre="pablo" and sueldo="500"; SELECT * FROM clientes WHERE edad >= "30"; SELECT nombre, edad FROM clientes WHERE edad >= "30"; SELECT distinct nombre FROM clientes; distinct sirve para que saque solo los registros nicos no los repetidos en el campo nombre SELECT * FROM clientes ORDER BY edad; para que el resultado se ordene por edad SELECT * FROM clientes ORDER BY edad DESC; para que el resultado se ordene en forma descendente SELECT * FROM clientes GROUP BY edad; SELECT nombre, sueldo/100 from clientes; para que muestre la columna sueldo dividido para 100 select * from clientes where edad is NULL; select * from clientes where edad is NOT NULL; SELECT * FROM clientes WHERE nombre LIKE "P%"; para buscar nombres que comienzan con P SELECT * FROM clientes WHERE nombre LIKE "%P"; para buscar nombres que terminan con P SELECT * FROM clientes WHERE nombre LIKE "%P%"; para buscar nombres que tengan P en cualquier posicion SELECT * FROM clientes WHERE nombre LIKE "_"; para buscar nombres que tengan un carcter SELECT nombre, COUNT(*) FROM clientes SELECT DISTINCT nombre FROM clientes saca los nombres sin repetidos NOTA: Si nos damos cuenta las sentencias SQL que utilizamos para SQL server tambien nos sirve para Mysql. Todo el script hecho se puede guardar tambien.

Desarrollo de Portales

-76-

Ing.Alberto Moreno C.

Tambien se puede crear base de datos y tables con el asistente que tiene el MysqlFront . Si nos vamos al menu tools podremos observar que hay una opcion para crear Base de datos, Crear tablas , etc.

4..- Funciones PHP para acceder a Mysql (Conexin a base de datos)


Vamos a utilizar la base de datos Facturas que tiene las sgtes tablas.

Articulos

Clientes

Fac_cabe

Desarrollo de Portales

-77-

Ing.Alberto Moreno C.

Fac_deta

Aqu vamos a ver algunas funciones utiles para poder trabjar desde Php con Mysql. No se olviden que todo va entre <?php y ?>

4.1.- mysql_connect
mysql_connect( hostname username password ); Devuelve: un identificador de conexin (osea un numero), o FALSE en caso de error. Todos los argumentos son optativos, y si no se especifican, los valores por defecto son (' el localhost', nombre del usuario del usuario que posee el proceso del servidor, la contrasea vaca). La cadena hostname tambin puede incluir un nmero del puerto, "hostname:port". La conexin al servidor se cerrar en cuanto la ejecucin del script acabe, a menos que la cerremos antes con la funcin mysql_close. Ejemplo: $cn=mysql_connect("localhost","root","password"); //Aqu se esta conectando a la maquina local el //usuario root y la contrasea es password $cn=mysql_connect("localhost");// Aqui se esta conectando con el usuario y la contrasea por defecto $cn=mysql_connect("mysql.webcindario.com","SUPER","CONTRA");//Aqui no estamos conectando al //servidor de miarroba el usuario es super y la contrasea es contra

Desarrollo de Portales 4.2.- mysql_close

-78-

Ing.Alberto Moreno C.

Devuelve: TRUE si se ha cerrado correctamente, FALSE en caso de errror. Ejemplo: mysql_close($cn) //Aqui estamos cerrando la conexion $cn

4.3.- mysql_db_query
mysql_db_query( database sentencia sql conexion ); Devuelve: un identificador de conexin, o FALSE en caso de error.< de caso en FALSE o conexin,> Ejecuta una consulta en una base de datos. Si el identificador no se especifica, la funcin intenta encontrar una conexin abierta con el servidor. Si no encuentra una conexin, intentar crear una (similar a mysql_connect( ) sin argumentos). Ejemplo: $rs= mysql_db_query("Facturas","Select * From Clientes",$cn); //Aqui estamos haciendo una consulta que //mostrara todos los datos de la tabla clientes de la base de datos Facturas la cual trabajara con la conexin CN

4.4.- mysql_fetch_row
mysql_fetch_row(result); Devuelve: una tabla o FALSE si hay error. Devuelve un tabla con los valores de los campos de la fila actual de la consulta, la que especificar el indicador (result) , y mueve el puntero interno que marca la fila actual a la siguiente fila, si no hay mas filas devuelve FALSE. El ndice de la tabla comienza en 0. Ejemplo: //$rs es el result (algo asi como el recordset) que guarda todos los datos de los clientes $fila=mysql_fetch_row($rs); //Aqui se avanza a la primera fila del result y se guarda en la variable Fila while($fila){ //Si no llega al final del archivo la variable Fila tomara el valor de true echo "$fila[0] $fila[1] $fila[2]<br>"; $fila=mysql_fetch_row($rs); //se avanza a la sgte fila }

Desarrollo de Portales

-79-

Ing.Alberto Moreno C.

Tambien se puede usar mysql_fetch_array, la diferencia entre usar mysql_fetch_array y mysql_fetch_row es que la primera te guarda los datos en un array con el nombre de los campos ( $row[nombre], $row[apellidos]...etc) y la segunda te guarda el array numerico ($row[0], $row[1]...etc)

4.5..- mysql_fetch_array mysql_fetch_array(result);


Devuelve un array con la informacin correspondiente al resultado de una consulta especificado por su identificador o 'false' si ya no hay ms filas. Es una versin extendida de mysql_fetch_row ( ). Adems de almacenar los datos a travs de ndices numricos del array, tambin lo hace a travs de ndices asociativos, utilizando los nombres de los campos como claves. Si dos o ms columnas del resultado tienen el mismo nombre de campo, la ltima es la que tiene preferencia. Para acceder a las dems es necesario utilizar el ndice numrico o construir un alias para la columna:

Ejemplo:
mysql_connect($host,$user,$password); $result = mysql_db_query("database","select * from table"); while($row = mysql_fetch_array($result)) { echo $row["user_id"]; echo $row["fullname"]; } mysql_free_result($result); //libera dela memoria la variable Rs 4.6.- mysql_free_result: Libera la memoria de los resultados. mysql_free_result($rs) 4.7.- mysql_num_rows mysql_num_rows(result); Devuelve el nmero de filas del resultado de una consulta. Ejemplo: mysql_num_rows($rs);

Desarrollo de Portales

-80-

Ing.Alberto Moreno C.

CUARTA PRACTICA CONTINUA SE TIENE LAS SIGUIENTES TABLAS

a).-Se pide elaborar las siguiente consulta, como resultado del examen de admisin, seleccionando una facultad a travs de una lista, que muestre el resultado del examen Ordenados por apellido, con el mensaje ingreso o no ingreso (azul y rojo) , el puntaje mnimo de ingreso es de acuerdo a la cantidad de vacantes que ofrece cada especialidad. Y el puntaje obtenido en el examen, por ejemplo si Ing. De Sistema ofrece 10 vacantes y tiene 30 alumnos matriculados entonces solo ingresan aquellos que tengan los mayores puntajes, si hay empates con el ultimo puesto entonces dichos alumnos tambin ingresan. (7 Puntos)

b) Muestre los puntajes mnimos y mximo que se dieron en cada facultad( 5 Puntos) Cdigo Especialidad Ptj. Mnmo Mximo Nro vacantes

c) Muestre los tres primeros puntos .(4 Puntos) Cod. Alumno Nombre y Apellido Especialidad Puntaje

d) Graficar La cantidad de alumnos por cada especialidad teniendo opcion a elegir el tipo barras o tortas. (5 puntos) d) Unir las tres opciones en una pgina principal a travs de un Frame (Divido para dos secciones verticales uno para el men y el otro para ver los resultados.

Desarrollo de Portales

-81-

Ing.Alberto Moreno C.

4.8.- Ejercicio: Listado de la tabla Clientes <html> <head> <title>Listado</title> </head> <body> <table width="754" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="103">Codigo</td> <td width="260">Nombre</td> <td width="128">Telefono</td> <td width="109">Ruc</td> <td width="154">Direccion</td> </tr> <?PHP $cn= mysql_connect("localhost");//abre una conexion $rs= mysql_db_query("Facturas","Select * From Clientes",$cn); //abre una consulta //$rs es el result (algo asi como el recordset) que guarda todos los datos de los clientes $fila=mysql_fetch_row($rs); //Aqui se avanza a la primera fila del result y se guarda en la variable Fila while($fila){ //Si no llega al final del archivo la variable Fila tomara el valor de true echo "<tr>"; echo "<td>$fila[0]</td>";//aqui imprime los datos por cada campo echo "<td>$fila[1]</td>"; echo "<td>$fila[2]</td>"; echo "<td>$fila[3]</td>"; echo "<td>$fila[4]</td>"; echo "</tr>"; $fila=mysql_fetch_row($rs); //se avanza a la sgte fila } ?> </table> <?php echo "Total Clientes ".mysql_num_rows($rs); //cantidad de registros del result mysql_free_result($rs); //libera de la memoria el rs mysql_close($cn)//cierra la conexion ?> </body> </html> NOTA: El while hecho se podria hacer tambien se la sgte manera: while($fila=mysql_fetch_row($rs)) echo "<tr>"; echo "<td>$fila[0]</td>"; echo "<td>$fila[1]</td>"; echo "</tr>"; } en todo caso con mysql_fetch_array

Desarrollo de Portales
while($fila=mysql_fetch_array($rs)){ echo "<tr>"; echo "<td>$fila[0]</td>"; echo "<td>$fila[1]</td>"; echo "</tr>"; }

-82-

Ing.Alberto Moreno C.

El resultado seria asi:

Si se desea leer un registro particular de una tabla emplear la siguiente instruccin:


Por ejemplo leer el registro 6 ( es obvio que la numeracin del registro empieza desde cero)

<html> <body> <?php $link = mysql_connect("localhost", "root", ); mysql_select_db("Facturas", $link); $result = mysql_query("SELECT * FROM Clientes", $link); echo "id: ".mysql_result($result, 6, "cli_codigo")."<br>"; echo "Nombre: ".mysql_result($result, 6, "cli_nombre")."<br>"; echo "Telefono: ".mysql_result($result, 6, "cli_telefono")."<br>"; ?>

5.- Otras funciones (Crear Base de datos desde php, controlar los errores y

como crear una tabla desde php) Ejemplo 1: Crear Base de Datos <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Documento sin t&iacute;tulo</title>

Desarrollo de Portales </head>

-83-

Ing.Alberto Moreno C.

<body> <?php $cn=mysql_connect("localhost"); //Nos conectamos if (mysql_create_db ("NuevaBD")) { //Aqui se crea una base de datos llamada NuevaBD la funcion devolvera True si lo hace bien echo "<p>Base de Datos creada con xito"; } else { echo "<br>ERROR al crear la base de datos"; echo "<br>Numero del error:".mysql_errno ();//mysql_nro muestra el numero del ultimo error ocurrido echo "<br>Descripcion del error:".mysql_error ();//mysql_error muestra la descricpion del ultimo error ocurrido } ?> </body> </html> Ejemplo 2: Crear tablas <?php $cn= mysql_connect("localhost");//abre una conexion $cad= "Create table Distrito (Cod int,Nom varchar(2))"; $rs= mysql_db_query("Facturas",$cad,$cn); if($rs){ echo "la tabla se hacreado con exito"; }else{ echo "<br>ERROR :".mysql_error (); } ?> NOTA: Si nos damos cuenta la funcion MYSQL_DB_QUERY podra ejecutar cualquier instruccin SQL osea que podremos ingresar datos, eliminar, crear tablas, etc. 6.- Ejercicios de Aplicacin 6.1.- Consulta Con parmetro en Diferente paginas
En una pagina tener un combo con todos los clientes y al escoger se debe de mostrar en otra paginas las facturas de ese cliente Listacli.PHP <html> <head> </head> <body> <form name="form1" method="post" action=""> Seleccione Cliente : <select name="cbocliente" id="cbocliente"> <option value="1">Seleccione Cliente</option> <?php $cn=mysql_connect("localhost");

Desarrollo de Portales

-84-

Ing.Alberto Moreno C.

$rs=mysql_db_query("facturas","Select * from Clientes",$cn); while($fila=mysql_fetch_row($rs)){ echo "<option value='$fila[0]'>$fila[1]</option>"; } mysql_free_result($rs); mysql_close($cn); ?> </select> <input type="submit" name="Submit" value="Enviar"> </form> </body> </html> En esta pagina nos recorremos el result(RS) y por cada fila que vemos le aumentamos un elemento al combo(option) dndole como etiqueta el campo1 osea el nombre y el valor sera el campo0 osea el codigo En el action del formulario ponemos FacCli.PHP. Es en esa pagina donde vamos a recuperar el valor del combo(cbocliente) La pagina quedaria asi:

FacCli.PHP En esta pagina se recibira el valor del combo y lo guardaremos en la variable COD luego en una variable cad se guardara el select de las facturas del cliente que se escogio, el resto ya lo sabemos. Facil no??? <body> <table width="284" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="133">Numero de Factura </td> <td width="151">Fecha de Fatura </td> </tr> <?php $cn=mysql_connect("localhost"); $cod=$_POST["cbocliente"]; $cad="Select Fac_numero,Fac_fecha from Fac_cabe where cli_codigo='$cod'"; $rs=mysql_db_query("facturas","Select * from Clientes",$cn); while($fila=mysql_fetch_row($rs)){ echo "<tr>"; echo "<td>$fila[0]</td>"; echo "<td>$fila[1]</td>";

Desarrollo de Portales
echo "</tr>"; } mysql_free_result($rs); mysql_close($cn); ?> </table> </body>

-85-

Ing.Alberto Moreno C.

6.2.- Consulta Con parmetro en la misma pagina Factura.php Se debe de cargar en un combo todas las facturas al escoger una factura se debe de llamar a la misma pagina y mostrar el detalle de esa factura <html> <head> </head> <script language="javascript"> function envia(){ document.location.href="factura.php?num=" + form1.cbofactura.value; } </script> <body> <form name="form1" method="post" action=""> <p>Seleccione Factura: <select name="cbofactura" onChange="envia();"> <option value="1">Seleccione Factura</option> <?php $cn=mysql_connect("localhost"); $rs=mysql_db_query("facturas","Select Fac_Numero from Fac_cabe",$cn); while($fila=mysql_fetch_row($rs)){ echo "<option value='$fila[0]'>$fila[0]</option>"; } mysql_free_result($rs); ?> </select> </select> </p> <table width="513" border="1" cellspacing="0" cellpadding="0"> <tr> <td width="245">Articulo</td> <td width="83">Precio</td> <td width="80">Cantidad</td> <td width="95">Monto</td> </tr> <?php $fac = $_GET["num"]; $cad="Select A.art_nombre,A.art_precio,D.art_cantidad,(A.art_precio*D.art_cantidad)". "From Articulos as A,Fac_deta as D Where A.art_codigo=D.art_codigo ". "and D.Fac_numero='$fac'"; $rs=mysql_db_query("facturas",$cad,$cn); while($fila=mysql_fetch_row($rs)){ echo "<tr>";

Desarrollo de Portales
echo "<td>$fila[0]</td>"; echo "<td>$fila[1]</td>"; echo "<td>$fila[2]</td>"; echo "<td>$fila[3]</td>"; echo "</tr>"; } mysql_free_result($rs); mysql_close($cn); ?> </table> </form> </body> </html>

-86-

Ing.Alberto Moreno C.

Vamos a analizar algunas cosas: La funcion en Javascript ENVIA tiene como finalidad llamar a la misma pagina Factura.php document.location.href="factura.php?num=" + form1.cbofactura.value; aqui se esta enviando un parametro llamado num el cual tendra el valor del combo Esta funcion sera llamada cuando se escoja un elemento en el combo <select name="cbofactura" onChange="envia();"> Ahora para llenar la tabla con el detalle de la factura primero recuperamos el numero de factura $fac = $_GET["num"]; Ahora para solo mostrar el detalle de la factura seleccionada hacemos el select $cad ="Select A.art_nombre,A.art_precio,D.art_cantidad,(A.art_precio*D.art_cantidad) as monto ". "From Articulos as A,Fac_deta as D Where A.art_codigo=D.art_codigo ". "and D.Fac_numero='$fac'"; Noten que se pone . para concatenar y la condicion es donde el numero de factura sea = a fac osea al valor recuperado del combo Bueno lo que viene ya es lo mismo de los anteriores ejercicios El resultado seria asi:

6.3.- Agregar Registros a la tabla clientes

Desarrollo de Portales

-87-

Ing.Alberto Moreno C.
Ingreso.HTML En esta pagina se ingresara los datos a grabar asi que no es necesario que sea PHP lo unico que hay que tener en cuenta es que en ACTION del formulario debemos de poner el nombre de la pagina a la cual vamos a enviar los datos en este caso GRABA.PHP

Graba.PHP Esta pagina se encarga de grabar los datos. <body> <?php $cn= mysql_connect("localhost"); //Aqui recuperamos los datos de la pagina ingreso.html $cod = $_POST["txtcod"]; $nom = $_POST["txtnom"]; $tel = $_POST["txttele"]; $ruc = $_POST["txtruc"]; $dir = $_POST["txtdir"]; $cad= "insert into Clientes values('$cod','$nom',$tel,$ruc,'$dir')"; $rs= mysql_db_query("Facturas",$cad,$cn); if($rs){ echo "Se grabaron los datos Correctamente"; }else{ echo "No se pudo grabar los datos :".mysql_error (); } ?> </body> 6.4.- Consulta con Hipervnculos En una pagina debe de salir un listado con todo los clientes en el cual el codigo del cliente tendr un hipervnculo a otra pagina en la cual se mostrara los datos de ese cliente ListaClientes.PHP Esta pagina es idntica a la del ejercicio 6.1 con la diferencia que le vamos a poner un hipervinculo a cada codigo <body> <table width="754" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="103">Codigo</td> <td width="260">Nombre</td> <td width="128">Telefono</td> <td width="109">Ruc</td> <td width="154">Direccion</td> </tr> <?PHP

Desarrollo de Portales

-88-

Ing.Alberto Moreno C.

$cn= mysql_connect("localhost"); $rs= mysql_db_query("Facturas","Select * From Clientes",$cn); $fila=mysql_fetch_row($rs); while($fila){ echo "<tr>"; echo "<td><a href='ResulClientes.php?codcli=$fila[0]'>$fila[0]<a/></td>"; echo "<td>$fila[1]</td>"; echo "<td>$fila[2]</td>"; echo "<td>$fila[3]</td>"; echo "<td>$fila[4]</td>"; echo "</tr>"; $fila=mysql_fetch_row($rs); //se avanza a la sgte fila } ?> </table> <?php mysql_free_result($rs); //libera de la memoria el rs mysql_close($cn)//cierra la conexion ?> </body> Aqu lo nuevo es esto: echo "<td><a href='ResulClientes.php?codcli=$fila[0]'>$fila[0]<a/></td>"; pero si vemos se esta llamando a la pagina resultclientes y se esta enviando como parmetro una variable llamada codcli que contendra el codigo el cliente

ResulClientes.PHP <html> <head> <title>Documento sin t&iacute;tulo</title> </head> <?php $cn=mysql_connect("localhost"); $cod=$_GET["codcli"]; $cad="Select * from clientes where cli_codigo='$cod'"; $rs= mysql_db_query("Facturas",$cad,$cn); $fila=mysql_fetch_row($rs); if($fila){ $nom =$fila[1]; $tel =$fila[2];

Desarrollo de Portales

-89-

Ing.Alberto Moreno C.

?> <body> <table width="258" border="1" cellspacing="0" cellpadding="0"> <tr> <td width="107">Codigo:</td> <td width="145"><input name="txtcod" type="text" id="txtcod" value="<?php echo $cod;?>"></td> </tr> <tr> <td>Nombre:</td> <td><input name="txtnom" type="text" id="txtnom" value="<?php echo $nom;?>"></td> </tr> <tr> <td>Telefono:</td> <td><input name="txttele" type="text" id="txttele" value="<?php echo $tel;?>"></td> </tr> </table> <?php }else{ echo "No se Encontro ningun cliente"; } ?> </body> </html> Aqu se hace la conexin despus se recupera el parmetro codcli osea el codigo del cliente que se escogio y se guarda en cod Luego hacemos el select de la tabla clientes pero solo donde el codigo sea igual al codigo recuperado Despus en la variable fila guardamos el primer registro del RS si fila es igual a true quiere decir que si encontro un registro, caso contario no encontro ningun registro Ahora hay que fijarse donde se esta cerrando el If por que solo si hay datos debe de mostrarse los textos.

Desarrollo de Portales

-90-

Ing.Alberto Moreno C.

Resumen de las Instrucciones empleadas a nivel de BDD mysql_affected_rows -- Devuelve el nmero de filas afectadas de la ltima operacin MySQL mysql_change_user -- Cambia el usuario conectado en la conexin activa mysql_client_encoding -- Devuelve el nombre del juego de caracteres mysql_close -- cierra el enlace con MySQL mysql_connect -- Abre una conexin a un servidor MySQL mysql_create_db -- Crea una base MySQL mysql_data_seek -- Mueve el puntero interno mysql_db_name -- Obtener datos de resultado mysql_db_query -- Envia una sentencia MySQL al servidor mysql_drop_db -- Borra una base de datos MySQL mysql_errno -- Deuelve el nmero del mensaje de error de la ltima operacin MySQL mysql_error -- Devuelve el texto del mensaje de error de la ltima operacin MySQL mysql_escape_string -- Escapa una cadena para su uso en mysql_query mysql_fetch_array -- Extrae la fila de resultado como una matriz asociativa, una matriz numrica o ambas mysql_fetch_assoc -- Recupera una fila de resultado como una matriz asociativa mysql_fetch_field -- Extrae la informacin de una columna y la devuelve como un objeto. mysql_fetch_lengths -- Devuelve la longitud de cada salida en un resultado mysql_fetch_object -- Extrae una fila de resultado como un objeto mysql_fetch_row -- Devuelve una fila de resultado como matriz mysql_field_flags -- Devuelve las banderas asociados con el campo especficado en un resultado mysql_field_len -- Devuelve la longitud del campo especficado mysql_field_name -- Devuelve el nombre del campo especficado en un resultado mysql_field_seek -- Asigna el puntero del resultado al offset del campo especficado mysql_field_table -- Devuelve el nombre de la tabla donde est el campo especficado mysql_field_type -- Devuelve el tipo del campo especficado en un resultado mysql_free_result -- Libera la memoria del resultado mysql_get_client_info -- Obtener informacin del cliente MySQL mysql_get_host_info -- Obtener informacin de la mquina anfitriona MySQL mysql_get_proto_info -- Obtener informacin del protocolo MySQL mysql_get_server_info -- Obtener informacin del servidor MySQL mysql_info -- Obtiene informacin sobre la consulta ms reciente mysql_insert_id -- Devuelve el identificador generado en la ltima llamada a INSERT mysql_list_dbs -- Lista las bases de datos disponibles en el servidor MySQL mysql_list_fields -- Lista los campos del resultado de MySQL mysql_list_processes -- Lista los procesos MySQL mysql_list_tables -- Lista las tablas en una base de datos MySQL mysql_num_fields -- devuelve el nmero de campos de un resultado mysql_num_rows -- Devuelve el nmero de filas de un resultado mysql_pconnect -- Abre una conexin persistente al servidor MySQL

Desarrollo de Portales -91Ing.Alberto Moreno C. mysql_ping -- Efectuar un chequeo de respuesta (ping) sobre una conexin de servidor o reconectarse si no hay conexin mysql_query -- Enva una consulta de MySQL mysql_real_escape_string -- Escapa caracteres especiales de una cadena para su uso en una sentencia SQL mysql_result -- Devuelve datos de un resultado mysql_select_db -- Selecciona un base de datos MySQL mysql_stat -- Obtener el status actual del sistema mysql_tablename -- Devuelve el nombre de la tabla de un campo mysql_thread_id -- Devuelve el ID del hilo actual mysql_unbuffered_query -- Enva una consulta SQL a MySQL, sin recuperar ni colocar en bfer las filas de resultado

Aplicaciones
Una consulta en cascada empleando la BDD BDFACTURA ,como se muestra en la figura

<?php

Desarrollo de Portales

-92-

Ing.Alberto Moreno C.

$cbocliente = $_POST['cbocliente']; $cbofactura = $_POST['cbofactura']; $conexio = mysql_connect("localhost","root",""); mysql_select_db ("bdfactura", $conexio) OR die ("No se puede conectar"); $sql="SELECT * FROM Clientes"; $rs=mysql_query($sql,$conexio); ?> <html> <body> <form action="cascada.php" method="POST" name='frm1'> <table border='1'> <tr><td><b>Seleccione un cliente:</b></td> <td> <select name='cbocliente' onChange="frm1.submit();"> <option value=''>-selecciona-</option> <? while($fila=mysql_fetch_array($rs)) { ?> <? if ($cbocliente==$fila[0]) { ?> <option value='<? echo $fila[0]; ?>' selected><? echo $fila[1]; ?></option> <? } else { ?> <option value='<? echo $fila[0]; ?>'><? echo $fila[1]; ?></option> <? } ?> <? } ?> </select> </td> </tr> <tr> <td><b>Facturas del codigo :</b></td> <td> <? $sql="SELECT * FROM Fac_cabe where cli_codigo='". $cbocliente ."'"; $rs2=mysql_query($sql,$conexio); ?> <select name='cbofactura' onChange="frm1.submit();"> <option value=''>-selecciona-</option> <? while($fila2=mysql_fetch_array($rs2)) { ?> <? if ($cbofactura==$fila2[0]) { ?> <option value='<? echo $fila2[0]; ?>' selected><? echo $fila2[0]; ?></option> <? } else { ?> <option value='<? echo $fila2[0]; ?>'><? echo $fila2[0]; ?></option> <? } ?> <? } ?> </select> </td> </tr> </table> <? $sql="SELECT * FROM Fac_deta where fac_numero='". $cbofactura ."'"; $rs3=mysql_query($sql,$conexio); ?> <h3>Detalle de la factura <? echo $cbofactura ?></h3>

Desarrollo de Portales

-93-

Ing.Alberto Moreno C.

<table border="1"> <tr> <? for($i=0;$i<= mysql_num_fields($rs3) - 1 ;$i++) { ?> <th><? echo mysql_field_name($rs3,$i); ?></th> <? }?> </tr> <? while($fila3=mysql_fetch_array($rs3)) { ?> <tr> <? for($i=0;$i<=mysql_num_fields($rs3)-1;$i++) { ?> <td><? echo $fila3[$i]; ?></td> <? }?> </tr> <? }?> </table> </form> </body> </html>

aplicacion2 .- consulta en cascada lista desplegables y tablas, como se muestra en la figura:

Codificacin:
<html>

Desarrollo de Portales

-94-

Ing.Alberto Moreno C.

<?php $xcod=$_GET["cli"]; if($xcod==""){ $xcod=$_POST["cbcli"]; } $xfac=$_GET["cbfac"]; $conexio = mysql_connect("localhost","",""); mysql_select_db ("bdfactura", $conexio) OR die ("No se puede conectar"); $X="SELECT * FROM Clientes"; $rs=mysql_query($X,$conexio); $x1="select * from fac_cabe where cli_codigo='$xcod'"; $rs1=mysql_query($x1,$conexio); if($xcod){ $xcli="select cli_nombre,cli_direccion from clientes where cli_codigo = '$xcod'"; $rscli=mysql_query($xcli,$conexio); $filacli=mysql_fetch_array($rscli); $nom=$filacli[0]; $dir=$filacli[1]; } $x2="SELECT a.art_nombre as 'Descripcion', "; $x2=$x2 . "a.art_precio as 'Precio', "; $x2=$x2 . "d.art_cantidad as 'Cantidad', "; $x2=$x2 . "(a.art_precio*d.art_cantidad) as 'Total' "; $x2=$x2 . "FROM fac_deta d,articulos a "; $x2=$x2 . "where a.art_codigo=d.art_codigo "; $x2=$x2 . "and d.fac_numero ='$xfac'"; $rs2=mysql_query($x2,$conexio); ?> <body> <form name="frm1" action="cascada2.php" method="post"> <fieldset> <legend> <b>Seleccione un cliente</b></legend> <table> <tr> <td rowspan='2'> <select name="cbcli" onchange="frm1.submit();"> <option value=''>-selecciona-</option> <? while($fila=mysql_fetch_array($rs)) { ?> <? if($fila[0]==$xcod){ ?> <option value='<? echo $fila[0]; ?>' selected><? echo $fila[1]; ?></option> <? } else { ?> <option value='<? echo $fila[0]; ?>'><? echo $fila[1]; ?></option> <? } ?> <? } ?> </select> </td> <td><b>Apellidos y Nombres:</b><input type=text name=txtnombre value="<?=$nom; ?>"></td> <td rowspan='2'>

Desarrollo de Portales

-95-

Ing.Alberto Moreno C.

<img src='E:\Documents and Settings\Administrador.A7_01\Escritorio\fOTOS\<?=$xcod; ?>.jpg' height=80 width=72> </td> </tr> <tr> <td><b>Direccion:</b><input type=text name=direccion value="<?=$dir; ?>"></td> </tr> </table> </fieldset><br> <table border="1"> <tr> <th> fac_numero</th> <th> fac_fecha</th> <th> cli_codigo</th> <th> fac_igv</th> </tr> <? while($fila1=mysql_fetch_array($rs1)) { ?> <? if($fila1[0]==$xfac){ ?> <tr bgcolor='blue'> <td><a href='cascada2.php?cli=<?=$xcod; ?>&cbfac=<?=trim($fila1[0]) ;?>'><?=trim($fila1[0]) ;?></a></td> <td><?=trim($fila1[1]) ;?></td> <td><?=trim($fila1[2]) ;?></td> <td><?=trim($fila1[3]) ;?></td> </tr> <? }else{ ?> <tr> <td><a href='cascada2.php?cli=<?=$xcod; ?>&cbfac=<?=trim($fila1[0]) ;?>'><?=trim($fila1[0]) ;?></a></td> <td><?=trim($fila1[1]) ;?></td> <td><?=trim($fila1[2]) ;?></td> <td><?=trim($fila1[3]) ;?></td> </tr> <? } ?> <? } ?> </table><br> <table border="1"> <tr> <? for($i=0;$i<= mysql_num_fields($rs2) - 1 ;$i++) { ?> <th><? echo mysql_field_name($rs2,$i); ?></th> <? }?> </tr> <? while($fila3=mysql_fetch_array($rs2)) { ?> <tr> <? for($i=0;$i<=mysql_num_fields($rs2)-1;$i++) { ?> <td><? echo $fila3[$i]; ?></td> <? }?> </tr> <? }?>

Desarrollo de Portales
</table> </form> </body> </HTML>

-96-

Ing.Alberto Moreno C.

PRACTICA CONTINUA 5 CUENTA CORRIENTE EN PHP 2.- Se tiene la BDD ->BDBANCO con las tablas: Cuentas Nrocta ( C ) Idcliente ( C) TipoCuenta (D=Dlar S=Soles) Saldo (n)
Movimientos

Idoperacion NroCta TipoMov( D=deposito,R=reti ro) Monto (N) Fecha (D)

Clientes Idcliente ( C ) Nomcli ( C) DNI (C) TELF (C) Ingresos ( N)

a) Realizar un mantenimiento en lnea para la tabla clientes , (Editar, actualizar ,cancelar, eliminar ) . - El codigo del cliente se genera a partir 10001 - Validar los datos en nombre(solo ingresar letras y espacios) - DNI (mximo ingresar 8 digitos) - Telefono (mximo 9 digitos) - La anulacin y edicin es mediante el numero de cuenta ListaCliente.Php

AdiCliente.PHP

Desarrollo de Portales

-97-

Ing.Alberto Moreno C.

b)Cuando se hace clic en una cuenta va mostrar el siguiente formulario , tngase en cuenta que un cliente puede tener 2 nmeros de cuenta(para soles y dlares)

El cdigo del Cliente se trae de la pagina anterior, el numero de cuenta se genera (7 caracteres) , los cinco primeros caracteres es el cdigo del cliente y el sptimo carcter es 1 si es dlar y 2 si es soles, en caso que ya exista las cuentas , al hacer clic en Del borra el numero de cuenta

c) realizar la consulta de una cuenta mediante:

Nro de Cuenta no existe

En Caso que el numero de cuenta no exista mostrar un mensaje de error, en caso que exista muestre la otra pagina pintando los montos depositados en Azul y los retiros en rojo

Desarrollo de Portales

-98-

Ing.Alberto Moreno C.

2.El numero de operacin se genera a partir de 1, solo se ingresa el monto de operacin y el tipo de operacin , calculando automticamente el saldo actual. Adems mostrar un mensaje de error saldo no disponible en caso que el retiro sea mayor a su saldo. Al confirmar la operacin se debe actualizar el saldo.

Desarrollo de Portales

-99-

Ing.Alberto Moreno C.

EMPLEANDO CLASES: Manteniemiento de Una Tabla Se crean tres archivos de php: -bdclientes -insertar -listado Adems se crea una base de datos BDClientes con las tablas: Y la tabla Clientes con los siguientes registros.

Se genera con el siguiente script


CREATE TABLE `clientes` ( `dni` CHAR( 8 ) NOT NULL , `nombre` VARCHAR( 50 ) NOT NULL , `direccion` VARCHAR( 50 ) NOT NULL , `edad` INT( 4 ) NOT NULL , `correo` VARCHAR( 50 ) NOT NULL , PRIMARY KEY ( `dni` ) ); E insertamos un registro:

Desarrollo de Portales

-100-

Ing.Alberto Moreno C.

Y grabamos su script:
INSERT INTO `clientes` ( `dni` , `nombre` , `direccion` , `edad` , `correo` ) VALUES ( '11111111', 'Miguel Grau', 'Av Grau 454', '50', 'mgrau@hotmail.com' );

Desarrollo de Portales
Codificacin empleando Clases:

-101-

Ing.Alberto Moreno C.

Bdclases.php <?php class bdclientes{ var $cn; var $bd; function bdclientes(){ $servidor="localhost"; $usuario="root"; $clave=""; @$this->cn=mysql_pconnect($servidor,$usuario,$clave) or die("Error de conexion"); $this->bd="bdclientes"; mysql_select_db($this->bd,$this->cn) or die("Error de conexion"); } function insertar($v1,$v2,$v3,$v4,$v5){ if(!empty($v1) && !empty($v2) && !empty($v3) && !empty($v4) && !empty($v5)){ $sql="insert into clientes values ('$v1','$v2','$v3','$v4','$v5')"; $rs=mysql_query($sql,$this->cn) or die ("Consulta no realizadaxxx"); return $rs; } } function listado($campo){ $sql="select * from `clientes` order by $campo"; $rs=mysql_query($sql,$this->cn) or die ("Consulta no realizada"); $t=""; while($filas=mysql_fetch_assoc($rs)){ $c=$filas["dni"]; $t=$t."<tr>"; $t=$t."<td><input type=\"checkbox\" name=\"chk$c\" value=\"$c\"></td>"; $t=$t."<td>".$c."</td>"; $t=$t."<td>".$filas["nombre"]."</td>"; $t=$t."<td>".$filas["direccion"]."</td>"; $t=$t."<td>".$filas["edad"]."</td>"; $t=$t."<td>".$filas["correo"]."</td>"; $t=$t."<td><a href=\"modificar.php?modifica=$c\">Modificar</a></td>"; $t=$t."<td><a href=\"javascript:elimina('$c')\">Eliminar</a></td>"; $t=$t."</tr>"; } return $t; }

Desarrollo de Portales

-102-

Ing.Alberto Moreno C.

function modificar($v1,$v2,$v3,$v4,$v5){ if(!empty($v1) && !empty($v2) && !empty($v3) && !empty($v4) && !empty($v5)){ $sql="update clientes set nombre='$v2', direccion='$v3', edad=$v4 ,correo='$v5' where dni='$v1'"; $rs=mysql_query($sql,$this->cn) or die ("Consulta no realizada"); return $rs; } } function buscar($c){ $sql="select * from clientes where dni='$c'"; $rs=mysql_query($sql,$this->cn); $filas=mysql_fetch_assoc($rs); return $filas; } function elimina($v1){ $sql="delete from clientes where dni='$v1'"; $rs=mysql_query($sql,$this->cn); return $rs; } function mensaje($msg){ $cad=""; $cad=$cad."<script language =\"javascript\">"; $cad=$cad."alert(\"$msg\");"; $cad=$cad."</script>"; return $cad; } function login($u,$p){ $sql="select dni, nombre from clientes where dni='$p' and nombre='$u'"; $rs=mysql_query($sql,$this->cn); $nfilas=mysql_num_rows($rs);//retorna la cantidad de filas de de una consulta return $nfilas; } } ?>

insertar.php <?php include ("bdclases.php")?> <?php session_start(); if(!isset($_SESSION["usuario"])){ header("location:login.php"); exit;

Desarrollo de Portales

-103-

Ing.Alberto Moreno C.

} $salir=$_SERVER['PHP_SELF']."?cerrar=ok"; //$_SERVER['PHP_SELF'] es el nombre del mismo nombre del archivo activo if(isset($_GET["cerrar"]) && $_GET["cerrar"]=="ok"){ //para salir se pregunta si existe un valor en cerrar y si este es "ok" session_unregister("usuario");//se limpia el registro header("location:login.php"); exit; } $obj=new bdclientes; $msg=""; if(isset($_POST["txtdni"])){ if($obj->insertar( $_POST["txtdni"], $_POST["txtnombre"], $_POST["txtdireccion"], $_POST["txtedad"], $_POST["txtcorreo"])){ header("location:listado.php"); }else{ $msg=$obj->mensaje("Datos incompletos"); } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Documento sin t&iacute;tulo</title> <style type="text/css"> <!-.Estilo1 { color: #006633; font-weight: bold; } body { background-image: url(); background-color: #FFFFFF; } .Estilo17 {color: #FF0000; font-weight: bold; font-size: 36px; } .Estilo18 {font-size: 18px} .Estilo27 {color: #000000} .Estilo28 {font-size: 12px; color: #000000; font-weight: bold; font-family: Arial, Helvetica, sans-serif; } --> </style> </head> <body onload="document.form1.txtdni.focus();"> <?php echo $msg; ?> <p align="center" class="Estilo17 Estilo27">Insertar nuevo cliente</p> <p align="right" class="Estilo17 Estilo27"><a href="<?php echo $salir ?>"><img src="cs.gif" alt="Salir" width="100" height="19" border="0"></a></p>

Desarrollo de Portales

-104-

Ing.Alberto Moreno C.

<form name="form1" method="post" action=""> <table width="450" border="0" align="center" cellpadding="0" cellspacing="2"> <tr bgcolor="#0099FF"> <td colspan="2">&nbsp;</td> </tr> <tr> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td><div align="right" class="Estilo28">DNI&nbsp;&nbsp;</div></td> <td>&nbsp; <input name="txtdni" type="text" id="txtdni" size="10" maxlength="8"></td> </tr> <tr> <td><div align="right" class="Estilo28">Nombre&nbsp;&nbsp;</div></td> <td>&nbsp; <input name="txtnombre" type="text" id="txtnombre"></td> </tr> <tr> <td><div align="right" class="Estilo28">Direccion&nbsp;&nbsp;</div></td> <td>&nbsp; <input name="txtdireccion" type="text" id="txtdireccion"></td> </tr> <tr> <td><div align="right" class="Estilo28">Edad&nbsp;&nbsp;</div></td> <td>&nbsp; <input name="txtedad" type="text" id="txtedad" size="5" maxlength="3"></td> </tr> <tr> <td><div align="right" class="Estilo28">Correo&nbsp;&nbsp;</div></td> <td>&nbsp; <input name="txtcorreo" type="text" id="txtcorreo"></td> </tr> <tr> <td><div align="right"><span class="Estilo18"> <input name="Submit" type="submit" value="Insertar"> </span></div></td> <td>&nbsp; <input name="Submit" type="submit" value="Limpiar"> &nbsp; <input name="Submit" type="button" onClick="window.location='listado.php';" value="Cancelar"></td> </tr> <tr> <td><div align="right" class="Estilo18"> </div></td> <td>&nbsp;</td> </tr> <tr bgcolor="#009AFF"> <td colspan="2">&nbsp;</td> </tr> </table>

Desarrollo de Portales
</form> <p class="Estilo1">&nbsp;</p> </body> </html>

-105-

Ing.Alberto Moreno C.

listado.php <?php include("bdclases.php"); ?> <?php session_start(); if(!isset($_SESSION["usuario"])){ header("location:login.php"); exit; } $salir=$_SERVER['PHP_SELF']."?cerrar=ok"; //$_SERVER['PHP_SELF'] es el nombre del mismo nombre del archivo activo if(isset($_GET["cerrar"]) && $_GET["cerrar"]=="ok"){ //para salir se pregunta si existe un valor en cerrar y si este es "ok" session_unregister("usuario");//se limpia el registro header("location:login.php"); exit; } $obj=new bdclientes; if(isset($_GET["dni"])){ $obj->elimina($_GET["dni"]); } $campo="dni"; //siguiente clase $tabla=$obj->listado($campo); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Documento sin t&iacute;tulo</title> <style type="text/css"> <!-.Estilo1 { font-size: 12px; font-weight: bold; color: #0000FF; } --> </style> </head> <script language="JavaScript" type="text/JavaScript"> //alert : ventana de dialogo que muestra un mensaje //confirm : ventana de dialogo que permite realizar una confirmacion //prompt : ventana de dialogo que permite ingresar valores por teclado function elimina(dni){ if(window.confirm("Estas seguro de eliminar el registro?")){ alert(dni); window.location="listado.php?dni="+dni;

Desarrollo de Portales
} } </script>

-106-

Ing.Alberto Moreno C.

<body> <h1 align="center">Listado de clientes registrados</h1> <p align="right"><a href="<?php echo $salir ?>"><img src="cs.gif" alt="Salir" width="100" height="19" border="0"></a><span class="Estilo1"> </span></p> <form name="form1" method="post" action=""> <table width="600" border="1" align="center" cellpadding="2" cellspacing="0"> <tr> <td>&nbsp;</td> <td><strong>DNI</strong></td> <td><strong>Nombre</strong></td> <td><strong>Direccion</strong></td> <td><strong>Edad</strong></td> <td><strong><a href="<?php echo $correo ?>">Correo</a></strong></td> <td><strong>Modificar</strong></td> <td><strong>Eliminar</strong></td> </tr> <?php echo $tabla ?> <tr> <td colspan="8"><input name="Submit" type="button" onClick="window.location='insertar.php';" value="Agregar nuevo cliente"> <input type="submit" name="Submit" value="Elimina"></td> </tr> </table> </form> <p>&nbsp;</p> </body> </html> Nota.- La modificacin es similar a la adicion

Desarrollo de Portales -107Ing.Alberto Moreno C. PRACTICA CONTINUA 6 ELABORACIN DE EXAMENES MECANIZADOS Objetivo.- Empleando clases , Store Procedure en Mysql y graficos Elaborar un examen mecanizado de cualquier curso : las tablas sern proporcionadas por el instructor aunque Ud. Puede tambin Modificarlas con Criterio: Las pantallas por ejemplo para examen mecanizado de un Lenguaje de Programacin: 1.- Primero el alumno ingresara su cdigo mediante el siguiente formato, sino existe mostrara en una ventana cdigo no existe por dos segundos volviendo a mostrar la pantalla Inicial.: Fig. 1

El examen durar un cierto tiempo, si no logra terminar automticamente , se cerrara la ventana, mostrando su resultado del examen.. Adems se debe contemplar, si un alumno ya dio un examen, tambin debe mostrar un mensaje de error en una ventana.

Fig 2.0 Debe mostrar las preguntas del curso, las opciones depender la tabla preguntas mximo tendr un cierto tiempo de duracin llevndolo automticamente hacia otra pagina de resultados.

Desarrollo de Portales

-108-

Ing.Alberto Moreno C.

Al final de todas las preguntas hay un botn enviar 3.- Para evaluar el examen, la nota ser en base a 20 , no importando las cantidad de preguntas que se haga, este resultado ser almacenado en la tabla de notas y mostrando la siguiente pantalla:

Desarrollo de Portales

-109-

Ing.Alberto Moreno C.

5.- Mostrar el resultado del examen ordenados de por nota de forma descendente

6.- La entrada de preguntas se har a travs de un formulario. Se har mediante el siguiente formulario, la cantidad mximo de opciones es de cinco , habr preguntas que puedan tener 3 ,4 y 5 opciones .

Desarrollo de Portales

-110-

Ing.Alberto Moreno C.

Elabore un store procedure para grabar 7.- Elaborar un Grafico para mostrar la cantidad de alumnos aprobados y desaprobados en las siguientes escalas alumnos cuya nota estn entre 0-5,610,11-14 y 15-20 Las tablas: Alumno

Notas

Respuestas

Desarrollo de Portales

-111-

Ing.Alberto Moreno C.

Curso

Preguntas

Desarrollo de Portales -112CAPITULO DE GRAFICOS

Ing.Alberto Moreno C.

La Clase Graph.- La clase del Grfico es la clase de la fuente principal para todo grafico de eje x,y, Ud. siempre debe instanciar la clase para crear un grfico. A travs de esta clase uno controla muchas escenas globales de la imagen desplegadas. Propiedades publicas:
Nombre Tipo Description

xaxis yaxis xgrid ygrid legend title subtitle subsubtitle tabtitle img

Axis Axis Grid Grid Legend Text Text Text

X-axis Y-axis Lineas Cuadriculas para X-axis Lineas Cuadriculas para Y-axis Propiedades de la caja de leyendas Titulo principal SubTitulo Sub title

GraphTabTitle Option Tab title for graph RotImage The image canvas

Nota.- Para elaborar graficos en php, se debe primero colocar una carpeta Graph que contiene todas las funciones graficas, que seran incluidas en nuestra pagina. Metodos de Clases

Cada parcela que debe desplegarse dentro del grfico tiene que ser agregada al grfico. ste es el mtodo principal para agregar el objeto. Usted puede usar este mtodo para agregar : Las parcelas Los textos Las lneas de la parcela Ejemplo:
Example //instancia una variable grafica $graph = new Graph(300,200,"auto"); $graph->img->SetMargin(40,30,20,40); $graph->SetScale("textlin"); $graph->SetShadow(); // Crea una barra de graficos $bplot = new BarPlot($datay); $bplot->SetFillColor("orange"); $graph->Add($bplot); // Displaya el grafico $graph->Stroke();

Objeto->SetFont(tipo_letra, Estilo, Tamao).- define el tipo de letras para los titulos, valores en el eje X,Y (en barras) y porcentajes en graficos tipo torta.

Desarrollo de Portales -113Ing.Alberto Moreno C. Tipo: estas definidos por las constantes o tambin pueden ser nmeros: FF_COURIER =10; FF_VERDANA=1 1; FF_TIMES"=12; FF_COMIC=14; FF_ARIAL=15; FF_GEORGIA=16; FF_TREBUCHE=17; // Los estilos puden ser las constantes o nmeros : FS_NORMAL=9001 FS_BOLD=9002 FS_ITALIC=9003 FS_BOLDIT=9004 FS_BOLDITALIC=9004 Grafico->SetTheme( sand ).- el estilo o presentacion del grafico variando el color de los segmentos del Pie y pueden ser: sand, pastel, earth, water grafico->ExplodeSlice(valor).- resalta el segmento de torta indicado por el valor que empieza de 0. grafico->setCenter(fraccion) es un valor de 0-1 , establece la posicin respecto al ejex donde se va ubicar el centro del Pie Grafico->SetSize(valor).- Define el tamao del pie esta expresado en porcentajes Va desde 20-300 $entorno=new PieGraph(ancho, altura, auto ) .- crea el entorno grafico, el cuadro principal donde se va insertar el Pie define el ancho y altura expresado en pixels , adems hay un ajuste de escalas automticas $grafico->Setcolor(color) .- define el color para el titulo , los valores los valores pueden ser constantes o valores hexadecimales.

Desarrollo de Portales CAPITULO DE GRAFICOS: 1.- Alumnos por especialidad

-114-

Ing.Alberto Moreno C.

o al Hacer un click en grafico de Torta:

Cdigos para mostrar la lista de Especialidades: <table border=0> <tr><td> <? session_start(); $cn=mysql_connect("localhost","root"); mysql_select_db("universidad",$cn); $rs=mysql_query("select a.idesp, count(*) as cantidad from alumno a inner join especialidad b on a.idesp=b.idesp group by a.idesp",$cn); echo "<table border=1>"; echo "<tr><td>Especialidad<td>Cantidad"; $c=0; while($f=mysql_fetch_row($rs))

Desarrollo de Portales -115Ing.Alberto Moreno C. { $vec1[$c]=$f[0]; $vec2[$c]=$f[1]; echo "<tr><td>$f[0]<td>$f[1]"; $c++; } $_SESSION['data']=$vec2; $_SESSION['cad']=$vec1; ?> </table> <a href='barras.php' target="vista">Grafico Barras</a>&nbsp;&nbsp;&nbsp; <a href='Torta.php' target="vista">Grafico Torta</a> <td><iframe frameborder="0" height="400" width="450" name="vista"> </iframe></td> Codigo para mostrar el grafico: <?php session_start(); //Recuperar datos de la session de la pagina anterior $datax=$_SESSION['cad']; $datay=$_SESSION['data']; //incluir las librerias graficas include("graph/jpgraph.php"); include("graph/jpgraph_bar.php"); $graph = new Graph(410,350,'auto'); $graph->SetScale("textlin"); $graph->img->SetMargin(60,30,50,40); $graph->SetShadow(); // Crear la barra de datos $bplot = new BarPlot($datay); $bplot->SetFillColor("orange"); $bplot->SetShadow(); //$bplot->value->SetFormat(" $ %2.1f",70); $bplot->value->SetFont(FF_ARIAL,FS_NORMAL,9); $bplot->value->SetColor("blue"); $bplot->value->Show(); $graph->Add($bplot); $graph->title->Set("Alumnos por Especialidad"); $graph->xaxis->title->Set("Especialidad"); $graph->xaxis->SetTickLabels($datax); $graph->yaxis->title->Set("Numero de Alumnos"); $graph->title->SetFont(FF_ARIAL,FS_BOLD,20); $graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD); $graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD); // Mostrar el grafico $graph->StrokeCSIM('barras.php'); //$graph->Stroke();

Desarrollo de Portales ?> Grafico de Torta :Torta.php <? session_start(); $data=$_SESSION['data']; $legen=$_SESSION['cad'];

-116-

Ing.Alberto Moreno C.

include("graph/jpgraph.php"); include("graph/jpgraph_pie.php"); include("graph/jpgraph_pie3d.php"); //$data=array(456,234,778,123); $g=new PieGraph(350,300,"auto"); $g->Shadow; $g->title->Set("Ejemplo de torta"); $g->title->SetFont(FF_TIMES, FS_BOLD,12); $g->title->SetColor("darkblue"); $g->legend->pos(0.05,0.08); //la ubicacion de la leyenda $p=new PiePlot3d($data); $p->value->SetFont(FF_VERDANA,FS_NORMAL,10); //$p->SetLegends(array("enero","feber","marzo","abril")); $p->SetLegends($legen); $g->add($p); $g->Stroke() ?>

Desarrollo de Portales -117Ing.Alberto Moreno C. Ejemplo 3.- Grficos con imgenes de fondo y con series, supongamos que tenemos 4 sucursales donde se realiza la compra y venta de mercaderas, elaborar un grafico que permita mostrar los montos por las cuatro tiendas. Los montos son representados con un vector dinmico, aunque tambin como en el anterior los datos pueden ser ledos desde una tabla.

Cdigo en Php: Barra3.php <? include("graph\jpgraph.php"); include("graph\jpgraph_bar.php"); $g=new graph(500,400,"auto"); $g->setscale("textlin"); $g->title->set("Pronostico de Ventas"); $g->title->setfont(FF_ARIAL,FS_BOLD,10); $g->setcolor("orange"); $g->setmargin(60,20,40,40); //$g->xaxis->settitle("nombre"); $g->xaxis->title->set("Sucursal"); //$g->xaxis->setmagin(35); $g->yaxis->title->set("MOnto en Soles"); $g->yaxis->settitlemargin(35); $data=array(200,600,300,700); $data2=array(100,1600,800,400); $nom=array("Tienda A","Tienda B","Tienda C","Tienda D"); $p=new barplot($data); $p->value->setcolor("blue"); $p->value->setfont(FF_ARIAL,FS_BOLD); $g->setbackgroundimage("admin.gif",BGIMG_CENTER); $p->value->show(); $p->setfillcolor("yellow"); $p->setlegend("ventas");

Desarrollo de Portales -118$p2=new barplot($data2); $p2->setfillcolor("orange"); $p2->value->show(); $p2->value->setcolor("blue"); $p2->setlegend("compras"); $grupo=new groupbarplot(array($p,$p2)); $g->legend->pos(0.2,0.02); $g->xaxis->setticklabels($nom); $g->add($grupo); $g->strokecSim("barra3.php"); ?> PRACTICA CONTINUA 7

Ing.Alberto Moreno C.

1.- Empleando la Base de Datos BDPEDIDOS (se la va proporcionar el script) Realizar : Grafico1.php

2.- Ingresando un ao Graficar los 10 productos con mayor Venta en ese ao seleccionado: Grafico2.php

3.- Graficar las ventas por cada empleado de acuerdo al siguiente modelo

Desarrollo de Portales

-119-

Ing.Alberto Moreno C.

Grafico3.php

graficos de barras.php

4.- Seleccione un pais desde un combo (mexico, brazil, Argentina, ..) luego muestre en una tabla los clientes de ese pais : Customerid, CompanyName, Cantidad de Pedidos y el Total importe

Desarrollo de Portales -120Ing.Alberto Moreno C. Luego con un boton proceda a graficar los datos ( Customerid y Total Importe)

5.- Registrar nuevos empleados el Idemployed se genera no se ingresa

Realizar la paginacin de 5 en 5 6.-Realizar una funcion que permita pasar los siguientes parametros: Listar(sql, tpag, nombre_pagina,tag

Desarrollo de Portales -121Ing.Alberto Moreno C. CAPITULO DE ELABORACION DE FORMULARIOS CON ASISTENTES Pasos para crear una Formulario en tiempo de diseo 1.- crear su sitio Final 2.- en el menu de barras seleccionar: aplicacion

Insertar registros

3.- tablas dinamicas para listados 2.- Recordset .-define un conjunto de registros

2.-Definicion del recordset

3.- establezca la conexin

Clic en nueva conexin:

Seleccione la bdd

Luego haga un clic en listo y quedara como:

Desarrollo de Portales

-122-

Ing.Alberto Moreno C.

para tabal que desea utilizar tiene que generar su recordset entoces recordset1 para la tabla alumno 3.- Repita el paso anterior Recodset2 para la tabla especialidad

no es necesario establecer la nueva conexin.

Desarrollo de Portales

-123-

Ing.Alberto Moreno C.

4.- ahora vamos a insertar nuevos registros para alumnos: elegir la opcion de insercin y tendremos la pantalla:

Observe que la opcin etiqueta puede colocar etiquetas mas explicitas como por ejemplo en vez de apealumno se puede colocar Apellidos y as puede cambiar los dems campos. Para el campo Idesp vamos asociarlo la tabla especialidad: En mostrar como elegir Menu y hacer clic en propiedades del menu

en propiedades del menu elegir BDD

Desarrollo de Portales

-124-

Ing.Alberto Moreno C.

luego acepte 5.- en el campo procedencia mostrar como

y modificar las opciones

Seleccionar un valor igual :

Desarrollo de Portales

-125-

Ing.Alberto Moreno C. Esto des cuando se navegu o desplac los registros tambin cambie de acuerdo al valor del contenido del recordset

el formulario quedara como :

6.- grabe el formulario como asistente1.php y luego ejectelo 7.- tambin se le puede agregar un listado general: seleccione tabla dinamica:

Desarrollo de Portales

-126-

Ing.Alberto Moreno C.

y escoja recordset1 ,Claro que inicialmente recordset1 fue asociado a la tabla alumno ademas agregar la navegacin de registros y quedara como

ahora ejecute su formulario:

Puede agregarle atributos centrado, colores, generacin de cdigos etc.

Desarrollo de Portales
Bibliografa

-127-

Ing.Alberto Moreno C.

Aplicaciones con PHP editorial Anaya autor Francisco Ojeda, 2004 Creacin de paginas con PHP del Grupo EIDOS, 2005 Direcciones www.php.net www.php.linux www.desarrolloweb.com

Prof. Ing. Alberto Moreno C. E-mail :mmoreno@ucss.edu.pe

También podría gustarte