Vous êtes sur la page 1sur 11

Ing.

Toms Urbina
Programacin Web y Desarrollo Plataforma Web

Venta de Inmuebles - Parte 4, Reporte de Ciudades con PHP


MySQL
En este punto, que es una de las partes ms esperadas, veremos como realizar Reportes
de Ciudades mediante PHP extrayendo datos desde la Base de Datos MySQL.
Si bien el phpMyAdmin, puede ser una forma habitual por la cual Webmasters y
Programadores, ingresamos a las bases de datos a realizar modificaciones rpidas, esta no
es una forma que pueda utilizar un simple usuario, o visitante, debido a su complejidad y
lo peligroso que puede ser para nuestros datos.
Es por ello que debemos desarrollar en nuestro sitio, herramientas que
permitan trabajar con la informacin de manera fcil, a nuestros usuarios, para ello
vamos a utilizar el lenguaje PHP, que acceder a la base de datos MySQL y mostrar la
informacin en el navegador, en formato xHTML.

Listando las Ciudades


Lo primero que realizaremos ser un Reporte de Ciudades, o sea mostrar una Lista de las
Ciudades ingresadas en nuestra Base de Datos. Para este reporte que se mostrara en una
pgina Web, vamos a utilizar lo que es hoy da la mejor forma de tabular datos, o sea una
tabla.
Las tablas son estructuras xHTML que muestran varias filas de datos, con informacin en
columnas, por ejemplo:

ID Ciudad
1
2
3
4
El cdigo HTML de esta tabla sera:
<table>
<tr>
<td>ID Ciudad</td>
<td>Nombre</td>
</tr>
<tr>
<td>1 </td>

Nombre
Madrid
Montevideo
Mxico
Buenos Aires

Ing. Toms Urbina


Programacin Web y Desarrollo Plataforma Web
<td>Madrid</td>
</tr>
<tr>
<td>2 </td>
<td>Montevideo</td>
</tr>
<tr>
<td>3</td>
<td>Mxico</td>
</tr>
<tr>
<td>4 </td>
<td>Buenos Aires</td>
</tr>
</table>
Obviamente que en esa tabla las ciudades estn puestas manualmente y si agregamos 1 o
2 en la tabla ciudades no aparecern, esto es porque hasta ahora el ejemplo sigue
siendo Esttico.

Reporte Dinmico de Ciudades


A la tabla esttica con datos fijos, vamos a realizarla ahora Dinmica, esto quiere decir
que genere automticamente una fila de la tabla por cada ciudad de la tabla ciudades.
Para realizar esto, vamos a utilizar PHP, mediante el vamos a hacer lo siguiente:
1.
2.
3.
4.
5.

Conectarnos al MySQL
Seleccionar la base de datos
Seleccionar la tabla ciudades
Mostrar un rengln cada cuidad de la tabla ciudades
Cerrar la base de datos

PHP, tiene una orden para cada uno de estas 5 necesidades, estas rdenes o funciones
son:
mysql_connect que tiene como funcin conectar con el MySQL

Ing. Toms Urbina


Programacin Web y Desarrollo Plataforma Web
mysql_select_db su funcin es seleccionar una Base de Datos del Servidor MySQL
mysql_query ejecuta una consulta SQL, como por ejemplo seleccionar una tabla (en
este caso ciudades)
mysql_fetch_array obtiene de la tabla los datos de un registro
mysql_free_result libera la memoria de los registros
mysql_close cierra la conexin con la base de datos
Y nos esta faltando la manera de repetir esa lectura de registros para cada uno de los
elementos de la tabla ciudad.
Para esto utilizaremos while, que justamente lo que hace es repetir un bloque de ordenes
mientras se cumple una determinada condicin.
Todas estas funciones, su forma de trabajo y un ejemplo lo tienen ampliado en el
tutorial Listado de Registros PHP / MySQL, que tambin puede servir de apoyo.
Pero vamos a un ejemplo concreto del Reporte de Ciudades, si recordamos el ejemplo de
la Tabla Esttica, tenemos una filas por cada ciudad, esto es lo que debemos repetir para
cada registro de la Tabla ciudades.
PHP es un lenguaje, que nuestro navegador (Firefox, Internet Explorer u otro) no
comprenden, recordemos que solo comprenden el lenguaje HTML, por tanto comencemos
por esa parte, o sea la Estructura Bsica de un Documento HTML (pueden repasar este
concepto en las guas de HTML vistas anteriormente).
<html>
<head>
<title>Reporte
</head>
<body>
</body>
</html>

