InmoDir

Información para desarrolladores

Ejemplos con datos tabulados

Ejemplos prácticos mediante datos tabulados: Lista de anuncios

Obtener una lista de anuncios permite que en la página web de nuestro cliente puedan imprimirse los diferentes auncios de un determinado tipo de operación: de venta o de alquiler.

  1. Introducción
  2. Conexión remota al servidor de InmoDir
  3. Parámetros de datos
  4. Parámetros: Tipo de operación
  5. Parámetros: Tipo de inmueble
  6. Parámetros: Orden de la lista
  7. Parámetros: Paginación de resultados
  8. Comprendiendo el resultado
  9. Resultado: Separar los anuncios a partir del resultado obtenido
  10. Resultado: Separar los valores de cada línea del resultado obtenido
  11. Ejemplos de conexión remota
  12. Ejemplos de conexión remota: cURL
  13. Ejemplos de conexión remota: file_get_contents()
  14. Ejemplos de conexión remota: fopen()
  15. Resultado final

Introducción

La lista de anuncios que aparecerá en la página de la inmobiliaria podrá ser filtrada según el tipo de operación y según el tipo de inmueble. Puede también establecerse el orden de la lista de forma ascendente o descendente. Incluso es posible limitar los resultados de la lista en una determinada cantidad máxima de registros, esto es ideal cuando la cantidad de anuncios es grande y se desea paginar los resultados, por ejemplo 5 resultados por página, ó 10 resultados por página, etcétera.

Dependiendo luego de los estilos (CSS) que se le asignen, la lista podrá aparecer en forma de texto o en forma de cuadros destacados.

Ejemplo de lista de anuncios con estilo simple:

Departamento en alquiler 2 habitaciones 1500,00€ Zona centro Departamento en alquiler 3 habitaciones 1800,00€ Departamento en alquiler 2 habitaciones 1650,00€ En la costa Departamento en alquiler 2 habitaciones 1300,00€ Departamento en alquiler 4 habitaciones 2500,00€

Ejemplo de lista de anuncios con estilo destacado, utilizando la imagen por defecto de cada anuncio:

Departamento en alquiler 2 habitaciones 1500,00€ Zona centro Departamento en alquiler 3 habitaciones 1800,00€ Departamento en alquiler 2 habitaciones 1650,00€ En la costa Departamento en alquiler 2 habitaciones 1300,00€ Departamento en alquiler 4 habitaciones 2500,00€

Es decir que el mismo script que se utilice para obtener una lista de anuncios podrá luego ser utilizado para que aparezcan en la página del cliente de una forma u otra dependiendo de los estilos (CSS) que se deseen utilizar. Por ello, la programación del lado del servidor seguramente será la misma si la utilizas para diferentes clientes (inmobiliarias) teniendo que variar solamente la programación del lado del cliente (XHTML, CSS, etc.)

Conexión remota al servidor de InmoDir

Para obtener la lista se debe tener claro qué tipos de filtros se utilizarán. El primero y principal será el del tipo de operación, que puede ser operación de alquiler u operación de venta.

La URL a utilizar para obtener una lista será la siguiente: http://es.inmodir.com/lab/tab/adslist/, con al menos un parámetro. El primer parámetro será el código de la inmobiliaria, indicado aqui con la variable icode, a modo de ejemplo:

http://es.inmodir.com/lab/tab/adslist/?icode=12345678901234567890123456789012

Al final de este capítulo daremos ejemplos de tres maneras diferentes para que el sitio de la inmobiliaria que estemos desarrollando se conecte de forma remota con la base de datos de InmoDir.

Parámetros de datos

El parámetro principal entonces es el icode, que sirve para identificar a la inmobiliaria, pero hay tres parámetros más que sirven para específicar los datos que queremos recibir.

Parámetros: Tipo de operación

Si no se indica el tipo de operación, por defecto aparecerán los anuncios de alquiler. Si se quiere indicar, el parámetro a utilizar será con la variable opertype. Pudiendo ser opertype=1 para mostrar un listado de anuncios de alquiler o opertype=2 para mostrar el listado de los anuncios de venta.

http://es.inmodir.com/lab/tab/adslist/?icode=12345678901234567890123456789012&opertype=1

http://es.inmodir.com/lab/tab/adslist/?icode=12345678901234567890123456789012&opertype=2

Parámetros: Tipo de inmueble

