InmoDir

Información para desarrolladores

Ejemplos con datos tabulados

Ejemplos prácticos mediante datos tabulados: Información de un anuncio

  1. Introducción
  2. Conexión remota al servidor de InmoDir
  3. Parámetros de datos
  4. Parámetros: Código único del anuncio
  5. Comprendiendo el resultado
  6. Resultado: Separar los valores del anuncio obtenido
  7. Sugerencias
  8. Ejemplos de conexión remota
  9. Ejemplos de conexión remota: cURL
  10. Ejemplos de conexión remota: file_get_contents()
  11. Ejemplos de conexión remota: fopen()
  12. Resultado final

Introducción

Luego de saber cómo obtener una lista de anuncios y que aparezcan en la página web de la inmobiliaria de nuestro cliente, el navegante seguramente hará 'clic' en algún anuncio para elegir verlo en detalle. Esto quiere decir que podemos hacer que en una nueva página aparezcan los datos del anuncio seleccionado, sea éste un anuncio de alquiler o de venta.

Vamos a explicar aqui cómo obtener la información de un anuncio generado en InmoDir para poder mostrar en la página web de nuestro cliente.

Conexión remota al servidor de InmoDir

La URL a utilizar para obtener la información del anuncio será la siguiente: http://es.inmodir.com/lab/tab/adsdata/, que deberá llevar los dos parámetros que identificarán a la inmobiliaria y al anuncio.

http://es.inmodir.com/lab/tab/adsdata/?icode=12345678901234567890123456789012&acode=12349874563217531596548521346798

Parámetros de datos

Para obtener la información de un anuncio, primero hay que identificarlo, y esto se hará con un código que es único por cada anuncio que, de la misma forma que se identifica a la inmobiliaria con un código único icode, se utilizará un código para el anuncio: acode.

Parámetros: Código único del anuncio

En el ejemplo se indican los dos valores con unos números inexistentes, pero en el caso real, el primer parámetro icode será el código único de la inmobiliaria, y el segundo parámetro, la variable acode se obtiene, por ejemplo, de la lista de anuncios tal como se explicó en el capítulo anterior.

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:

1|2|3|21044|0|1|1|1|0|1|1|1|1|1|5|2|39.47097320059302|-0.384521484375|-|-|-|-|-|-|-|-|-|-|-|-|-|94|6|100|350.00|4|350.00|-|-|-|-|-|-|-|-|-|201905231157|-|-|-|-|0|Paterna|Valencia|-|-|-|-|-|-|-|0|http://escl1.inmodir.com/annpics/1054136935324723478826.jpg|-|-|-|-|-|-|-|-|Monoambiente en alquiler 1 habitación 350,00€|Monoambiente en alquiler con 1 habitación, 1 baño, salón comedor, cocina y mini-lavadero y terraza cubierta de 6 metros cuadrados. 350,00€. Inmueble de 100 metros cuadrados de superficie, 94 metros cuadrados de superficie interna en la quinta planta. Con aire acondicionado central frío/calor. Edificio con 2 ascensores, parque privado y zonas comunes. Con piscina y cochera (opcional)|-|-|-|-|-|-|-|-|

Ya que no es una lista de registros sino que se trata de un único registro, toda la información aparecerá en una única línea. Si vemos el código fuente de la página obtenida, veremos que el mismo contenido se muestra de manera muy similar:

1|2|3|21044|0|1|1|1|0|1|1|1|1|1|5|2|39.47097320059302|-0.384521484375|-|-|-|-|-|-|-|-|-|-|-|-|-|94|6|100|350.00|4|350.00|-|-|-|-|-|-|-|-|-|201905231157|-|-|-|-|0|Paterna|Valencia|-|-|-|-|-|-|-|0|http://escl1.inmodir.com/annpics/1054136935324723478826.jpg|-|-|-|-|-|-|-|-|Monoambiente en alquiler 1 habitación 350,00€|Monoambiente en alquiler con 1 habitación, 1 baño, salón comedor, cocina y mini-lavadero y terraza cubierta de 6 metros cuadrados. 350,00€. Inmueble de 100 metros cuadrados de superficie, 94 metros cuadrados de superficie interna en la quinta planta. Con aire acondicionado central frío/calor. Edificio con 2 ascensores, parque privado y zonas comunes. Con piscina y cochera (opcional)|-|-|-|-|-|-|-|-|

