Sunteți pe pagina 1din 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 -2- Ing.Alberto Moreno C.
Capitulo1.

• Conceptos Básicos
• 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 Numéricas

Capitulo 4.-

• Mysql
• Creación de BDD y Tablas
• Creaciones de Claves primarias y foraneas
• Conexión con la Base de Datos
• Lectura de Tabla
• Adicion de registros
• Eliminación
• 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 -3- Ing.Alberto Moreno C.
Capitulo 6.-

• Aplicaciones Graficas
• Funciones y Metodos graficos
• Aplicaciones y ejercicios

Capitulo 7.-

• Desarrollo de paginas con Wizard


• Inserción , listados, etc.
Desarrollo de Portales -4- Ing.Alberto Moreno C.
Conceptos básicos

El lenguaje PHP es un lenguaje de programación de estilo clásico, con esto quiero decir que
es un lenguaje de programación con variables, sentencias condicionales, bucles,
funciones.... No es un lenguaje de marcas como podría 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 podría ser una base de datos. El programa PHP es ejecutado en el servidor y el
resultado enviado al navegador. El resultado es normalmente una página HTML pero
igualmente podría 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 páginas PHP
funcionen, el servidor donde están 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 -5- Ing.Alberto Moreno C.
3.- INSTALAR APPSERVER

Abrimos el archivo appserver (hasta la fecha ,es la


ultima versión)

Aquí se escoge la ruta donde se desea instalar.


Luego se presiona el botón INSTALL
Se recomienda que se deje por defecto la ruta a instalar

INICIAR SERVIDOR APACHE - PHP

Una vez terminada la instalación 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 -6- Ing.Alberto Moreno C.
Debería salir las siguientes ventanas.

Esto significa que el servidor apache esta corriendo


Además también 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 podríamos crear carpetas
dentro de esta ruta; por ejemplo creamos la
carpeta MICARPETA dentro de APPSERVER -
WWW, para poder visualizar las paginas que
están 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 WWW


Para poder visualizar esta pagina debemos de escribir en el navegador web
http://localhost//pag2.php

5.- MI PRIMERA PAGINA CON PHP


Desarrollo de Portales -7- Ing.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 . Eso debido a que las paginas deben de guardarse en
PHPDEV WWW se acuerdan ???

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 programación 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 -8- Ing.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 quedaría 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 Código ya que vamos a
programar en la pagina.
La programación PHP se mezcla con el HTML es decir dentro de la pagina podemos poner
cualquier cosa en PHP.
Para escribir código PHP dentro de una página html, tenemos varias alternativas:
• Incluir el código entre <? y ?>
• Incluir el código entre <?PHP y ?>
• Incluir el código 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 instrucción que permite escribir o visualizar algo en una pagina
Desarrollo de Portales -9- Ing.Alberto Moreno C.
NOTA IMPORTANTE .- Al final de cada instrucción va punto y coma. Además las palabras
reservadas son sensibles a mayúsculas y minúsculas (Casi todas las palabras reservadas
en PHP se escriben en minúsculas)
L

Nuestro primer PHP


La ventaja que tiene PHP sobre otros lenguajes de programación que se ejecutan
en el servidor (como podrían 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 línea 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 líneas que se encuentre entre
estos delimitadores deben acabar en punto y coma, excepto las sentencias de control (if,
swich, while, etc.).
Como en toda programación, es importante poner muchos comentarios, para lo cual si
queremos comentar una sola línea tenemos que poner al principio de la línea //, si lo que
queremos es comentar varias utilizaremos los delimitadores /* - */.
Para que el servidor envie texto utilizaremos la instrucción echo, aunque también podemos
utilizar printf de uso similar al del C oPerl.
Finalmente, vemos que la palabra myvar comienza con el signo dólar ($) . Este símbolo le
indica a PHP que es una variable. Nosotros le hemos asignado un texto a esta variable,
pero también pueden contener números o arrays. Es importante recordar que todas las
variables comienza con el signo dólar.

Ejemplo 2.- Muesra diez lineas

Parte de HTML normal.


<BR><BR>
Desarrollo de Portales -10- Ing.Alberto Moreno C.

<?php
echo "Parte de PHP<br>";

for($i=0;$i<10;$i++)
{
echo "Linea ".$i."<br>";
}
?>

</body>
</html>

El código 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 línea, la variable $i contiene el número de línea que se
está escribiendo.
No importa si no entiende muy bien el programa este ejemplo solo es para
ilustrar como se intercala el código HTML y el código PHP.

Variables

Una variable es un contenedor de información, en el que podemos meter números enteros,


números decimales, carácteres... el contenido de las variables se puede leer y se puede
cambiar durante la ejecución de una página PHP.
En PHP todas las variables comienzan con el símbolo del dólar $ y no es necesario definir
una variable antes de usarla. Tampoco tienen tipos, es decir que una misma variable puede
contener un número y luego puede contener carácteres.

<!-- 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 instrucción echo hemos
impreso el valor que contenían, insertando un salto de línea 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 función con la instrucción global
nombre_variable;

Operadores Aritméticos

Los operadores de PHP son muy parecidos a los de C y JavaScript, si usted conoce estos lenguajes
le resultaran familiares y fáciles de reconocer.
Estos son los operadores que se pueden aplicar a las variables y constantes numéricas.

Operador Nombre Ejemplo Descripción

+ Suma 5+6 Suma dos números

- Resta 7-9 Resta dos números

* Multiplicación 6*3 Multiplica dos números

/ División 4/8 Divide dos números

% Módulo 7%2 Devuelve el resto

++ Suma 1 $a++ Incremento

-- Resta 1 $a-- 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

Comparación

Los operadores de comparación son usados para comparar valores y así poder tomar decisiones.
Desarrollo de Portales -12- Ing.Alberto Moreno C.
Operador Nombre Ejemplo Devuelve cierto cuando:

== Igual $a == $b $a es igual $b

!= Distinto $a != $b $a es distinto $b

< Menor que $a < $b $a es menor que $b

> Mayor que $a > $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 Lógicos

Los operadores lógicos son usados para evaluar varias comparaciones, combinando los
posibles valores de estas.
Operador Nombre Ejemplo Devuelve cierto cuando:
Devuelve verdadero cuando ambas condiciones son
&& Y (7>2) && (2<4)
verdaderas.
Devuelve verdadero cuando ambas condiciones son
and Y (7>2) and (2<4)
verdaderas.
Devuelve verdadero cuando al menos una de las
|| O (7>2) || (2<4)
dos es verdadera.
Devuelve verdadero cuando al menos una de las
or O (7>2) or (2<4)
dos es verdadera.
! No ! (7>2) Niega el valor de la expresión.
Desarrollo de Portales -13- Ing.Alberto Moreno C.
<!-- 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) && ($c > $b),"<br>";
echo ($a == $b) || ($b == $c),"<br>";
echo !($b <= $c),"<br>";
?>
</body>
</html>