Si no se indica el tipo de inmueble, por defecto aparecerán todos los anuncios de alquiler o venta (según se haya indicado con la variable explicada anteriormente). Entonces aparecerán anuncios de casas, de departamentos, de galpones, de locales, etcétera.

Si por el contrario, se quisiera filtrar unicamente anuncios de alquiler o venta de un determinado tipo de inmueble, se utilizará la variable propertype como segundo parámetro.

http://es.inmodir.com/lab/tab/adslist/?icode=12345678901234567890123456789012&opertype=1&propertype=3

En la URL de ejemplo, se está pidiendo ver anuncios de alquiler (opertype=1) de departamentos únicamente (propertype=3). Esta es la lista de los diferentes tipos de inmuebles:

  • propertype=1 // casas/chalets
  • propertype=2 // monoambientes
  • propertype=3 // pisos
  • propertype=4 // lofts
  • propertype=5 // áticos
  • propertype=6 // bajos/oficinas
  • propertype=7 // garajes/trasteros/almacenajes
  • propertype=8 // naves
  • propertype=9 // adosados
  • propertype=10 // terrenos/parcelas

Parámetros: Orden de la lista

Establecer el orden permite que los anuncios de la lista aparezcan en orden ascendente o descendente. Esto se hace indicando el correspondiente parámetro mediante la variable order. Pudiendo ser order=desc para mostrar un listado de anuncios en orden descendente o order=asc para mostrar el listado de los anuncios en orden ascendente. Si no se indica el orden en el que aparecerán los resultados, por defecto será descendente, es decir que los anuncios mas nuevos aparecerán primero.

http://es.inmodir.com/lab/tab/adslist/?icode=12345678901234567890123456789012&order=asc

Parámetros: Paginación de resultados

También es posible indicar la cantidad máxima de anuncios que van a aparecer. Incluso se puede indicar desde qué número de anuncio se debe comenzar a contar. Para esto se utiliza un parámetro con la variable limit que llevará siempre dos valores numéricos separados por un punto. El primer número indicará el punto de partida y el segundo número la cantidad máxima de resultados.

http://es.inmodir.com/lab/tab/adslist/?icode=12345678901234567890123456789012&limit=0.5

Así por ejemplo si se quisiera mostrar los 5 primeros resultados unicamente, se deberá agregar: limit=0.5. Para la siguiente página indicará: limit=5.5, la siguiente será: limit=10.5. Es decir que siempre aparecerán 5 resultados por página. El límite puede ser menos o mas de 5, esto es a modo de ejemplo.

Limitar los resultados de una lista posiblemente se justifique en dos casos:

  • Para la página de inicio. Pudiendo utilizar por ejemplo ...opertype=1&limit=0.3 para mostrar unicamente las tres mas recientes propiedades en alquiler, y lo mismo con los mas recientes anuncios de venta: ...opertype=2&limit=0.3.
  • Para paginar resultados. En caso de tener muchísimos anuncios y para que no se forme una página demasiado larga. Pero para ello sería conveniente antes conocer la cantidad exacta de anuncios para así saber en cuántas páginas se deberán mostrar los resultados dependiendo de la cantidad encontrada. Por ejemplo, si la inmobiliaria posee 33 anuncios y se quisieran paginar resultados cada 5 anuncios, habrá que calcular previamente para saber que se necesitarán 7 enlaces: Página 1 con ...&limit=0.5, Página 2 con ...&limit=5.5, Página 3 con ...&limit=10.5 y así hasta la , Página 7 con ...&limit=30.5. Para conocer previamente cuántos anuncios de alquiler o venta hay, se deberá lanzar un script que se explicará sobre el final de este tutorial llamado resumen de anuncios.

Comprendiendo el resultado

Al final de este capítulo daremos ejemplos de tres maneras diferentes para que el sitio web de la inmobiliaria que estamos desarrollando se conecte de forma remota con la base de datos de InmoDir a la URL que se utiliza para hacer correr este script (indicada en el inicio de este capítulo). Ahora damos por sentado que esa conexión se establece y obtenemos lo que se muestra a continuación a modo de ejemplo.

Lanzando un script con la URL de ejemplo, como resultado se obtendrá una página web con el siguiente contenido:

12341369321044234788491392799893|201905231157|4|1200.00|3|http://cles1.inmodir.com/annpics/1234136935324723478826.jpg|Monoambiente en alquiler 1 habitación 1200,00€|12341369318996234788471392797843|201905230923|4|1550.00|0|0|Apartamento en alquiler 2 habitaciones 1550,00€|12341369318996234788471392799873|201905241225|4|1950.00|5|http://cles1.inmodir.com/annpics/1234136935324753678826.jpg|Adosado en alquiler 2 habitaciones 1950,00€|