Una sóla línea de información para un único registro, conteniendo 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 mas abajo explicaremos cuál, podemos hacer que las barras que hay en esa línea de información cumplan la función de separar valores, entonces simplemente tenemos que saber a qué dato corresponde cada valor:

Si lo separamos, obtendremos algo así:

1| // Posición 0: Tipo de operación (1:alquiler, 2:venta)
2| // Posición 1: Tipo de inmueble (1:casa/chalet, 2:monoambiente, 3:piso, etc.)
3| // Posición 2: Cantidad de fotos del anuncio
21044| // Posición 3: Código del anuncio en InmoDir
0| // Posición 4: Si tiene mapa en Google maps (0:no tiene, 1:si tiene)
1| // Posición 5: Cantidad de habitaciones
1| // Posición 6: Cantidad de baños
1| // Posición 7: Propiedad tiene garaje (0:no, 1:si)
0| // Posición 8: Propiedad tiene trastero (0:no, 1:si)
1| // Posición 9: Propiedad tiene terraza/balcón (0:no, 1:si)
1| // Posición 10: Propiedad tiene aire acondicionado (0:no, 1:si)
1| // Posición 11: Propiedad tiene calefacción central (0:no, 1:si)
1| // Posición 12: Propiedad tiene piscina (0:no, 1:si)
1| // Posición 13: Propiedad tiene zonas comunes (0:no, 1:si)
5| // Posición 14: Planta del inmueble (0:Planta baja, 1,2,3,etc (número de planta))
2| // Posición 15: Propiedad tiene ascensor (0:No tiene, 1,2,3,etc (número de ascensores))
39.47097320059302| // Posición 16: Coordenadas google maps - Latitud (0:Sin indicar)
-0.384521484375| // Posición 17: Coordenadas google maps - Longitud (0:Sin indicar)
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-| // Posición 18 a 30: (reservado, sin valor por ahora)
94| // Posición 31: Superficie interior de la propiedad.
6| // Posición 32: Superficie exterior de la propiedad
100| // Posición 33: Superficie total de la propiedad
1200.00| // Posición 34: Precio (precio de venta o de alquiler)
4| // Posición 35: Tipo de precio (1:diario, 2:semanal, 3:quincenal, 4:mensual) Sólo para alquileres
1200.00| // Posición 36: Precio total mensual (sólo para alquileres y cuando no es mensual)
-|-|-|-|-|-|-|-|-| // Posición 37 a 45: (reservado, sin valor por ahora)
201905231157| // Posición 46: Fecha de publicación formato AAAAMMDDhhmm (Año,mes,día,horas,minutos)
-|-|-|-| // Posición 47 a 50: (reservado, sin valor por ahora)
0| // Posición 51: Zona del inmueble (Si es '0' es porque no se ha indicado)
Paterna| // Posición 52: Ciudad del inmueble
Valencia| // Posición 53: Provincia del inmueble
-|-|-|-|-|-|-| // Posición 54 a 60: (reservado, sin valor por ahora)
0| // Posición 61: Eficiencia energética de la letra A a la lentra G (si es que tiene, sinó el valor será '0')
http://escl1.inmodir.com/annpics/1054136935324723478826.jpg| // Posición 62: URL Foto por defecto (si es que tiene fotos, sinó el valor será '0')
-|-|-|-|-|-|-|-| // Posición 63 a 70: (reservado, sin valor por ahora)
Monoambiente en alquiler 1 habitación 350,00€| // Posición 71: Texto resumido
Monoambiente en alquiler con 1 habitación, 1 baño, salón comedor, cocina y mini-lavadero y terraza cubierta de 6 metros cuadrados. 350,00€. Inmueble de 100 metros cuadrados de superficie, 94 metros cuadrados de superficie interna en la quinta planta. Con aire acondicionado central frío/calor. Edificio con 2 ascensores, parque privado y zonas comunes. Con piscina y cochera (opcional)| // Posición 72: Texto ampliado
-|-|-|-|-|-|-|-| // Posición 73 a 80: (reservado, sin valor por ahora)

Resultado: Separar los valores del anuncio obtenido