Condicionales

Las sentencias condicionales nos permiten ejecutar o no unas ciertas instrucciones


dependiendo del resultado de evaluar una condición. Las más frecuentes son la instrucción
if y la instrucción switch.
Sentencia if ... else
<?php
if (condición)
{
Sentencias a ejecutar cuando la
condición es cierta.
}
else
{
Sentecias a ejecutar cuando la
condición es falsa.
}
?>

La sentencia if ejecuta una serie de instrucciones u otras dependiendo de la condición que


le pongamos. Probablemente sea la instrucción más importante en cualquier lenguaje de
programación.

<!-- 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 -14- Ing.Alberto Moreno C.
}
else
{
echo "a no es menor que b";
}
?>
</body>
</html>

En este ejemplo la condición no es verdadera por lo que se ejecuta la parte de código


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 -16- Ing.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 -18- Ing.Alberto Moreno C.
</table>
<p>&nbsp;</p>
</blockquote>
</blockquote>
</body>
</html>

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
información de estas variables es atribuida por el servidor y en ningún 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 aplicación directa para nuestro sitio web. Aquí algunas de las
propiedades de estas variables

Variable Descripción

Nos informa principalmente sobre el sistema operativo y tipo


y versión de navegador utilizado por el internauta. Su
HTTP_USER_AGENT
principal utilidad radica en que, a partir de esta información,
podemos redireccionar nuestros usuarios hacia páginas
Desarrollo de Portales -20- Ing.Alberto Moreno C.
optimizadas para su navegador o realizar cualquier otro tipo
de acción 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
lenguas principales pueden ser elegidas en el menú de
HTTP_ACCEPT_LANGUAGE
opciones del navegador. Esta variable resulta también
extremadamente útil para enviar al internauta a las páginas
escritas en su lengua, si es que existen.

Nos indica la URL desde la cual el internauta ha tenido


acceso a la página. Muy interesante para generar botones
HTTP_REFERER
de "Atrás" dinámicos o para crear nuestros propios sistemas
de estadísticas 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 página.

Almacena la variable usuario cuando se efectúa la entrada a


páginas de acceso restringido. Combinado con
PHP_AUTH_USER
$PHP_AUTH_PW resulta ideal para controlar el acceso a las
páginas internas del sitio.

Almacena la variable password cuando se efectúa la entrada


a páginas de acceso restringido. Combinado con
PHP_AUTH_PW
$PHP_AUTH_USER resulta ideal para controlar el acceso a
las páginas internas del sitio.

REMOTE_ADDR Muestra la dirección IP del visitante.

Nos devuelve el path físico en el que se encuentra alojada la


DOCUMENT_ROOT
página en el servidor.

Guarda el identificador de sesión del usuario. Veremos más


PHPSESSID
adelante en qué consisten las sesiones.

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 -21- Ing.Alberto Moreno C.
?>
</body>
Resultado:

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 Recepción de Pedidos</TITLE>
</HEAD>
<BODY>
<H1 ALIGN="CENTER">Recepción 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 "Número Unidades Libro A = <B> $UniA </B><BR>";
echo "Número 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 páginas, para la respectiva presentación 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 página htm , luego mostrar los datos
calculados como : El área del Terreno, El Precio Total , Cuota inicial y el Pago Mensual.
Condición.- El pago es en dos años 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 también en que tiempo alcanza el atleta A al B

Distancia Recorridas
Velocidad A m/seg
Velocidad B m/seg Tiempo Distancia x A Distanciax B
Distancia de separación

Enviar <<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 años; 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 años
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 especialización , 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 contraseñas en una arreglo , si existe
mostrara el menú que une todas las paginas.

Uso de Constantes :

Por ejemplo para obtener la versión del PHP la ruta donde esta instalado

<!-- Cap03/constantes.php -->

<HTML>
<HEAD><TITLE>Constantes de PHP</TITLE></HEAD>
<BODY>
<?php
echo "Ejecuto la versión de PHP: ",PHP_VERSION,"<BR>\n";
echo "El sistema operativo es: ",PHP_OS,"<BR>\n";
echo "Estoy en el fichero <B>",__FILE__," línea ",__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 ejecución de un
conjunto de instrucciones mientras se cumpla una condición.
Sentencia while
<?php
while (condición)
{
intrucciones a ejecutar.
}
?>