El resultado puede parecer a primera vista un poco confuso, pero por ejemplo si vemos el código fuente de la página obtenida, veremos que el mismo contenido se muestra mas o menos así:

12341369321044234788491392799893|201905231157|4|1200.00|3|http://cles1.inmodir.com/annpics/1234136935324723478826.jpg|Monoambiente en alquiler 1 habitación 1200,00€|
12341369318996234788471392797843|201905230923|0|1550.00|4|0|Apartamento en alquiler 2 habitaciones 1550,00€|
12341369318996234788471392799873|201905241225|5|1950.00|4|http://cles1.inmodir.com/annpics/1054136935324753678826.jpg|Adosado en alquiler 2 habitaciones 1950,00€|

Esto quiere decir que la lista arrojó tres resultados, porque son tres líneas de resultados. Y en cada línea hay una serie de valores separados con barras. A continuación, la explicación de cada valor separado con una barra.

Utilizando una función, que luego explicaremos cuál, podemos hacer que cada línea se interprete como un anuncio. Si hay tres renglones entonces es porque se encontraron tres anuncios.

Con otra función, podemos hacer que las barras que hay en cada renglón cumplan la función de separar valores, entonces simplemente tenemos que saber a qué dato corresponde cada valor. Tomemos por ejemplo sólo el primer registro de los tres renglones obtenidos. En el código fuente de la página se verá algo similar a esto:

12341369321044234788491392799893|201905231157|4|1200.00|3|http://cles1.inmodir.com/annpics/1234136935324723478826.jpg|Monoambiente en alquiler 1 habitación 1200,00€|

Si lo separamos según las barras, obtendremos algo así:

12341369321044234788491392799893| // Posición 0: Código del anuncio (acode) para identificar el anuncio
201905231157| // Posición 1: Fecha de publicación formato AAAAMMDDhhmm (Año,mes,día,horas,minutos)
4| // Posición 2: Tipo de precio (1:diario, 2:semanal, 3:quincenal, 4:mensual) Sólo para alquileres
1200.00| // Posición 3: Precio (precio de venta o de alquiler)
3| // Posición 4: Cantidad de fotos del anuncio
http://cles1.inmodir.com/annpics/1234136935324723478826.jpg| // Posición 5: URL Foto por defecto (si es que tiene fotos, sinó el valor será '0')
Monoambiente en alquiler 1 habitación 1200,00€| // Posición 6: Texto resumido

Resultado: Separar los anuncios a partir del resultado obtenido

Es importante recordar que si visualizamos la página con el resultado se verá toda la información junta, al parecer sin nada que indique una separación entre cada anuncio, pero sí lo notaremos si vemos el código fuente de esa página, la información de cada anuncio aparece separada en renglones. Para ello utilizaremos la función preg_split() y así separar renglón por renglón, anuncio a anuncio.

Tal como se indicó antes, al final de este capítulo se darán tres ejemplos para obtener de manera diferente esta información, la cual quedará guardada en una variable a la que llamaremos: $inmodata.

En el siguiente ejemplo nos aseguramos que la variable $inmodata ha sido definida y que es diferente de 'nada', si es así procederemos a lanzar la función preg_split() asignando su contenido a una variable nueva a la que llamaremos $inmodata_array.

Una vez obtenida la variable $inmodata_array, que es donde se guarda la información anuncio por anuncio, podremos imprimir su contenido. Ya que no necesariamente sabemos cuántos renglones hay (es decir cuántos anuncios había en la lista), entonces hacemos un ciclo con la función foreach(). El siguiente script debe ir a continuación del que se explicó mas arriba.

<?php
if (isset($inmodata) && $inmodata!="")
{
 $inmodata_array = preg_split("/[\n]+/",$inmodata); // Definimos: cada línea, un anuncio.
 foreach($inmodata_array as $anuncios)
 {
  echo"<br />Info del anuncio: ".$anuncios."\n"; // Sólo para ver la información de los anuncios separados.
 }//fin foreach
}//fin caso hay valor
?>

Resultado: Separar los valores de cada línea del resultado obtenido

Dando por sentado que ya nos hemos conectado remotamente a la base de datos de InmoDir y almacenado el resultado en la variable $inmodata. Recuerda que al final se darán ejemplos para que tu sitio web de conecte de forma remota.

