Professional Documents
Culture Documents
FINESI - 2010
Qu necesito?
En este manual vamos a asumir que usted cuenta con un servidor que soporta PHP y que todos los
archivos con la extensin .php son manejados por PHP. En la mayora de servidores, sta es la
extensin que toman los archivos PHP por defecto, pero pregunte al administrador de su servidor para
estar seguro. Si su servidor soporta PHP, entonces no necesita hacer nada, solamente crear sus
archivos .php y guardarlos en su directorio web, y el servidor, como por arte de magia, los analizar
para usted. No hay necesidad de compilar nada, tampoco tiene necesidad de instalar otras
herramientas. Mrelo de esta manera, estos archivos de PHP son tan simples como archivos de HTML
con una nueva familia de etiquetas que le permiten una gran cantidad de cosas. La mayora de las
compaas de hospedaje de pginas web ofrecen el soporte que necesita para usar PHP, pero si por
alguna razn ellos no lo hacen, considere leer la seccin titulada Recursos PHP para ms informacin
acerca de compaas de hospedaje que soportan PHP
Digamos que usted tiene limitado acceso a internet y se encuentra programando localmente. En este
caso, querr instalar un servidor de web como Apache, y PHP. Lo ms seguro es que tambin
quiera instalar una base de datos como MySQL. Puede instalar estos productos individualmente o
simplemente localizar un paquete pre-configurado que automticamente instale todos estos productos
con solamente unos movimientos de su ratn. Es muy fcil instalar un servidor web con soporte para
PHP en cualquier sistema operativo, incluyendo Linux y Windows. En Linux, rpmfind y PBone le
ayudarn a encontrar un RPM.
Introduccin
Qu es PHP?
PHP (acrnimo de "PHP: Hypertext Preprocessor") es un lenguaje de "cdigo abierto" interpretado, de
alto nivel, embebido en pginas HTML y ejecutado en el servidor.
Puede apreciarse que no es lo mismo que un script escrito en otro lenguaje de programacin como Perl
o C -- En vez de escribir un programa con muchos comandos para crear una salida en HTML,
escribimos el cdigo HTML con cierto cdigo PHP embebido (incluido) en el mismo, que producir cierta
salida (en nuestro ejemplo, producir un texto). El cdigo PHP se incluye entre etiquetas especiales de
comienzo y final que nos permitirn entrar y salir del modo PHP.
Estas etiquetas especiales de comienzo y final??, esto nos lleva a que hay 4 formas de salir de HTML y
entrar en modo PHP, las cuales son las siguientes:
1. <?php echo("Forma 1"); ?>
2. <? echo ("forma2"); ?>
3. <script language="php">
echo ("muchos editores (como FrontPage) no aceptan instrucciones de procesado");
</script>
4. <% echo ("Etiquetas de tipo ASP"); %>
Lo que distingue a PHP de la tecnologa Javascript, la cual se ejecuta en la mquina cliente, es que el
cdigo PHP es ejecutado en el servidor. Si tuvisemos un script similar al de nuestro ejemplo en nuestro
servidor, el cliente solamente recibira el resultado de su ejecucin en el servidor, sin ninguna
1
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
posibilidad de determinar qu cdigo ha producido el resultado recibido. El servidor web puede ser
incluso configurado para que procese todos los archivos HTML con PHP.
Lo mejor de usar PHP es que es extremadamente simple para el principiante, pero a su vez, ofrece
muchas caractersticas avanzadas para los programadores profesionales. No sienta miedo de leer la
larga lista de caractersticas de PHP, en poco tiempo podr empezar a escribir sus primeros scripts.
Qu se puede hacer con PHP?
PHP puede hacer cualquier cosa que se pueda hacer con un script CGI, como procesar la informacin
de formularios, generar pginas con contenidos dinmicos, o enviar y recibir cookies. Y esto no es todo,
se puede hacer mucho ms.
Existen tres campos en los que se usan scripts escritos en PHP.
Scripts del lado del servidor. Este es el campo ms tradicional y el principal foco de trabajo. Se necesitan
tres cosas para que esto funcione. El intrprete PHP (CGI mdulo), un servidor web y un navegador. Es
necesario correr el servidor web con PHP instalado. El resultado del programa PHP se puede obtener a
travs del navegador, conectndose con el servidor web.
Scripts en la lnea de comandos. Puede crear un script PHP y correrlo sin ningn servidor web o
navegador. Solamente necesita el intrprete PHP para usarlo de esta manera. Este tipo de uso es ideal
para scripts ejecutados regularmente desde cron (en *nix o Linux) o el Planificador de tareas (en Windows).
Estos scripts tambin pueden ser usados para tareas simples de procesamiento de texto.
Escribir aplicaciones de interfaz grfica. Probablemente PHP no sea el lenguaje ms apropiado para
escribir aplicaciones grficas, pero si conoce bien PHP, y quisiera utilizar algunas caractersticas
avanzadas en programas clientes, puede utilizar PHP-GTK para escribir dichos programas. Tambin es
posible escribir aplicaciones independientes de una plataforma. PHP-GTK es una extensin de PHP, no
disponible en la distribucin principal.
PHP puede ser utilizado en cualquiera de los principales sistemas operativos del mercado, incluyendo
Linux, muchas variantes Unix (incluyendo HP-UX, Solaris y OpenBSD), Microsoft Windows, Mac OS X,
RISC OS y probablemente alguno ms. PHP soporta la mayora de servidores web de hoy en da,
incluyendo Apache, Microsoft Internet Information Server, Personal Web Server, Netscape e iPlanet,
Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd y muchos otros. PHP tiene mdulos
disponibles para la mayora de los servidores, para aquellos otros que soporten el estndar CGI, PHP
puede usarse como procesador CGI.
De modo que, con PHP tiene la libertad de elegir el sistema operativo y el servidor de su gusto.
Tambin tiene la posibilidad de usar programacin procedimental o programacin orientada a objetos.
Aunque no todas las caractersticas estndar de la programacin orientada a objetos estn
implementadas en la versin actual de PHP, muchas bibliotecas y aplicaciones grandes (incluyendo la
biblioteca PEAR) estn escritas ntegramente usando programacin orientada a objetos.
Con PHP no se encuentra limitado a resultados en HTML. Entre las habilidades de PHP se incluyen:
creacin de imgenes, archivos PDF y pelculas Flash (usando libswf y Ming) sobre la marcha. Tambin
puede presentar otros resultados, como XHTM y archivos XML. PHP puede autogenerar estos archivos
y almacenarlos en el sistema de archivos en vez de presentarlos en la pantalla.
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
Quizs la caracterstica ms potente y destacable de PHP es su soporte para una gran cantidad de
bases de datos. Escribir un interfaz va web para una base de datos es una tarea simple con PHP. Las
siguientes bases de datos estn soportadas actualmente:
AppServ
AppServ, al igual que otros paquetes instala de forma automtica lo necesario para el desarrollo Web, a
mi es el que mas me gusta porque desarrollo en varios lenguajes y es el nico que no me ha dado
problemas en correr IIS para .Net y ASP y corre por separado el PHP, sin dejar de andar lo otro,
adems es el que configura todo dejndolo casi idntico a como encontraremos nuestro entorno en el
host que colguemos finalmente las aplicaciones, esa es mi visin personal de AppServ.
Que
es
AppServ?
Es un software que permite la instalacin en nuestro entorno Windows, de los siguientes paquetes:
Gratis?
http://www.appservnetwork.com/index.php?newlang=spanish
Instalacin de AppServ
Una vez descargado el AppsServ, basta con un doble click en el instalador que ha descargado de la
Web y luego hacer siguiente, siguiente, varias veces hasta que queda instalado.
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
1) Damos doble click en el icono del instalador que se ha descargado. Aparece la imagen que vemos
debajo, la versin vara de acuerdo a las a las ultimas actuliazaciones de PHP, MySQL y Apache.
Debemos dar, siguiente (next).
3) Aparece la ruta de instalacin por defecto, o caso contrario debemos elegir en cul de las unidades
del disco duro y en que carpeta se desea instalar el AppServ, para efectos de instalacin utilizaremos el
directorio recomendado por defecto, o sea: c:\AppServ, como muestra la imagen, y hacer click en el
botn Next.
4
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
4) En el siguiente formulario se debe elegir los componentes que se desea instalar los cuales aparecen
por defecto marcados cuatro elementos disponibles (apache, mysql, php, phpmyadmin) se puede
desmarcar alguno, se sugiere instalar todos los componentes en razn a que, utilizaremos ms
adelante para las demostraciones correspondientes, hacer click en Next.
5) La siguiente ventana nos muestra tres cuadros de texto, el primero para indicar el nombre del
servidor, el segundo el email del administrador del sistema, el tercero el puerto que por defecto utilizar
el Apache, en este caso por defecto es 80; para ejemplificar utilizaremos el nombre del servidor
www.finesi.edu.pe y en el segundo caso webmaster@finesi.edu.pe, con respecto al puerto lo dejaremos
5
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
en 80, pero si gustan pueden cambiar a otro puerto, finalmente quedara as como se muestra en la
siguiente figura, y hacer click en Next.
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
7) finalmente hacer click en Finish para terminar la instalacin, aparece dos casilleros activados que se
debe dejar por defecto para iniciar la ejecucin del Server Apache y el servidor de base de datos
MySQL.
Programacin Web/AppServ-PHP-MySql
b) Utilizando el IP de la PC.
FINESI - 2010
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
3) Al escribir ipconfig y presionar enter, nos muestra la direccin IP, en este caso 192.168.1.3, as como
tambin, la Mscara de Red y la Puerta de Enlace.
Para probar nuestra primera aplicacin PHP debemos escribir en cualquier editor de texto el siguiente
cdigo y guardarlo en la en una carpeta dentro de la carpeta www (Directorio raz web), en este caso
crearemos la carpeta finesi y dentro de esta carpeta guardaremos el archivo test.php con el siguiente
contenido, se sugiere utilizar el Bloc de Notas.
Programacin Web/AppServ-PHP-MySql
<?php
echo
?>
FINESI - 2010
phpinfo();
10
Programacin Web/AppServ-PHP-MySql
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<?php echo "Hola
</body>
</html>
FINESI - 2010
Finesi"; ?>
Utilice su navegador web para acceder al archivo, con la URL terminando en "/hola.php". Debe escribir
as como sigue http://localhost/finesi/hola.php o http://192.168.1.3/finesi/hola.php pero esto depende de
la configuracin de su servidor web. Tambin puede ver las directivas DocumentRoot y ServerName en
la configuracin de su servidor (en Apache, esto es httpd.conf). Si todo est configurado correctamente,
el archivo ser analizado por PHP y el siguiente contenido aparecer en su navegador:
Note que esto no es como los scripts de CGI. El archivo no necesita ninguna clase especial de permisos
para ser ejecutado. Piense en ellos como si fueran archivos HTML con un conjunto muy especial de
etiquetas disponibles, y que hacen muchas cosas interesantes.
Este programa es extremadamente simple, y no necesita usar PHP para crear una pgina como sta.
Todo lo que hace es mostrar: Hola Mundo usando la sentencia echo().
Para verificar qu clase de navegador web utiliza. Para hacerlo, vamos a consultar la informacin que el
navegador nos enva como parte de su peticin HTTP. Esta informacin es guardada en una variable.
Las variables siempre comienzan con un signo de dlar ("$") en PHP. La variable que vamos a utilizar
en esta situacin es $_SERVER["HTTP_USER_AGENT"].
<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>
Tendremos como resultado:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 1.1.4322; .NET CLR
2.0.50727)
SEPARACION DE INSTRUCCIONES
En PHP las instrucciones se separan igual que en C o Pascal terminando cada sentencia con
un punto y coma.
11
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
boolean
integer
float (nmero de punto flotante, tambin conocido como double)
string
Dos tipos compuestos:
5. array
6. object
Y finalmente dos tipos especiales:
7. resource
8. NULL
En PHP las variables se representan como un signo de pesos seguido por el nombre de la
12
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
VARIABLES VARIABLES
A veces es conveniente tener nombres de variables variables. Dicho de otro modo,
son
nombres de variables que se pueden establecer y
usar dinmicamente. Una variable
normal se establece con una sentencia como:
$a = "Hola";
Una variable variable toma el valor de una variable y lo trata como el nombre de una variable. En el
ejemplo anterior, Hola, se puede usar como el nombre de una variable utilizando dos signos de peso.
p.ej.
$$a = "mundo";
Probemos las siguientes sentencias:
echo "$a ${$a}";
echo "$a $Hola";
Los dos no regresarn Hola mundo
TIPOS DE DATOS
ENTEROS
Los enteros se puede especificar usando una de las siguientes sintaxis:
$a = 1234; # nmero decimal
$a = -123; # un nmero negativo
$a = 0123; # nmero octal (equivalente al 83 decimal)
$a = 0x12; # nmero hexadecimal (equivalente al 18 decimal)
NUMEROS ENTEROS FLOTANTES
Los nmeros en punto flotante ("double") se pueden especificar utilizando cualquiera de las siguientes
sintaxis:
$a = 1.234;
$a = 1.2e3;
CADENAS
13
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
$Num1 / $Num2 );
printf(El modulo de $Num1 y $Num2 es <b>%0.1f</b><br>,
$Num1 % $Num2 );
?>
CONSTANTES
PHP define varias constantes y proporciona un mecanismo para definir ms en tiempo de ejecucin. Las
constantes son como las variables, salvo por las dos circunstancias de que las constantes deben ser
definidas usando la funcin define(), y que
no pueden ser redefinidas ms tarde con otro valor.
Las constantes predefinidas (siempre disponibles) son:
__FILE__
El nombre del archivo de comandos que est siendo interpretado actualmente. Si se usa dentro de un
archivo que ha sido incluido o requerido, entonces se da el nombre del archivo incluido, y no el nombre
del archivo padre.
__LINE__
El nmero de lnea dentro del archivo que est siendo interpretado en la actualidad. Si se usa dentro
de un archivo incluido o requerido, entonces se da la posicin dentro del archivo incluido.
PHP_VERSION
La cadena que representa la versin del analizador de PHP en uso en la actualidad.
PHP_OS
El nombre del sistema operativo en el cul se ejecuta el analizador PHP. TRUE
Valor
verdadero.
FALSE
Valor falso.
E_ERROR
Denota un error distinto de un error de interpretacin del cual no es posible recuperarse.
E_WARNING
Denota una condicin donde PHP reconoce que hay algo errneo, pero continuar de todas formas;
pueden ser capturados por el propio archivo de comandos.
E_PARSE
El interprete encontr sintaxis invlida en el archivo de comandos. La recuperacin no es
posible.
E_NOTICE
Ocurri algo que pudo ser o no un error. La ejecucin contina. Los ejemplos incluyen usar una
cadena sin comillas como un ndice "hash", o acceder a una variable que no ha sido inicializada.
Las constantes E_* se usan tpicamente con la funcin error_reporting()
para
configurar el nivel de informes de error.
Se pueden definir constantes adicionales usando la funcin define().
Ntese que son constantes, con una constante slo se pueden representar datos escalares vlidos.
Veremos un ejemplo del uso de estas constantes:
<?php
function report_error($archivo, $linea, $mensaje) {
16
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
adivina.htm
<HTML>
<BODY>
<FORM METHOD=GET ACTION="adivina.php"> En que numero del 1
al 10 estoy pensando?
<INPUT NAME="adivina" TYPE="Text">
<BR>
<BR>
17
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>
adivina.php
<HTML>
<HEAD></HEAD>
<BODY>
<?php srand((double)microtime()*1000000);
$Numero = rand(1,10);
if ($adivina > $Numero) {
echo "Fue muy grande"; echo "<BR>Yo pens el nmero
$Numero. Lo siento no ";
}
if ($adivina < $Numero) {
echo "Fue muy pequeo"; echo "<BR>Yo pens el nmero $Numero. Lo siento no ";
}
?>
GANASTE
</BODY>
</HTML>
if...elseif...else
La sentencia IF...ELSEIF...ELSE permite ejecutar varias condiciones en cascada.
Para este caso veremos un ejemplo, en el que utilizaremos los operadores lgicos.
<?php
if ($nombre == ""){
echo "T no tienes nombre";
} elseif (($nombre=="eva") OR ($nombre=="Eva")) {
echo "
echo "Tu nombre es EVA";
} else {
echo "Tu nombre es " . $nombre;
}
switch...case...default
Una alternativa a if...elseif...else, es la sentencia switch, la cual evala y compara cada expresin de
la sentencia case con la expresin que evaluamos, si llegamos al final de la lista de case y encuentra
una condicin Verdadera, ejecuta el cdigo de bloque que haya en default. Si encontramos una
condicin verdadera debemos ejecutar un break para que la sentencia switch no siga buscando en
la lista de case. Veamos un ejemplo.
<?php
switch ($dia) {
case "Lunes":
18
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
?>
do...while
Esta sentencia es similar a while, salvo que con esta sentencia primero ejecutamos el bloque de cdigo y
despus se evala la condicin, por lo que el bloque de cdigo se ejecuta siempre al menos una vez.
<?php
$num = 1;
do {
echo $num;
if ($num == 3){
echo "Aqu nos salimos \n";
break
}
$num++
} while ($num < 5);
?>
for
El ciclo for no es estrictamente necesario, cualquier ciclo for puede ser sustituido fcilmente por otro while.
Sin embargo, el ciclo for resulta muy til cuando debemos ejecutar un bloque de cdigo a condicin de que
una variable se encuentre entre un valor mnimo y otro mximo. El ciclo for tambin se puede romper
mediante la sentencia break.
<?php
for ($num = 1; Snum <=5; $num++){
echo $num;
if ($num == 3){
echo "Aqu nos salimos \n";
break
}
}
?>
A continuacin muestro las 4 formas en que se puede usar el ciclo for.
/* ejemplo 1 */
for ($i = 1; $i <= 10; $i++) {
print $i;
}
/* ejemplo 2 */
for ($i = 1;;$i++) {
if ($i > 10) {
break;
}
}
print $i;
}
/* ejemplo 3 */
$i = 1;
for (;;) {
20
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
$numelentos; $i++)
{
print ("La ciudad $i es $ciudad[$i] <BR>\n");
}
?>
Si no se especifica, el primer ndice es el cero, pero podemos utilizar el operador => para especificar el
ndice inicial.
$ciudad = array(1=>"Pars", "Roma", "Sevilla", "Londres");
Un segundo tipo, son las tablas asociativas, en las cules a cada elemento se le asigna un valor (key)
para acceder a l.
Para entenderlo, que mejor que un ejemplo, supongamos que tenemos una tabla en al que cada elemento
almacena el nmero de visitas a nuestra web por cada da de la semana.
Utilizando el mtodo clsico de ndices, cada da de la semana se representara por un entero, 0 para
lunes, 1 para martes, etc.
$visitas[0] = 200;
$visitas[1] = 186;
Si usamos las tablas asociativas sera
$visitas["lunes"] = 200;
$visitas["martes"] = 186;
o bien,
$visitas = array("codigo">$visitas = array("lunes"=>200;
"martes"=>186);
Ahora bien, recorrer una tabla y mostrar su contenido es sencillo utilizando los ndices, pero cmo
hacerlo en las tablas asociativas?. La manipulacin de las tabas asociativas se a hace travs de funciones
que actan sobre un puntero interno que indica la posicin. Por defecto, el puntero se sita en el primer
elemento aadido en la tabla, hasta que es movido por una funcin:
current - devuelve el valor del elemento que indica el puntero
pos - realiza la misma funcin que current
reset - mueve el puntero al primer elemento de la tabla end - mueve el
puntero al ltimo elemento de la tabla next - mueve el puntero al elemento
siguiente
prev - mueve el puntero al elemento anterior
count - devuelve el nmero de elementos de una tabla.
Veamos un ejemplo de las funciones anteriores:
<?php
$semana = array("lunes", "martes", "mircoles", "jueves",
"viernes", "sbado", "domingo");
echo count($semana); //7
//situamos el puntero en el primer elemento reset($semana);
22
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
Tablas multidimensionales
Las tablas multidimensionales son simplemente tablas en las cuales cada elemento
es a su vez otra tabla.
<?php
$calendario[] = array (1, "enero", 31);
$calendario[] = array (2, "febrero", 28);
$calendario[] = array (3, "marzo", 31);
$calendario[] = array (4, "abril", 30);
$calendario[] = array (5, "mayo", 31);
while (list($clave, $valor ) = each($calendario)){
{
$cadena = $valor[1];
$cadena .= " es el mes nmero " . $valor[0];
$cadena .= "y tiene " . $varlor[2] . " das<BR>";
echo $cadena;
}
?>
La funcin list() es ms bien un operador de asignacin, lo que hace es asignar valores a unas lista de
23
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
variables. En este caso los valores son extrados de una tabla por la funcin each().
FORMULARIOS
Los Formularios no forman parte de PHP, sino del lenguaje estndar de Internet, HTML, pero
como stos van a aparecer muchas veces durante el curso, vamos a dedicar esta algunas lneas a ellos.
Todo
formulario
comienza
con la
etiqueta
<FORM ACTION="lo_que_sea.php"
METHOD="post/get">. Con ACTION indicamos el script que va procesar la informacin que
recogemos en el formulario, mientras que METHOD nos indica si el usuario del formulario va a enviar
datos (post) o recogerlos (get). La etiqueta </FORM> indica el final del formulario.
A partir de la etiqueta <FORM> vienen los campos de entrada de datos que pueden ser:
Botn de comando:
<input type="submit" value="enviar" name="enviar">
Cuadro de texto:
<input type="text" name="nombre" size="20" value="jose"> Veamos un ejemplo con PHP: Las siguientes
dos pginas tienen el objetivo de preguntar cul es tu equipo de ftbol favorito y desplegar en otra pgina el
seleccionado (equipo.htm y equipo.php).
equipo.htm
<html>
<title>Equipo Favorito</title>
<body>
<form method=post ACTION=equipo.php> Cual es tu equipo
de ftbol favorito ?
<input name=equipo type TEXT>
<br>
<br>
<input type=submit>
</form>
</body>
<html>
<html>
<body>
Tu equipo favorito es:
<?php Echo <h1><B>$equipo</B></h1>; ?>
</body>
</html>
Hay que poner especial atencin en el parmetro name de un elemento del formulario ya que es el
mismo nombre con el que se le referenciar en php, como pudimos ver en el ejemplo anterior el
elemento <input name=equipo type TEXT> lo manejamos en php como $equipo, as es con
todos los elementos de formularios.
Cuadro de texto con barras de desplazamiento:
24
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
Menciname
http:// http://
http:// http://
</textarea>
<br>
<br>
<input type=submit>
</form>
</body>
<html>
sites.php
<html>
<body>
Tus webs favoritos son:<br>
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
><BR>
<BR>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>
checkboxes.php
<html>
<body>
<?php
if (isset($sel1)) Echo $sel1
<br>; if (isset($sel2)) Echo
$sel2 <br>; if (isset($sel3))
Echo $sel3 <br>;
?>
</body>
</html>
Botn de radio u opcin:
<input type="radio" value="azul" checked name="color"> Ahora veamos un ejemplo con PHP:
Programa que nos presenta una suma, nosotros tenemos que elegir la respuesta entre tres opciones
posibles y la salida nos muestra la opcin que elegimos
(radio.htm
y
radio.php). radio.htm
<HTML>
<BODY>
<FORM METHOD=GET ACTION=radio.php> Cuantos son 2 + 2?
<BR>
<BR>
<INPUT NAME=Resp TYPE=Radio VALUE=44>44
<BR>
<INPUT NAME=Resp TYPE=Radio VALUE=22>22
<BR>
<INPUT NAME=Resp TYPE=Radio VALUE=4>4
<BR>
<BR>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
radio.php
<HTML>
<BODY>
<?php Echo seleccionaste $Resp;?>
</BODY>
</HTML>
26
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
Men desplegable:
<select size="1 class="codigo"><select size="1" name="dia">
<option selected value="lunes">lunes</option>
<option>martes</option>
<option value="miercoles">miercoles</option>
</select>
Ahora veamos un ejemplo en PHP:
Programa que pregunta opciones para armar una computadora y despliega las opciones elegidas
(lista.htm y lista.php).
lista.htm
<HTML>
<HEAD></HEAD>
<BODY>
<FORM METHOD=GET ACTION=lista.php> Elije la computadora a comprar
<BR>
<BR>
<SELECT NAME=compu>
<OPTION>Pentium</OPTION>
<OPTION>Celeron</OPTION>
<OPTION>K6</OPTION>
<OPTION>MAC</OPTION>
</SELECT>
<BR>
<BR>
Selecciona los dispositivos de la computadora?
<BR>
<BR>
<SELECT NAME=dispo[] MULTIPLE>
<OPTION>KIT MULTIMEDIA</OPTION>
<OPTION>QUEMADORA</OPTION>
<OPTION>WEB CAM</OPTION>
<OPTION>MICROFONO</OPTION>
</SELECT>
<BR>
<BR>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>
lista.php
<HTML>
<BODY>
<?php
Echo Seleccionaste una computadora: <B>$compu</B> con:<br>;
Echo $dispo[0]<br>; Echo
$dispo[1]<br>;
Echo
27
Programacin Web/AppServ-PHP-MySql
$dispo[2]<br>;
$dispo[3]<br>;
?>
FINESI - 2010
Echo
</BODY>
</HTML>
Campo oculto:
<input type="hidden" name="edad" value="55">
Este ltimo tipo de campo resulta especialmente til cuando queremos pasar datos ocultos en un
formulario.
Ahora pasemos a ver ejemplos que necesitan mas cdigo PHP, como son ciclos y arrays,
implementndolos en conjunto con los formularios.
Para el uso del FOR un programita para crditos bancarios (banco.htm y banco.php).
banco.htm
<HTML>
<HEAD></HEAD>
<BODY>
<B>Crdito bancario</B>
<FORM METHOD=POST ACTION="banco.php">
<BR>
Cual de estos paquetes te interesa tomar?<BR><BR>
<INPUT NAME="valor" TYPE="Radio" VALUE=1000>Nuestro paquete de $1,000 Con el 5.0% interes
<BR>
<INPUT NAME="valor" TYPE="Radio" VALUE=5000>Nuestro paquete de $5,000 Con el 6.5% interes
<BR>
<INPUT NAME="valor" TYPE="Radio" VALUE=10000>Nuestro paquete de $10,000 Con el 8.0% interes
<BR>
<BR>
Cuanto es lo que deseas pagar al mes ?
<INPUT NAME=pagomes TYPE=Text SIZE=5>
<BR>
<BR>
<INPUT TYPE=SUBMIT VALUE="Pulse aqu para calcular">
</FORM>
</BODY>
</HTML>
banco.php
<HTML>
<HEAD></HEAD>
<BODY>
<?php
$Duracion=0; switch
($valor) { case 1000:
$Interes = 5;
break;
28
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
case 5000:
$Interes = 6.5;
break;
case 10000:
$Interes = 8; break;
default:
echo "No seleccionaste ningn paquete favor de presionar el botn back y seleccionar alguno";
exit;
}
while ($valor > 0)
{
$Duracion = $Duracion + 1;
$Mensualmente = $pagomes - ($valor * $Interes/100);
if ($Mensualmente<=0)
{
echo "Tu necesitas hacer pagos mas grandes!";
exit;
}
$valor = $valor - $Mensualmente;
}
echo "La duracion es de: $Duracion meses con un porcentaje de
intereses del $Interes.";
?>
</BODY>
</HTML>
El siguiente programa demuestra cmo se pueden trabajar los array como elementos
hash (estados.php y capital.php).
estados.php
<html>
<head>
<title>Estados de Mxico</title>
</head>
<body bgcolor="#FFFFFF">
De que estado te gustara conocer su capital?
<?
$Estados=array(1=>"Colima","Jalisco","Sinaloa");
echo
"<form
method=post action='capital.php'>"; echo "<select name='estado'>";
for ($counter=1; $counter<4; $counter++)
echo "<option value=$counter>$Estados[$counter]</option>";
echo "</select><br><br>"; echo "<input
type=submit>"; echo "</form>";
?></body>
</html>
capital.php
29
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
<html>
<head>
<title>Capitales</title>
</head>
<body bgcolor="#FFFFFF">
<?php
$Capital=array(1=>"Colima","Guadalajara","Culiacan");
for ($counter=0;$counter<4;$counter++)
{
if ($counter==$estado)
{
echo "la capital del estado elegido es
&Capital[$counter]";
}
}
?>
</body>
</html>
Como podemos observar los dos archivos tienen extensin .php, esto se debe a que es necesario
ejecutar cdigo php en los dos, para poder formar dinmicamente las dos pginas.
Para tener ms material con formularios realizaremos un programa PHP que contenga varios elementos de
formulario juntos:
Desarrollar un programa en PHP que pida el Nombre (textbox), el apellido(textbox), la edad (textbox),
domicilio (text area), seleccione el rango de sueldo que le gustara ganar (listbox) y que seleccione como
considera as mismo su desempeo laboral (radio button). El programa no aceptar curriculums que
elijan un sueldo muy bajo, ni un sueldo extremo, ni tampoco si se considera psimo (minicu.htm y
minicu.php).
minicu.htm
<HTML><HEAD></HEAD><BODY><B>Minicurriculum </B>
<FORM METHOD=POST ACTION="minicu.php"> Nombres:
<INPUT NAME="nombres" TYPE="Text"> Apellidos:
<INPUT NAME="apellidos" TYPE="Text"> Edad:
<INPUT NAME="edad" TYPE="Text"SIZE="3">
<BR>
<BR> Domicilio:
<TEXTAREA NAME="Domicilio" ROWS=4 COLS=40>
</TEXTAREA>
<BR>
<BR>
Que salario deseas ganar?
<SELECT NAME="Salario">
<OPTION VALUE=0> Menos de $1000</OPTION>
<OPTION VALUE=1000>Entre $1,000 y $3,000</OPTION>
30
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
BASES DE DATOS
Hasta ahora hemos visto la funciones bsicas de PHP, lo que viene a continuacin ya es
sobre la forma en como podemos acceder a bases de datos, veremos como acceder a ellas en dos
sistemas de bases de datos diferentes, los cuales son MySQL Server y Microsoft Access.
El primer sistema que veremos es MySQL Server, pero antes de ver cdigo PHP, aprenderemos
un poco de este sistema, para los ejemplos en PHP ya va a ser necesario que
31
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
tengamos una base de datos creada por lo tanto pondremos atencin en las formas en que
estas se crean.
QUE ES MYSQL
Administrador de Base de Datos
Una base de datos es un conjunto de datos estructurados. Esto podra ser cualquier cosa, desde
una simple lista de compras hasta una galera de pinturas o la gran cantidad de informacin que se
maneja en una corporacin. Para agregar, acceder y procesar los datos almacenados en una
base de datos computacional, se necesita un sistema administrador de base de datos tal como MySQL.
Adems los computadores son muy buenos manejando grandes cantidades de datos, el
administrador de base de datos juega un rol central en la computacin, ya sea como utilidad autnoma o
parte de otra aplicacin.
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
Esta lista probablemente no es igual en todas las mquinas, pero las bases de datos mysql y test
estn siempre entre ellas. La base de datos mysql se requiere porque en ella se describe la
informacin de los privilegios de acceso a los usuarios. La base de datos test proporciona el espacio
de trabajo para los usuarios.
Seleccin de una base de datos
Para seleccionar o acceder a una base de datos determinada se utiliza el comando
USE:
mysql> USE test
Database changed
Una vez, que se ha realizado la conexin con xito se puede comenzar a trabajar con la base
de datos, pero siempre y cuando se tengan los permisos adecuados. Si no se tienen
los permisos el administrador debe darle los permisos al usuario para poder trabajar, esto se realiza
con la ejecucin del siguiente comando:
mysql> GRANT ALL ON nombre_database.* TO nombre_usuario;
Creacin de una base de datos
Para crear una base de datos se debe tener permiso para poder crear base de datos en el servidor
MySQL , si se tiene el permiso entonces la sentencia a seguir es:
mysql> CREATE DATABASE nombre_database;
Bajo Unix, los nombres de las bases de datos y de las tablas son sensibles, esto quiere decir que se
hace diferencia entre minsculas y maysculas, as es que para referirse a una base de datos
determinada hay que llamarla tal como se le nombro cuando fue creada.
Creacin de tablas
Para crear las tablas que va a contener la base de datos, se realiza de la siguiente forma:
mysql> CREATE TABLE nombre_tabla(campo_1 tipo(tamao), campo_2
tipo(tamao),...,campo_n tipo(tamao));
El campo indica el nombre de la columna y tipo(tamao) especfica el tipo de dato y el espacio que se
va a conservar para cada dato almacenado en esa columna.
Ejemplo:
codigo int(5), nombre char(25), fecha date, etc.. Cuando se trata de fechas no se especfica el tamao,
puesto que ya est determinado. Para visualizar las tablas que tiene una base de datos se usa el mismo
comando utilizado para ver las bases de datos, pero con la diferencia de que en vez de database se
coloca tables, es decir:
mysql> SHOW TABLES;
Para verificar que la tabla ha sido creada de la forma indicada, se usa el comando DESCRIBE. Ejemplo:
34
Programacin Web/AppServ-PHP-MySql
FINESI - 2010
Esto es muy til cuando se olvida el nombre o tipo de una columna. El Field indica el nombre de la
columna, Type es el tipo de dato que acepta esa columna, Null indica si la columna puede contener
valores NULL, Key indica la clave por la cual la columna se va a indexar y Default especfica el valor
por defecto que tiene la columna.
35
Programacin
FINESI - 2010
Web/AppServ-PHP-MySql
Programacin
FINESI - 2010
Web/AppServ-PHP-MySql
Programacin
FINESI - 2010
<FORM ACTION="agregar.php">
<TABLE>
<TR>
<TD>Nombre:</TD>
<TD><INPUT
TYPE="text"
NAME="nombre"
MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Direccion:</TD>
<TD><INPUT
TYPE="text"
NAME="direccion"
MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Telefono:</TD>
<TD><INPUT
TYPE="text"
NAME="telefono"
MAXLENGTH="30"></TD>
Web/AppServ-PHP-MySql
SIZE="20"
SIZE="20"
SIZE="20"
</TR>
<TR>
<TD>Email:</TD>
<TD><INPUT
TYPE="text"
NAME="email"
SIZE="20"
MAXLENGTH="30"></TD>
</TR>
<TR>
<TD>Imagen:</TD>
<TD><INPUT
TYPE="text"
NAME="imagen"
SIZE="20"
MAXLENGTH="30"></TD>
</TR>
</TABLE>
<INPUT TYPE="submit" NAME="accion" VALUE="Grabar">
</FORM>
<hr>
<?php
include("conec.php");
$link=Conectarse();
$result=mysql_query("select * from tablacurso",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR>
<TD> Nombre</TD>
<TD> Direccin </TD>
<TD> Telefono </TD>
<TD> Email </TD>
<TD> Imagen </TD>
</TR>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td> %s</td><td> %s </td><td> 
;%s </td><td> %s </td><td> <img
38
Programacin
FINESI - 2010
Web/AppServ-PHP-MySql
src=%s> </td></tr>",
$row["nombre"],$row["direccion"],$row["telefono"],$row["email
"],$row["imagen"]);
}
mysql_free_result($result);
?>
</table>
</body>
</html>
agregar.php
<?php
include("conec.php");
$link=Conectarse();
$Sql="insert into tablacurso
(nombre,direccion,telefono,email,imagen) values
('$nombre','$direccion', '$telefono', '$email', '$imagen')";
mysql_query($Sql,$link);
header("Location: insertareg.php");
?>
Eliminar registros
Pasemos a la eliminacin de registros, este consta de dos archivos, los dos .php el primero es
para elegir el registros a borrar y el segundo lo borra (eliminareg.php y borra.php).
eliminareg.php
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
<?php
include("conec.php");
$link=Conectarse();
$result=mysql_query("select * from tablacurso",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR>
<TD> Nombre</TD>
<TD> Direccin </TD>
<TD> Telefono </TD>
<TD> Email </TD>
<TD> Imagen </TD>
<TD> Borra </TD>
</TR>
<?php
39
Programacin
FINESI - 2010
Web/AppServ-PHP-MySql
while($row = mysql_fetch_array($result)) {
printf("<tr><td> %s</td><td> %s </td><td> 
;%s </td><td> %s </td><td> %s </td><
/td><td><a href=\"borra.php?id=%d\">Borra</a></td></tr>",
$row["nombre"],$row["direccion"],$row["telefono"],$row["email
"],$row["imagen"],$row["ID"]);
}
mysql_free_result($result);
?>
</table>
</body>
</html>
borra.php
<?php
include("conec.php");
$link=Conectarse();
mysql_query("delete from tablacurso where ID = $id",$link);
header("Location: eliminareg.php");
?>
Modificar registros
Veremos un ejemplo de modificar registros a la base de datos, consta de tres archivos
diferentes, el primero para introducir la consulta por el campo nombre, el segundo para realizar
los cambios necesarios y el tercero para modificar la base de datos (consulta.htm, busca.php y
modifica.php).
consulta.htm
<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de modificar</H1>
<FORM ACTION="busca.php">
Nombre:
<INPUT TYPE="text" NAME="nombre" SIZE="20" MAXLENGTH="30">
<INPUT TYPE="submit" NAME="accion" VALUE="Buscar">
</FORM>
</body>
</html>
busca.php
<html>
<body>
<?php
include("conec.ph
p");
$link=Conectarse();
$Sql="select * from tablacurso where nombre like '%$nombre%'";
40
Programacin
FINESI - 2010
Web/AppServ-PHP-MySql
echo $Sql;
$result=mysql_query($Sql,$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR>
<TD> Nombre</TD>
<TD> Direccin </TD>
<TD> Telefono </TD>
<TD> Email </TD>
<TD> Imagen </TD>
</TR>
<form name="form1" method="post" action="modifica.php">
<?php
while($row = mysql_fetch_array($result))
{
printf("<tr><td><INPUT TYPE='text' NAME='nombre' SIZE='20' MAXLENGTH='30'
value='%s'></td><td> <INPUT TYPE='text' NAME='direccion' SIZE='20'
MAXLENGTH='30'
value='%s'> </td><td> <INPUT
TYPE='text'
NAME='telefono'
SIZE='20'
MAXLENGTH='30'
value='%s'> </td><td> <INPUT TYPE='text' NAME='email' SIZE='20'
MAXLENGTH='30'
value='%s'> </td><td> <INPUT
TYPE='text'
NAME='imagen' SIZE='20' MAXLENGTH='30' value='%s'> </td></tr>",
$row["nombre"],$row["direccion"],$row["telefono"],$row["email
"],$row["imagen"]);
}
mysql_free_result($result);
?>
</form>
</body>
</html>
modifica.php
<?php
include("conec.ph
p");
$link=Conectarse();
$Sql="UPDATE
tablacurso
SET
direccion='$direccion',
email='$email',
imagen='$imagen'
WHERE
mysql_query($Sql,$link);
header("Location: consulta5.php");
?>
41
nombre='$nombre',
telefono='$telefono'
nombre='$nombre'";