Mientras la condición sea cierta se reiterará la ejecución de las instrucciones que están
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 ejecución del bucle, se va


sumando 1 al valor de $i de manera que cuando $i vale 10 ya no se cumple la condición y
se termina la ejecución del bucle.

Sentencia for
<?php
for (inicial ; condición ; ejecutar en iteración)
Desarrollo de Portales -27- Ing.Alberto Moreno C.
{
intrucciones a ejecutar.
}
?>

<!-- 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 0
El valor de i es 1
El valor de i es 2
El valor de i es 3
El valor de i es 4
El valor de i es 5
El valor de i es 6
El valor de i es 7
El valor de i es 8
El valor de i es 9
Final

La instrucción for es la instrucción de bucles más completa. En una sola instrucción nos
permite controlar todo el funcionamiento del bucle.
El primer parámetro del for, es ejecutado la primera vez y sirve para inicializar la variable del
bucle, el segundo parámetro indica la condición que se debe cumplir para que el bucle siga
ejecutándose y el tercer parámetro es una instrucción que se ejecuta al final de cada
iteración y sirve para modificar el valor de la variable de iteración.

Salida

Hasta ahora hemos usado la instrucción echo para realizar salida a pantalla, esta
instrucción es bastante limitada ya que no nos permite formatear la salida. En esta página
veremos la instrucción printf que nos da mucha más potencia.
Sentencia printf
<?php
printf(cadena formato, variable1, variable2...);
?>
Desarrollo de Portales -28- Ing.Alberto Moreno C.

La cadena de formateo indica cómo se han de representar las valores que posteriormente le
indicaremos. La principal ventaja es que además 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 carácteres especiales que indican como
formatear las variables que se incluyen en la instrucción.
Elemento Tipo de variable

%s Cadena de carácteres.

%d Número sin decimales.

%f Número con decimales.

%c Carácter ASCII.

Aunque existen otros tipos, estos son los más importantes.

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


<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php
$var="texto";
$num=3;
printf("Puede fácimente intercalar <b>%s</b> con números <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 continuación explicaremos las más
usadas.

1. strlen(cadena). Nos devuelve el número de carácteres de una cadena.


2. split(separador,cadena). Divide una cadena en varias usando un carácter 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 línea y los espacios finales de una cadena.
6. strpos(cadena1, cadena2). Busca la cadena2 dentro de cadena1 indicándonos la posición 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 características 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 "Tamaño: <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 construcción de objetos con atributos y métodos propios , con herencia y
redefinición de funciones.
Por ejemplo creamos una clase llamada persona , que determina todas las características de
los objetos que van a pertenecer a dicha clase . Para ello en la definición 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 métodos (mediante una función para cada método ) la palabra
reservada para la definición 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 -32- Ing.Alberto Moreno C.
else
echo "$this->Nombre no se puede gastar esa cantidad<BR>";
} // de la función 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 características importantes son la herencia y la posibilidad de tener valores de


parámetros 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 función 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 función 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 comín , 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 "Posición cero: $MiArray[0] <BR>";
echo "Posición uno: $MiArray[1] <BR>";
?>
</BODY>
</HTML>

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

<!--media.php -->
<HTML>
Desarrollo de Portales -35- Ing.Alberto Moreno C.
<HEAD>
<TITLE>Cálculo de la media</TITLE>
</HEAD>
<BODY>
<CENTER>
<H1>Cálculo 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>Parámetro $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 -36- Ing.Alberto Moreno C.
(PHP 4 )
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 posición arg_num en la lista de argumentos de una


función definida por el usuario. Los argumentos de la función se cuentan comenzando por la
posición cero. func_get_arg() generará un aviso si se llama desde fuera de la definición de
la función.

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]='Agustín';
$Nombres[2]='Javier';
echo "<B>Bucle clásico</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 -38- Ing.Alberto Moreno C.
Funciones

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, ahorrándonos la
necesidad de escribirlas de nuevo.
<?php
function Nombre(parametro1, parametro2...)
{
instrucción1;
instrucción2;
instrucción3;
instrucción4;
return valor_de_retorno;
}
?>

Opcionalmente podemos pasarle parámetros a las funciones que se trataran como variable
locales y así mismo podemos devolver un resultado con la instrucción return valor; Esto
produce la terminación de la función retornando un valor.

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


<html>
<head>
<title>Ejemplo de PHP</title> Resultado:
</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

5
263892.5

Funciones con arreglos.-


<!--variablesfuncion.php -->
<?php
$matriz = array("Color" => "Blanco",
"Nombre" => "Agustín",
"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>Cálculo de vencimientos</TITLE>
</HEAD>
<BODY>
<CENTER>
<H1>Cálculo 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">Número 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>Cálculo 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 estén vacíos. Si hay
// alguno que no tiene datos, se muestra una página 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>Descripción de los vencimientos</H1>
<HR>
<TABLE BORDER=3>
<TR>
<TH>Número 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 -43- Ing.Alberto Moreno C.
<?php
}
?>
</CENTER>
</BODY>
</HTML>

Funciones Empleadas:

int strtotime ( string hora [, int ahora])


La función espera que se le pase una cadena conteniendo una fecha en formato Inglés 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 mayúsculas.

string strtolower ( string cad)

Devuelve la cadena con todas sus letras en minúsculas.

string ucfirst ( string cad)


Pone en mayúsculas el primer carácter de cad si es alfabético.

Descripción

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 parámetro.
Se reconocen los siguientes caracteres en la cadena de formato:

• a - "am" o "pm"
• A - "AM" o "PM"
• d - día del mes, dos dígitos con cero a la izquierda; es decir, de "01" a "31"
• D - día 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 - día del mes sin cero inicial; de "1" a "31"
• l ('L' minúscula) - día de la semana, en texto, completo; por ejemplo, "Friday"
• L - "1" or "0", según si el año 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 inglés, en texto, 2 caracteres; por ejemplo, "th", "nd"
• t - número de días del mes dado; de "28" a "31"
Desarrollo de Portales -44- Ing.Alberto Moreno C.
• U - segundos desde el valor de 'epoch'
• w - día de la semana, en número, de "0" (domingo) a "6" (sábado)
• Y - año, cuatro cifras; por ejemplo, "1999"
• y - año, dos cifras; por ejemplo, "99"
• z - día del año; 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 función 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, "Información 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.- Elaboración de Una Factura simple , los valores de entrada se conservan después
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 líneas de código (Inclusión de archivos php)

En las lecciones anteriores hemos aprendido el uso básico de las funciones de PHP para
trabajar con MySQL. En esta lección y sucesivas vamos a ver nuevas funciones que nos
facilitan y potencian nuestras páginas web.

Por lo general, todos nuestros script tienen partes de código iguales, las funciones include(
) y require( ) nos van ahorrar muchas de estas líneas de código. 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 código 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 sería equivalente a:
<html>
<body>

<?php
echo "Hola Mundo";
?>

</body>
</html>
Ahora veamos el script de ejemplo para la función require( ):
<?php
require ("config.inc");
include ("header.inc");
echo $cadena;
include ("footer.inc");
?>
Donde el fichero config.inc tendría algo como ésto:
<?php $cadena = "Hola Mundo";
?>

Librería
Desarrollo de Portales -49- Ing.Alberto Moreno C.
El uso de librerías es tremendamente útil, nos permiten agrupar varias funciones y variables
en un mismo fichero, de manera que luego podemos incluir esta librería en distintas páginas
y disponer de esas funciones fácilmente.
<!-- Manual de PHP de WebMoreno.com -->

<?php
function CabeceraPagina()
{
?>
<FONT SIZE="+1">Esta cabecera estará en todas sus páginas.</FONT><BR>
<hr>
<?
}

function PiePagina()
{
?>
<hr>
<FONT SIZE="-1">Este es el pie de página.</FONT><BR>
<?
}
?>

Ahora vamos a crear 2 páginas que usan la librería definida anteriormente para conseguir que las dos
paginas tengan la misma cabecera y pie de pagina.
La instrucción para incluir una librería en nuestra página es include("nombre de librería")

<!-- Manual de PHP Autor:Alberto Moreno -->


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

Página 1
<BR><BR><BR><BR><BR>

Contenido blalbl blalb alb<BR><BR>


más 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 -50- Ing.Alberto Moreno C.
<?php CabeceraPagina(); ?>

Esta es otra página<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 páginas.

Esta es otra página

completamente distinta

pero comparte el pie y la cabecera con la otra.

Envío y recepción de datos

El lenguaje PHP nos proporciona una manera sencilla de manejar formularios,


permitiéndonos de esta manera procesar la información que el usuario ha introducido.
Al diseñar un formulario debemos indicar la página PHP que procesará el formulario, así
como en método por el que se le pasará la información a la página.
<!-- 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 botón Enviar el contenido de cuadro de texto es enviado a la página 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 página 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 días 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 días que faltan para terminar el año
f) Pasando un conjunto de números de cantidad indeterminada(debe ser mas de 5) , que
muestre el promedio de dichos números eliminando los dos números 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 máximo
b) El valor mínimo
c) La suma de los elementos
d) Su promedio
e) Mostrar los datos ordenados

3.- Una compañía desea pronosticar sus ventas respecto a un año, 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
descripción pequeña del video.
(debe emplear una clase luego adaptarlo con códigos en php)

5.- realizar una pagina en php para envió de postales , Ud. Puede seleccionar otras imágenes ,
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 números a letras para ello se
ingresa un valor numérico máximo de 6 dígitos.

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 país luego al seleccionar
un país que muestre las personas solo de ese país

<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 -55- Ing.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 ejecución 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 -58- Ing.Alberto Moreno C.
<tr>
<tr>
</table>
</form>
</body>
</html>

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 -59- Ing.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 -60- Ing.Alberto Moreno C.
{
if($sel==$arr[$a])
$cad=$cad ."<option selected>$arr[$a]";
else
$cad=$cad ."<option >$arr[$a]";
}
$cad .= "</select>";
return $cad;

$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 -61- Ing.Alberto Moreno C.
Envio de emails

PHP nos ofrece la posibilidad de enviar emails de una manera sencilla y fácil, para ello el lenguaje
nos proporciona la instrucción mail( )
<?php
mail(destinatario, tema, texto del mensaje);
?>

En el parámetro destinatario pondremos la dirección de email a donde se enviará el mensaje, en el


parámetro tema el tema o subject del mensaje y el parámetro texto del mensaje el cuerpo del
mensaje en formato texto plano.
Existe una sintaxis extendida de la instrucción mail( ) que nos permite añadir información adicional a
la cabecera del mensaje.
<?php
mail(destinatario, tema, texto del mensaje, información adicional de cabecera);
?>