En el script anterior hemos separado el resultado obtenido en la variable $inmodata por cada renglón formando una variable llamada $inmodata_array, donde cada renglón es un anuncio. Y haciendo un ciclo con la función foreach() hemos podido imprimir por separado la información de cada anuncio mediante $inmodata_array[1], $inmodata_array[2], $inmodata_array[3], etc (sin separar sus valores aún).

Lo que haremos ahora, es ampliar este script separando los valores de cada anuncio e imprimiendo algunos resultados de la lista. El script a continuación reemplaza el anterior, pues es el mismo pero ampliado:

<?php
/* - - - - - - Imprimir lista de anuncios (inicio) - - - - - - */
if (isset($inmodata) && $inmodata!="")
{
 $inmodata_array = preg_split("/[\n]+/",$inmodata); // Definimos: cada línea, un anuncio.
 foreach($inmodata_array as $anuncios)
 {
  // Los valores de la var 'inmodata_array' los separamos y los almacenamos en la var 'inmodata_arrayinfo'.
  $inmodata_arrayinfo = explode("|", $anuncios);
  // Imprimimos el anuncio
  echo"  <div style=\"border:3px solid #ccc;width:300px;height:300px;margin:10px;padding:10px;float:left;overflow:hidden;\">";
  echo"<a href=\"veranuncio.php?acode=".$inmodata_arrayinfo[0]."\" title=\"Ver anuncio\">".$inmodata_arrayinfo[6]."</a>";
  if ($inmodata_arrayinfo[5]!="0") // Importante: En este caso el cero debe ir entre comillas
  {echo"<br /><img src=\"".$inmodata_arrayinfo[5]."\" style=\"width:250px;\" alt=\"Foto\" />";} // Imprime fotografía por defecto.
  else
  {echo"<br />Sin foto";} // O podría ser una imagen por defecto para estos casos.
  echo"</div>\n";
 }//fin foreach
}//fin caso hay valor
else{echo"No se obtuvieron datos. \n";}
/* - - - - - - Imprimir lista de anuncios (fin) - - - - - - */
/*
 * El enlace 'veranuncio.php' es a modo de ejemplo,
 * allí deberás colocar el nombre de la página
 * o directorio que mostrará el anuncio en detalle.
 */
?>

Ejemplos de conexión remota

Como ya se indicó al inicio de este capítulo, para hacer correr este script y obtener los resultados necesarios nos tenemos que conectar a la siguiente URL: http://es.inmodir.com/lab/tab/adslist/. Con al menos un parámetro, que será el código de la inmobiliaria, indicado aqui con la variable icode. Ahora veremos ejemplos de tres maneras diferentes para que nuestro sitio se conecte de forma remota con la base de datos de InmoDir:

Tomar en cuenta que antes de aplicar la función, se forzará a interpretar el resultado según la codificación UTF-8, esto evitará problemas con los acentos y apóstrofes. Lo único que tendrás que modificar con tus propios datos son los contenidos de las tres variables que aparecen alcomienzo de cada script, donde pone: "Valores", sobre todo las dos últimas variables $inmoscript_icode y $inmoscript_moreparams.

Conectarse y obtener los datos utilizando las librerías de cURL

<?php
/*
 * Obtener de forma remota con cURL
 * la lista de anuncios de mi cliente en InmoDir.
 */

/* Valores. */
$inmoscript_url = "http://es.inmodir.com/lab/tab/adslist/?icode="; // url del script.
$inmoscript_icode = "12345678901234567890123456789012"; // iCode de tu cliente.
$inmoscript_moreparams = "&opertype=1&order=desc"; // Opcional.
/* Funciones. */
$ch = curl_init($inmoscript_url.$inmoscript_icode.$inmoscript_moreparams);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if(curl_exec($ch) === false)
{
 echo'Curl error: '.curl_error($ch);
}
 else
{
 curl_setopt($ch, CURLOPT_URL, $inmoscript_url.$inmoscript_icode.$inmoscript_moreparams);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_ENCODING, "UTF-8");
 $inmodata = curl_exec($ch); // Ejecutar  
 curl_close($ch); // Cerrar  
 /* Imprimimos para verificar. */
 echo$inmodata;
}
?>

Conectarse y obtener los datos utilizando la función file_get_contents()

<?php
/*
 * Obtener de forma remota con la función file_get_contents
 * la lista de anuncios de mi cliente en InmoDir.
 */

