Taller Webmaster

Tutoriales para Webmasters

Bienvenido a Taller Webmaster, donde encontrarás la mejor información sobre tutoriales y recursos para webmasters!

Ingreso de Usuario

Recuperar contraseña

Registro de Usuario

Publicidad

Web de Bienes Raíces Inmobiliarias - Parte 5, Reporte de Propiedades y Relaciones MySQL

Mini Curso Tutorial de PHP y MySQL

 

Tutorial por Jorge Oyhenard (elQuique)

En esta quinta entrega, del tutorial de web de bienes raíces con PHP y MySQL, veremos como crear un reporte de propiedades según la ciudad, relacionando las tablas de propiedades y ciudades.

Recomendamos antes de leer este capítulo, lean antes la Introducción a nuestro Tutorial en la Primer Entrega, y luego donde hemos visto como Crear las Tablas y Bases de Datos en nuestra Segunda Entrega, también la Tercer Entrega, donde vimos como realizar el Ingreso, Edición y Eliminación de Datos ayudándonos con phpMyAdmin, pero sobre todo la entrega anterior, o sea la Cuarta Entrega, donde vimos como realizar un Reporte de Ciudades, ya que ahora veremos un reporte o listado un poco más complejo y el anterior sirve como base.

En la entrega anterior, realizamos un Listado de Ciudades bastante sencillo, el cual luce como sigue:

ID Ciudad Nombre
1 Madrid
2 Montevideo
3 México
4 Buenos Aires

Listando las Propiedades

Para hacer el Listado de Propiedades, lo haremos un poco más completo, por tanto será un reporte un poco más complejo, que muestre más información, comenzaremos de a poco, veremos primero como hacer para que quede igual a la figura que sigue:

ID Propiedad Propiedad Ciudad Descripción Precio
1 Casa en la Playa 2 Casas en la Playa, a 200 mts del mar, excelente ubicación y condiciones. Venta: 100000 / Renta: 1500
2 Apartamento de Lujo 1 Excelente apartamento de lujo, con buenisima ubicación Venta: 120000 / Renta: 10000

Tal como hacíamos en el Listado de Ciudades, y utilizando el mismo código, con leves modificaciones, para que tome datos de la tabla propiedades, debemos modificar el PHP y HTML para que quede así:

...

<?php
$conexion = mysql_connect('localhost', 'usuariobase', 'topsecret');
mysql_select_db('inmobiliaria');
$tabla = mysql_query('SELECT * FROM propiedades);
while ($registro = mysql_fetch_array($tabla)) {
?>

<tr>
<td><?php echo $registro['id']; ?></td>
<td><?php echo $registro['titulo']; ?></td>
<td><?php echo $registro['idciudad']; ?></td>
<td><?php echo $registro['descripcion']; ?></td>
<td>Venta: <?php echo $registro['precioventa']; ?> / Renta: <?php echo $registro['preciorenta']; ?></td>
</tr>

<?php
}
mysql_free_result($tabla);
mysql_close($conexion);
?>

...

Click acá, para descargar este código fuente.

Nota: recuerda, que la teoría de uso de ordenes PHP y MySQL fueron explicadas en la entrega anterior, si no lo viste o no recuerdas sugiero un repaso ;)

Como podemos ver a simple vista, estamos mostrando únicamente datos, de la tabla propiedades, por tal motivo en la Ciudad, aparece el código y no el nombre, recordemos que la lista de ciudades se guarda aparte con nombre, para optimizar el espacio, ya que guardamos solo el código en cada propiedad y no todo el nombre.

Relaciones entre Tablas MySQL

Para listar el nombre, en vez del código, MySQL cuenta con un sistema muy potente, que consiste en Establecer una Relación entre las 2 tablas, de esta forma se podrá mostrar en vez de cada código de ciudad, el nombre de la misma. Para esto debemos establecer que para cada idciudad de la tabla de propiedades debe buscar un id igual en la tabla de ciudades, dicho en código algo así:

propiedades.idciudad = ciudades.id

o sea, relacionar el número de la ciudad de la tabla propiedades (idciudad), con un número de ciudad de la tabla de ciudades (id en la tabla ciudades).

por tanto debemos cambiar la línea, donde se ejecuta el mysql_query que es el que selecciona los registros de 1 o mas tablas, en el código anterior la línea es esta:

$tabla = mysql_query('SELECT * FROM propiedades);

como vemos selecciona solamente desde la tabla propiedades, ahora haremos que seleccione de ambas tablas, la línea quedaría así:

$tabla = mysql_query('SELECT propiedades.*, ciudades.* FROM propiedades, ciudades WHERE propiedades.idciudad = ciudades.id');

le estamos diciendo que seleccione (SELECT) desde la tabla propiedades (FROM) y también ciudades, todos los campos disponibles, por eso dice propiedades.* y ciudades.*, pero con la condición de que el idciudad de la tabla propiedades sea igual al de cada ciudad, esto lo decimos con WHERE propiedades.idciudad = ciudades.id

Luego, donde imprimíamos en la tabla solo el idciudad así:

<td><?php echo $registro['idciudad']; ?></td>

le diremos que imprima eso, y también el nombre de la ciudad, por tanto el código completo queda así:

<td><?php echo $registro['idciudad']; ?>) <?php echo $registro['nombre']; ?></td>

el resultado se vera así:

ID Propiedad Propiedad Ciudad Descripción Precio
2 Casa en la Playa 2) montevideo Casas en la Playa, a 200 mts del mar, excelente ubicación y condiciones. Venta: 100000 / Renta: 1500
1 Apartamento de Lujo 1) madrid Excelente apartamento de lujo, con buenisima ubicación Venta: 120000 / Renta: 10000

Click acá, para descargar el código fuente modificado.

Cambiando el Orden del Reporte

En los listados que hacíamos hasta ahora, los registros aparecen en el orden en que fueron ingresados, MySQL cuenta con un comando que permite indicar el orden en que se deben mostrar, esto se logra con:

ORDER BY campo ASC o DESC

campo, es el campo por el cual se debe ordenar

ASC, es que se debe ordenar de manera ASCendente

DESC, indica que se debe ordenar en forma DESCendente

para ordenarlos por el nombre de la ciudad debemos cambiar esta línea:

$tabla = mysql_query('SELECT propiedades.*, ciudades.* FROM propiedades, ciudades WHERE propiedades.idciudad = ciudades.id');

por esta otra, donde se le agrega el ORDER BY ciudad.nombre ASC

$tabla = mysql_query('SELECT propiedades.*, ciudades.* FROM propiedades, ciudades WHERE propiedades.idciudad = ciudades.id ORDER BY ciudades.nombre ASC');

Click acá, para descargar el código fuente final.

Y eso es todo por hoy, en la próxima entrega veremos como modificar este mismo Reporte de Propiedades para que se transforme en un buscador.

Comentarios de Web de Bienes Raíces Inmobiliarias - Parte 5, Reporte de Propiedades y Relaciones MySQL

↑ Tutorial

  • lionelX

    lionelX

    2008-01-05 12:58

    exelente!