En la información de cabecera podremos incluir parámetros 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 método ampliamente extendido en cualquier aplicación de cierta
entidad. Básicamente una sesión es la secuencia de páginas que un usuario visita en un
sitio web. Desde que entra en nuestro sitio, hasta que lo abandona.
El término sesión en PHP, session en inglés, se aplica a esta secuencia de navegación,
para ello crearemos un identificador único que asignamos a cada una de estas sesiones de
navegación. A este identificador de sesión se le denomina, comúnmente, como la sesión.
El proceso en cualquier lenguaje de programación podría ser algo así:

Existe una sesión?


Si existe la retomamos
Si no existe creamos una nueva
Generar un identificador único

Y para que no perdamos el hilo de la navegación del usuario deberemos asociar esta sesión
a todas las URLs y acciones de formulario. Podemos también crear un cookie que incluya el
identificador de sesión, 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 teoría pura y es aplicable a cualquier lenguaje de programación
C, Perl, etc. Los que programamos en PHP4 tenemos la suerte de que toda la gestión de
sesiones la hace el mismo PHP.
Por lo tanto lo comentado a partir de aquí es solo aplicable a PHP4. Si aún desarrollas
PHP3, tendrás que crear tus propias librerías de gestión de sesiones o recurrir a alguna de
las existentes, como la de PHPLIB .

Inicialización de la sesión

Para utilizar sesiones en PHP lo primero es inicializarlas. Podemos hacerlo explícitamente,


mediante la función session_start(), o al registrar una variable en una sesión mediante
session_register('miVariable'). En ambos casos se crea una nueva sesión, si no existe, o se
retoma la sesión actual. Veamos un sencillo ejemplo:
<?php // Manual de PHP de WebMoreno.com

session_start();
Desarrollo de Portales -63- Ing.Alberto Moreno C.
echo "He inicializado la sesión";
?>

Esta es la forma más básica, si el usuario tiene los cookies activados, PHP habrá insertado
de forma automática la sesión y ésta será pasada de una página a otra sin hacer nada más.
Desde un punto de vista práctico la sesión es operativa, pero no vemos nada. Podemos
obtener la sesión en cualquier momento mediante la función session_id(). Inserta en las
sucesivas páginas la siguiente línea para ver si la sesión está disponible:
<?php // Manual de PHP de WebMoreno.com

session_start();
echo 'La sesión actual es: '.session_id();
?>

En este caso session_start() comprueba en los cookies que existe una sesión y continua
con ella, session_id() devuelve el identificador actual.

Inicio » PHP » Manual » Sesiones


Valora: 4.55/5

Ejemplo práctico

<?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 línea del script.
En la segunda línea, entre otras cosas, cada vez que recarguemos la página o hagamos
click sobre el enlace, el valor de $contador se incrementará en 1.
En esta línea hacemos uso de la variable reservada $PHP_SELF, que hace referencia al
propio script en ejecución y una constante propia de PHP5, $SID, que contiene el nombre
de la sesión y el identificador de la misma.
Podemos averiguar también el nombre de la sesión, o modificarlo, mediante la función
session_name(). Veamos una prueba práctica:

<?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 sesión '.$misesion.'<br>';
?>

La asignación del nombre de sesión debe realizarse antes que ninguna otra función con
sesiones, antes que session_start() o session_register().
Desarrollo de Portales -64- Ing.Alberto Moreno C.

Error común

Uno de los errores más comunes cuando se utilizan sesiones es dejar líneas en blanco
antes de la inicialización de PHP o enviar alguna salida a la pantalla. Para probarlo crea una
línea en blanco o con cualquier cosa antes de <?php.
Si tienes los cookies activados, te encontrarás 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 línea en
blanco. Como medida práctica, no dejes espacios ni antes del inicio del script, ni después de
la finalización.
Te ahorrará muchos disgustos.

Si después de todo lo comentado aún no entiendes para que sirven las sesiones, veamos
un ejemplo práctico. 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="Añadir 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 -65- Ing.Alberto Moreno C.
echo 'Artículo: '.$k.' ud: '.$v.'<br>';
}
}
?>
</tt>
</body>
</html>

Dime el producto

Cuantas unidades
Enviar

El contenido de la cesta de la compra es:


Artículo: Mouse Logitex ud: 23

Una breve explicación. En la línea 4 comprobamos si el usuario ha pasado algún artículo,


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 líneas
8 y 13, y si encontramos un artículo igual, añadimos la cantidad en la línea 10. Si no lo
encontramos, es un nuevo artículo, por lo tanto, añadimos el nuevo producto con la
correspondiente cantidad a itemsEnCesta en la línea 14.
Y a continuación imprimimos el formulario y los resultados, si los hubiera, a partir de la línea
18, donde empieza el HTML.
¿Te imaginas las posibilidades de un sistema de almacenamiento de información de estas
características?. No necesitas ficheros, ni bases de datos, ni tienes que andar pasando
valores de una página a otra. PHP va gestionando estos datos por nosotros, hasta el
momento en que decidamos almacenar la información donde más 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 navegación a través de las paginas web.
Con las cookies, pequeñas porciones de información se quedan registradas en el navegador
permitiendo identificar a este a través de diferentes páginas de un mismo sitio e incluso
durante visitas entre distintos días.
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 envía estas
cookies al servidor permitiendo así la identificación 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 páginas piden la cookie al navegador...

El navegador las envía, permitiendo la identificación del usuario por parte del servidor.

A continuación vamos a ver como usar las cookies para nuestro beneficio.

Cómo usar las cookies

El manejo de cookies en PHP se realiza mediante el uso de la función setcookie, esta


función esta disponible a partir de la versión 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 información 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 restricción 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. También podemos
reemplazar cualquier argumento con una cadena vacía ("").
• 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 duración, para especificar la
duración 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 través de una
conexión 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) válida para todo el dominio WebMoreno.com