/* Valores. */
$inmoscript_url = "http://es.inmodir.com/lab/tab/adslist/?icode="; // url del script.
$inmoscript_icode = "12345678901234567890123456789012"; // iCode de tu cliente.
$inmoscript_moreparams = "&opertype=1&order=desc"; // Opcional.
/* Funciones. */
$opts = array(
  'http'=>array(
   'method'=>"GET",
   'header'=>implode("\r\n", array('Content-type: text/plain; charset=utf-8'))
  )
);
$context = stream_context_create($opts);
$inmodata = file_get_contents($inmoscript_url.$inmoscript_icode.$inmoscript_moreparams,false, $context);  
/* Imprimimos para verificar. */
echo$inmodata;
?>

Conectarse y obtener los datos utilizando la función fopen()

<?php
/*
 * Obtener de forma remota con fopen
 * la lista de anuncios de mi cliente en InmoDir.
 */

/* Valores. */
$inmoscript_url = "http://es.inmodir.com/lab/tab/adslist/?icode="; // url del script.
$inmoscript_icode = "12345678901234567890123456789012"; // iCode de tu cliente.
$inmoscript_moreparams = "&opertype=1&order=desc"; // Opcional.
/* Funciones. */
$opts = array(
  'http'=>array(
   'method'=>"GET",
   'header'=>implode("\r\n", array('Content-type: text/plain; charset=utf-8'))
  )
);
$context = stream_context_create($opts);
$inmodata = fopen($inmoscript_url.$inmoscript_icode.$inmoscript_moreparams, "r", false, $context);
$inmodata = stream_get_contents($inmodata);
/* Imprimimos para verificar. */
echo$inmodata;
?>

Resultado final

Como notarás, en los tres métodos de conexión, las funciones ya están establecidas, simplemente puedes hacer copiar & pegar. Como ya se comentó antes, lo único que deberás modificar son las tres variables que corresponden a los datos específicos, donde se indica mediante el comentario Valores, las variables son: $inmoscript_url, $inmoscript_icode y $inmoscript_moreparams.

Recuerda que al probarlo es muy probable que algunos caracteres y apóstrofes se vean un poco "raros" a pesar de codificarlo en UTF-8. Con el siguiente código php que genera un código html puedes imprimir el resultado, el siguiente código podrías colocarlo a continuación de algunos de los tres scripts anteriores, el que hayas utilizado, reemplazando el comentario que decía: "Imprimimos para verificar...", simplemente haz copiar & pegar:

<?php
/*
 * Continuación del script php que se conecta y obtiene los datos.
 * En este caso imprime el resultado generando una página web con código html.
 * Esto iría en reemplazo de donde pone 'Imprimimos para verificar.'
 */

echo"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
echo"<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"es-es\">\n";
echo" <head>\n";
echo"  <title>Prueba función adslist de InmoDir</title>\n";
echo"  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n"; // Importante!
echo" </head>\n";
echo" <body>\n";
/* - - - - - - Imprimir lista de anuncios (inicio) - - - - - - */
if (isset($inmodata) && $inmodata!="")
{
 $inmodata_array = preg_split("/[\n]+/",$inmodata); // Definimos: cada línea, un anuncio.
 foreach($inmodata_array as $anuncios)
 {
  // Los valores de la var 'inmodata_array' los separamos y los almacenamos en la var 'inmodata_arrayinfo'.
  $inmodata_arrayinfo = explode("|", $anuncios);
  // Imprimimos el anuncio
  echo"  <div style=\"border:3px solid #ccc;width:300px;height:300px;margin:10px;padding:10px;float:left;overflow:hidden;\">";
  echo"<a href=\"veranuncio.php?acode=".$inmodata_arrayinfo[0]."\" title=\"Ver anuncio\">".$inmodata_arrayinfo[6]."</a>";
  if ($inmodata_arrayinfo[5]!="0") // Importante: En este caso el cero debe ir entre comillas
  {echo"<br /><img src=\"".$inmodata_arrayinfo[5]."\" style=\"width:250px;\" alt=\"Foto\" />";} // Imprime fotografía por defecto.
  else
  {echo"<br />Sin foto";} // O podría ser una imagen por defecto para estos casos.
  echo"</div>\n";
 }//fin foreach
}//fin caso hay valor
else{echo"No se obtuvieron datos. \n";}
/* - - - - - - Imprimir lista de anuncios (fin) - - - - - - */
echo" </body>\n";
echo"</html>\n";
?>