Simularemos que el resultado obtenido lo tenemos almacenado en la variable $inmodata, al final del capítulo se darán ejemplos de tres maneras diferentes de obtener estos datos de forma remota y almacenarlos en esta variable.

Para separar los valores del resultado obtenido basta con utilizar la función explode(). Tomar en cuenta que como separador de todos los valores se va a utilizar siempre la barra '|'.

<?php
/*
 * Separar los valores que compone la información
 * del anuncio que había sido guardado
 * en la variable '$inmodata'.
 */
$inmodata_values = explode("|", $inmodata);
echo"<br /><strong>Tipo de operación: </strong>".$inmodata_values[0]; // 1:alquiler, 2:venta
echo"<br /><strong>Tipo de inmueble: </strong>".$inmodata_values[1];
echo"<br /><strong>Fotos del anuncio: </strong>".$inmodata_values[2];
// ...
echo"<br /><strong>Precio: </strong>".$inmodata_values[34];
// ...
echo"<br /><strong>Texto resumido: </strong>".$inmodata_values[71];
echo"<br /><strong>Texto ampliado: </strong>".$inmodata_values[72];
?>

Sugerencias

Para evitar errores de código, es recomendable antes de ejecutar la segunda parte del mismo que podamos estar seguros que se haya obtenido el resultado deseado.

En el siguiente ejemplo nos aseguramos que la variable $inmodata ha sido definida, que es diferente de 'nada' y que tiene al menos 70 veces el caracter '|' que se utiliza como separador de valores.

<?php
/* - - - - - - Imprimir información del anuncio (inicio) - - - - - - */
if (isset($inmodata) && $inmodata!="")
{
 if (substr_count($inmodata, '|')>=70)
 {
  $inmodata_values = explode("|", $inmodata);
  // seguir con lo demás...
 }else{echo"Código de error: ".$inmodata;}
}else{echo"No se ha conectado...";}
/* - - - - - - Imprimir información del anuncio (fin) - - - - - - */
?>

Otro tema importante es la codificación. Si bien en la primera parte del script se fuerza a interpretar la página remota con la codificación UTF-8, será bueno que dentro del código HTML también se indique esto por si algún navegador no tiene establecido esta codificación por defecto:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es-es">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Título de la página</title>
  ...
 </head>
 <body>
  ...
 </body>
</html>

Y recordar siempre que al momento de guardar el fichero php, html o en el formato que sea, se recomienda elegir la opción Encoding: Unicode (UTF-8, no BOM), que suele aparecer cerca de donde va el nombre del fichero, al hacer guardar como....

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/adsdata/. 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/adsdata/?icode="; // url del script.
$inmoscript_icode = "12345678901234567890123456789012"; // iCode de tu cliente.
$inmoscript_moreparams = "&acode=12349874563217531596548521346798"; // aCode del anuncio.
/* 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/adsdata/?icode="; // url del script.
$inmoscript_icode = "12345678901234567890123456789012"; // iCode de tu cliente.
$inmoscript_moreparams = "&acode=12349874563217531596548521346798"; // aCode del anuncio.
/* 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/adsdata/?icode="; // url del script.
$inmoscript_icode = "12345678901234567890123456789012"; // iCode de tu cliente.
$inmoscript_moreparams = "&acode=12349874563217531596548521346798"; // aCode del anuncio.
/* 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 adsdata 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 información del anuncio (inicio) - - - - - - */
if (isset($inmodata) && $inmodata!="")
{
 if (substr_count($inmodata, '|')>=70)
 {
  $inmodata_values = explode("|", $inmodata);
  // seguir con lo demás...
  echo"<br /><strong>Tipo de operación: </strong>".$inmodata_values[0]; // 1:alquiler, 2:venta
  echo"<br /><strong>Tipo de inmueble: </strong>".$inmodata_values[1];
  echo"<br /><strong>Fotos del anuncio: </strong>".$inmodata_values[2];
  // ...
  echo"<br /><strong>Precio: </strong>".$inmodata_values[34];
  // ...
 }else{echo"Código de error: ".$inmodata;}
}else{echo"No se ha conectado...";}
/* - - - - - - Imprimir información del anuncio (fin) - - - - - - */
echo" </body>\n";
echo"</html>\n";
?>