Ejemplo de uso de cookies

En este ejemplo vamos a ver como establecer una cookie y cómo 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 página 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á válida
durante 1 hora.
Desarrollo de Portales -68- Ing.Alberto Moreno C.
Se establece la cookie ejemusuario con el valor introducido anteriormente, y cuya duración
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á válida 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 -69- Ing.Alberto Moreno C.
en el combo será llenado con las opciones

Al seleccionar una opción solo debe


aparecer los Discos de la casa
seleccionada, tal como se muestra en la
figura 1.

Aunque esta pagina tendrá una presentación 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
información 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 opción 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
crédito y el total importe a pagar y la fecha de compra , luego de efectuar la compra cerrará
la sesión.

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 presentación 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
español, ha sido grabado en las Islas Bahamas, Madrid y Miami entre otras ciudades, y
todas las canciones llevan la firma de Shakira, que también ha colaborado en la
producción. Destaca el dúo con Alejandro Sanz de su primer single 'La tortuta'.
Los datos en orden son : Codigo del Cds, Titulo, autor,Casa Discografica,Estilo, Precio y
descripción así colocar muchos mas registros.
Desarrollo de Portales -71- Ing.Alberto Moreno C.
CAPITULO DE BASE DE DATO

1.- Introducción
MySQL es un sistema de administración 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 pequeño y compacto y no solo sirve para pequeñas aplicaciones. En adición 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 automáticamente 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 fácilmente
se puede transportar y colocar automáticamente en dicha carpeta , su gestion de
datos es muy similar al SQL SERVER . La creación 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.

Inicialización
Nos dirigimos hacia el directorio c:\mysql\bin y ejecutamos el archivo
winmysqladmin.exe o puede acceder del menu. Aquí aparecerá una pantalla:

Administración de
MySQL
Para administrar
MySQL bajo Windows
es recomendable
utilizar una
herramienta visual,
uno de los más
populares para este
trabajo es el
MysqlFront

Trabajar con
MysqFront es muy
similar que hacerlo
Desarrollo de Portales -72- Ing.Alberto Moreno C.
desde SQL Server. Una vez creada la conexión puedes administrar las tablas y
usuarios de manera sencilla. Otra de las características importantes, es que incluye
un asistente de importación, 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 MysqlFront-


MysqlFront) 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 pestaña 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:
Instrucción Descripción
Show databases; Muestra el conjunto de bases de datos
presentes en el servidor
Desarrollo de Portales -73- Ing.Alberto Moreno C.
Use nombreBD; Determina la base de datos sobre la que
vamos a trabajar
Create Database nombreBD; Crea una nueva bd con el nombre especificado
Elimina la base de datos del nombre
Drop Database nombreBD;
especificado
Muestra las tablas presentes en la base de
Show tables;
datos actual
Describe nomTabla; Describe los campos que componen la tabla
Drop Table nomtabla; Borra la tabla de la base de datos
Crea una tabla y entre paréntesis 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 número variable de caracteres el número que se pone es el


número máximo de caracteres que puede tener este número va de 1 a
255
CHAR Tiene un número 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 año (1970 a 2069)
INTEGER (INT) Tipo numérico entero (-2147483648 a 2147483647)
FLOAT (M,D) Número real de coma flotante M es el número y D los
decimales
(-3.402823466E+38 a -1.175494351E-38, 0, y
1.175494351E-38 a 3.402823466E+38.)
DOUBLE(M,D) Número real de doble precisión M es el número 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 máxima es 65535 con este tipo las
búsquedas de texto son sensibles a las mayúsculas.
TEXT Para grandes textos la longitud máxima es 65535 con este tipo las
búsquedas de texto NO son sensibles a las mayúsculas.

3.3.- Restricciones para los campos en Mysql

not null El valor no puede ser nulo en el campo


auto_increment Automáticamente incrementa el número del registro anterior
primary key El PRIMARY KEY es un campo que MySQL usa como índice. Este
índice puede hacer cosas como:

• Hallar rápidamente filas que acierten una cláusula WHERE.


• Regresar filas de una tabla desde otras tablas cuando se realizan
uniones.
Desarrollo de Portales -74- Ing.Alberto Moreno C.

• Esto definitivamente te va a ayudar a agilizar sus peticiones


también.

Key Crea una llave secundaria

3.4.- Sentencia Alter en Mysql


Modificación 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 carácter
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 (Conexión 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 conexión (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 contraseña
vacía). La cadena hostname también puede incluir un número del puerto, "hostname:port".

La conexión al servidor se cerrará en cuanto la ejecución del script acabe, a menos que la
cerremos antes con la función mysql_close.

Ejemplo:

$cn=mysql_connect("localhost","root","password"); //Aquí se esta conectando a la maquina


local el //usuario root y la contraseña es password

$cn=mysql_connect("localhost");// Aqui se esta conectando con el usuario y la contraseña


por defecto

$cn=mysql_connect("mysql.webcindario.com","SUPER","CONTRA");//Aqui no estamos
conectando al //servidor de miarroba el usuario es super y la contraseña es contra
Desarrollo de Portales -78- Ing.Alberto Moreno C.
4.2.- mysql_close

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 conexión, o FALSE en caso de error.< de caso en FALSE o


conexión,>

Ejecuta una consulta en una base de datos. Si el identificador no se especifica, la función


intenta encontrar una conexión abierta con el servidor. Si no encuentra una conexión,
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 conexión 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 información correspondiente al resultado de una consulta


especificado por su identificador o 'false' si ya no hay más filas.

Es una versión extendida de mysql_fetch_row ( ). Además de almacenar los datos a través


de índices numéricos del array, también lo hace a través de índices asociativos, utilizando
los nombres de los campos como claves.
Si dos o más columnas del resultado tienen el mismo nombre de campo, la última es la que
tiene preferencia. Para acceder a las demás es necesario utilizar el índice numérico 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 número 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 admisión,
seleccionando una facultad a través de una lista, que muestre el resultado del examen
Ordenados por apellido, con el mensaje ingreso o no ingreso (azul y rojo) , el puntaje
mínimo 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 también ingresan. (7 Puntos)

b) Muestre los puntajes mínimos y máximo que se dieron en cada facultad( 5 Puntos)
Código Especialidad Ptj. Mínmo Máximo 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 página principal a través 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 -82- Ing.Alberto Moreno C.
while($fila=mysql_fetch_array($rs)){
echo "<tr>";
echo "<td>$fila[0]</td>";
echo "<td>$fila[1]</td>";
echo "</tr>";
}