de Ciudades</title>

Ese cdigo ser la base de este reporte, <html> y </html> indican el comienzo y fin de la
pgina xHTML respectivamente. <head> y</head> indican el comienzo y fin de la
cabecera de la pgina, donde nicamente hemos definido el titulo, mediante la
declaracin
<title>Reporte
de Ciudades</title> que
har
que
en

Ing. Toms Urbina


Programacin Web y Desarrollo Plataforma Web
nuestro navegador arriba en la barra azul, diga Reporte de Ciudades, como se ve en la
imagen.

Por ultimo dentro de <body> y </body> escribiremos todas las rdenes xHTML para
mostrar el Reporte de Ciudades, mediante una tabla xHTML, el cdigo quedara as:
<html>
<head>
<title>Reporte de Ciudades</title>
</head>
<body>
<h1>Reporte de Ciudades</h1>
<table>
<tr>
<td>ID Ciudad</td>
<td>Nombre</td>
</tr>
<tr>
<td>1 </td>
<td>Madrid</td>
</tr>
</table>
</body>
</html>
Observen que tambin he agregado un titulo que ser visible en el navegador utilizando
las etiquetas de encabezado principal <h1>Reporte de Ciudades</h1>
Como ven, luego de titulo ID Ciudad y Nombre, se muestra solamente una ciudad que
es Madrid, esto es porque hemos creado solo una fila, aparte del titulo, la fila esa esta en
rojo para identificarla.
Esa fila es la que vamos a repetir tantas veces como ciudades tengamos en la Tabla
ciudades de nuestra Base de Datos, sean 2, 50 o 20.

Ing. Toms Urbina


Programacin Web y Desarrollo Plataforma Web

Agregando el Cdigo PHP


Hasta ahora nuestro cdigo es solo HTML, agregaremos el PHP que trabajara con la Base
de Datos, vamos al cdigo completo ya con el PHP (el PHP agregado se ve en rojo), que
seria as:

Ing. Toms Urbina


Programacin Web y Desarrollo Plataforma Web
Este cdigo lo pegaremos en un archivo llamado listadociudades.php que en mi caso lo
guarde en c:\Apache\htdocs\bienesraices, como ven el cdigo PHP lo hemos metido
dentro del HTML , para saber donde comienza y termina cada trozo de cdigo PHP,
siempre debemos utilizar <?php y ?> para comenzar y finalizar respectivamente. Puede
haber tantos trozos de cdigo como se necesiten.
Cuando un Usuario llama la pgina listadocuidades.php desde su Navegador, el
navegador le pide la pgina al Servidor, el servidor ejecuta las ordenes y funciones PHP,
las convierte en xHTML y las enva al navegador del usuario, y este navegador las
muestra. En nuestro navegador JAMAS veremos cdigo PHP, ya que es un lenguaje
de Servidor.

Analicemos nuestro cdigo PHP lnea por lnea:


$conexion
=
mysql_connect(localhost,
usuariobase,
topsecret);
Se conecta con el servidor MySQL, para esto le indicamos el Nombre del
Servidor, localhost significa el Servidor local o sea nuestro PC (o si estamos e Internet,
nuestro hosting), usuariobase es el nombre de usuario de mysql (recuerden que al
instalar AppServ le dejamosroot), y topsecret es la contrasea tambin del MySQL, en
ambos casos usuario y contrasea son los mismos que usaron al instalar MySQL y son los
mismos que usan para entrar al phpMyAdmin (usuariobase=root, topsecret=a).
mysql_select_db(inmobiliaria);
Luego de Conectarse con el Servidor, tenemos que elegir cual de todas las Bases de
Datos queremos usar, en este caso usaremos inmobiliaria (capaz es la nica que tienen)
que es la que habamos creado anteriormente.
$tabla = mysql_query(SELECT * FROM ciudades);
Luego de elegir la Base de Datos, tenemos que Seleccionar la Tabla y Registros con que
vamos a trabajar. La opcin SELECT * FROMciudades, seleccionar todos los Campos (por
eso asterisco *) de la Tabla ciudades. Con esto entonces vamos a poder trabajar con las
10, 20, 3, o 100 ciudades ingresadas.
Pero a estas ciudades, las vamos a ir tomando una por una, por eso tenemos la siguiente
orden:
while ($registro = mysql_fetch_array($tabla))
Hasta cuando lo repite ?? hasta que se deje de cumplir la condicin, cual es la condicin
?? pues en palabras la condicion es, obtener un registro nuevo, en cdigo se hace
mediante:

Ing. Toms Urbina


Programacin Web y Desarrollo Plataforma Web
$registro = mysql_fetch_array($tabla)
Cuando llega al final de la Tabla, no se cumplir mas la condicin del while y dejara de
repetirse esa porcin de cdigo, por tanto si hay 3 ciudades obtiene 3 y muestra tres
veces el bloque, y si hay 10 lo repetir 10 veces, Cual bloque de ordenes repite pues este,
que es el que esta entre llaves {}:
<tr>
<td>1
<td>Madrid</td>
</tr>

</td>

Vean que ese cdigo es hasta ahora solo HTML, no PHP porque vimos que antes
del <tr> cerramos la seccin de PHP con ?> y la comenzamos luego del </tr> con <?php.
Por ultimo:
mysql_free_result($tabla);
Libera de la memoria los Registros Seleccionados de la Tabla (esto es para no recargar el
servidor ya que como hemos dicho puede estar recordando 2, 3, 50 o 100 ciudades)
mysql_close($conexion);
Cierra la base de datos, dejando libre esa conexin.
Para visualizarlo vamos a escribir esto en nuestro navegador:
http://localhost/BienesRaices/listadociudades.php
y veremos, como indica la imagen:

Ing. Toms Urbina


Programacin Web y Desarrollo Plataforma Web

Queda poco claro sin bordes en la tabla, por tanto en la lnea:


<table>
Vamos a escribir as:
<table border=1>
Grabamos, hacemos F5 (Refreh) en nuestro navegador y va a lucir como la imagen:

No queda bonito pero al menos vemos cada fila, que corresponde a cada ciudad. En este
punto, otra cosa que llama la atencin es que yo tengo 4 ciudades y ah se repite 4 veces
Madrid, porque sucede esto ?

Ing. Toms Urbina


Programacin Web y Desarrollo Plataforma Web
Si miramos el cdigo del while,

...
<?php
$conexion = mysql_connect('localhost', 'usuariobase', 'topsecret');
mysql_select_db('inmobiliaria');
$tabla = mysql_query('SELECT * FROM ciudades');
while ($registro = mysql_fetch_array($tabla)) {
?>
<tr>
<td>1</td>
<td>Madrid</td>
</tr>
<?php
}
mysql_free_result($tabla);
mysql_close($conexion);
?>

...
Vemos que repite lo que hay en rojo, y justamente ah solo dice 1 y Madrid. O sea que si
bien el numero de filas (ahora el mio son 4) corresponde a las 4 ciudades ingresadas, no
esta mostrando los cuatro ID y nombre de cada ciudad, esto pasa porque aun esa parte
es Esttica y no Dinmica. Por eso, vamos a modificarla as:
Donde dice 1 vamos a sustituir por <?php echo $registro[id]; ?> y donde dice Madrid,
vamos a sustituirlo por <?php echo $registro[nombre]; ?>, el cdigo de nuestra pagina en
ese punto quedara as:

...

Ing. Toms Urbina


Programacin Web y Desarrollo Plataforma Web

...
Ah esta la modificacin, y ahora si vamos las ciudades como corresponde, tal como se
muestra en la imagen:

Analicemos esta ultima parte del cdigo. Cuando hacemos el while en $registro queda
guardada la informacin de 1 registro de la tabla (por ejemplo el primero Madrid), cada
registro de ciudades tiene 2 campos id y nombre, que guardan el numero de

Ing. Toms Urbina


Programacin Web y Desarrollo Plataforma Web
identificacin de la ciudad y su nombre, respectivamente. Es por eso que luego usamos
as: $registro[id] para obtener de ese registro solo el numero de ciudad
o $registro[nombre] para obtener solo el nombre de esa ciudad.
Completamos la orden con un <?php y ?> para indicar que ah no es xHTML si no
cdigo PHP y por ltimo, la orden echo muestra en una pgina un valor, en el ejemplo
vimos que primero muestra el id as:
<?php echo $registro['id']; ?>
Y el nombre as:
<?php echo $registro['nombre']; ?>
Ambos valores estn dentro de las correspondientes <td> </td> para que salgan en cada
columna de la tabla, y esto se repite por cada ciudad, logrando de esa forma
nuestro Reporte de Ciudades.
Ahora como tarea intente hacer el Reporte de Propiedades y Enlazar las dos Tablas al
mismo tiempo, de manera que se muestre la ciudad a la cual corresponde la
propiedad.