El resultado seria asi:

Si se desea leer un registro particular de una tabla emplear la siguiente instrucción:


Por ejemplo leer el registro 6 ( es obvio que la numeración 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 -83- Ing.Alberto Moreno C.
</head>

<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 instrucción SQL osea que podremos ingresar datos, eliminar, crear tablas,
etc.

6.- Ejercicios de Aplicación


6.1.- Consulta Con parámetro 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) dándole 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 -85- Ing.Alberto Moreno C.
echo "</tr>";
}
mysql_free_result($rs);
mysql_close($cn);
?>

</table>
</body>

6.2.- Consulta Con parámetro 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 -86- Ing.Alberto Moreno C.
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>

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 Hipervínculos


En una pagina debe de salir un listado con todo los clientes en el cual el codigo del cliente
tendrá un hipervínculo a otra pagina en la cual se mostrara los datos de ese cliente
ListaClientes.PHP
Esta pagina es idéntica 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
parámetro 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 conexión después se recupera el parámetro 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
Después 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 número de filas afectadas de la última operación


MySQL
mysql_change_user -- Cambia el usuario conectado en la conexión activa
mysql_client_encoding -- Devuelve el nombre del juego de caracteres
mysql_close -- cierra el enlace con MySQL
mysql_connect -- Abre una conexión 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 número del mensaje de error de la última operación
MySQL
mysql_error -- Devuelve el texto del mensaje de error de la última operación 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 numérica o ambas
mysql_fetch_assoc -- Recupera una fila de resultado como una matriz asociativa
mysql_fetch_field -- Extrae la información 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 específicado en
un resultado
mysql_field_len -- Devuelve la longitud del campo específicado
mysql_field_name -- Devuelve el nombre del campo específicado en un resultado
mysql_field_seek -- Asigna el puntero del resultado al offset del campo específicado
mysql_field_table -- Devuelve el nombre de la tabla donde está el campo
específicado
mysql_field_type -- Devuelve el tipo del campo específicado en un resultado
mysql_free_result -- Libera la memoria del resultado
mysql_get_client_info -- Obtener información del cliente MySQL
mysql_get_host_info -- Obtener información de la máquina anfitriona MySQL
mysql_get_proto_info -- Obtener información del protocolo MySQL
mysql_get_server_info -- Obtener información del servidor MySQL
mysql_info -- Obtiene información sobre la consulta más 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 número de campos de un resultado
mysql_num_rows -- Devuelve el número de filas de un resultado
mysql_pconnect -- Abre una conexión persistente al servidor MySQL
Desarrollo de Portales -91- Ing.Alberto Moreno C.
mysql_ping -- Efectuar un chequeo de respuesta (ping) sobre una conexión de
servidor o reconectarse si no hay conexión
mysql_query -- Envía 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 -- Envía una consulta SQL a MySQL, sin recuperar ni
colocar en búfer 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:

Codificación:

<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 -96- Ing.Alberto Moreno C.
</table>
</form>
</body>
</HTML>

PRACTICA CONTINUA 5 CUENTA CORRIENTE EN PHP

2.- Se tiene la BDD ->BDBANCO con las tablas:

Cuentas Movimientos Clientes


Nrocta ( C ) Idoperacion Idcliente ( C )
Idcliente ( C) NroCta Nomcli ( C)
TipoCuenta (D=Dólar TipoMov( DNI (C)
S=Soles) D=deposito,R=reti TELF (C)
Saldo (n) ro) Ingresos ( N)
Monto (N)
Fecha (D)

a) Realizar un mantenimiento en línea 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 (máximo ingresar 8 digitos)
- Telefono (máximo 9 digitos)
- La anulación y edición 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 , téngase en


cuenta que un cliente puede tener 2 números de cuenta(para soles y dólares)

El código del Cliente se trae de la


pagina anterior, el numero de
cuenta se genera (7 caracteres) , los
cinco primeros caracteres es el
código del cliente y el séptimo
carácter es 1 si es dólar 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 operación se genera
a partir de 1, solo se ingresa el
monto de operación y el tipo de
operación , calculando
automáticamente el saldo actual.
Además mostrar un mensaje de
error saldo no disponible en caso
que el retiro sea mayor a su
saldo.

Al confirmar la operación 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
Además 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 -101- Ing.Alberto Moreno C.

Codificación empleando Clases:

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 -105- Ing.Alberto Moreno C.
</form>
<p class="Estilo1">&nbsp;</p>
</body>
</html>

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 -106- Ing.Alberto Moreno C.
}
}
</script>

<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 modificación es similar a la adicion


Desarrollo de Portales -107- Ing.Alberto Moreno C.
PRACTICA CONTINUA 6 ELABORACIÓN DE EXAMENES MECANIZADOS

Objetivo.- Empleando clases , Store Procedure en Mysql y graficos

Elaborar un examen mecanizado de cualquier curso : las tablas serán proporcionadas por el
instructor aunque Ud. Puede también Modificarlas con Criterio:

Las pantallas por ejemplo para examen mecanizado de un Lenguaje de Programación:

1.- Primero el alumno ingresara su código mediante el siguiente formato, sino existe
mostrara en una ventana código no existe por dos segundos volviendo a mostrar la pantalla
Inicial.:
Fig. 1

El examen durará un cierto tiempo, si no logra terminar automáticamente , se cerrara la


ventana, mostrando su resultado del examen..

Además se debe contemplar, si un alumno ya dio un examen, también debe mostrar un


mensaje de error en una ventana.

Fig 2.0 Debe mostrar las preguntas del curso, las opciones dependerá la tabla preguntas
máximo tendrá un cierto tiempo de duración llevándolo automáticamente hacia otra pagina
de resultados.
Desarrollo de Portales -108- Ing.Alberto Moreno C.

Al final de todas las preguntas hay un botón 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 través de un formulario.


Se hará mediante el siguiente formulario, la cantidad máximo 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 estén entre 0-5,6-
10,11-14 y 15-20
Las tablas:
Alumno

Notas

Respuestas
Desarrollo de Portales -111- Ing.Alberto Moreno C.

Curso

Preguntas
Desarrollo de Portales -112- Ing.Alberto Moreno C.
CAPITULO DE GRAFICOS

La Clase Graph.- La clase del Gráfico es la clase de la fuente principal para todo
grafico de eje x,y, Ud. siempre debe instanciar la clase para crear un gráfico. A
través de esta clase uno controla muchas escenas globales de la imagen desplegadas.

Propiedades publicas:
Nombre Tipo Description
xaxis Axis X-axis
yaxis Axis Y-axis
xgrid Grid Lineas Cuadriculas para X-axis
ygrid Grid Lineas Cuadriculas para Y-axis
legend Legend Propiedades de la caja de leyendas
title Text Titulo principal
subtitle Text SubTitulo
subsubtitle Text Sub title

tabtitle GraphTabTitle Option Tab title for graph


img 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 gráfico tiene que ser agregada al gráfico.
Éste es el método principal para agregar el objeto. Usted puede usar este método para
agregar :
Las parcelas
Los textos
Las líneas 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, Tamaño).- 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 -113- Ing.Alberto Moreno C.
Tipo: estas definidos por las constantes o también pueden ser
números: 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 números :


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 posición respecto al


ejex donde se va ubicar el centro del Pie

Grafico->SetSize(valor).- Define el tamaño 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 ,
además hay un ajuste de escalas automáticas

$grafico->Setcolor(color) .- define el color para el titulo , los valores los valores pueden
ser constantes o valores hexadecimales.
Desarrollo de Portales -114- Ing.Alberto Moreno C.
CAPITULO DE GRAFICOS:
1.- Alumnos por especialidad

o al Hacer un click en grafico de Torta:

Códigos 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 -115- Ing.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 -116- Ing.Alberto Moreno C.
?>

Grafico de Torta :Torta.php


<?
session_start();
$data=$_SESSION['data'];
$legen=$_SESSION['cad'];

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 -117- Ing.Alberto Moreno C.
Ejemplo 3.- Gráficos con imágenes de fondo y con series, supongamos que tenemos 4
sucursales donde se realiza la compra y venta de mercaderías, elaborar un grafico que
permita mostrar los montos por las cuatro tiendas.
Los montos son representados con un vector dinámico, aunque también como en el
anterior los datos pueden ser leídos desde una tabla.

Código 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- Ing.Alberto Moreno C.
$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

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

Realizar :
Grafico1.php

2.- Ingresando un año Graficar los 10 productos con mayor Venta en ese año
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 -120- Ing.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 paginación de 5 en 5

6.-Realizar una funcion que permita pasar los siguientes parametros:

Listar(sql, tpag, nombre_pagina,tag


Desarrollo de Portales -121- Ing.Alberto Moreno C.
CAPITULO DE ELABORACION DE FORMULARIOS CON ASISTENTES

Pasos para crear una Formulario en tiempo de diseño


1.- crear su sitio Final Insertar registros
2.- en el menu de barras seleccionar: aplicacion

3.- tablas dinamicas para


listados

2.- Recordset .-define un conjunto de registros

2.-Definicion del recordset 3.- establezca la conexión

Clic en nueva conexión: 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 conexión.


Desarrollo de Portales -123- Ing.Alberto Moreno C.

4.- ahora vamos a insertar nuevos registros para alumnos:

elegir la opcion de inserción y tendremos la pantalla:

Observe que la opción etiqueta puede colocar etiquetas mas explicitas como por
ejemplo en vez de apealumno se puede colocar Apellidos y así puede cambiar los demás
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
también cambie de acuerdo
al valor del contenido del
recordset

el formulario quedara como :

6.- grabe el formulario como asistente1.php y luego ejecútelo

7.- también 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 navegación de registros y quedara como

ahora ejecute su formulario:

Puede agregarle
atributos centrado,
colores, generación
de códigos etc.
Desarrollo de Portales -127- Ing.Alberto Moreno C.
Bibliografía

Aplicaciones con PHP editorial Anaya autor Francisco Ojeda, 2004

Creación 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

S-ar putea să vă placă și