InmoDir

Información para desarrolladores

Ejemplos con datos tabulados

Ejemplos prácticos mediante datos tabulados: Fotografías 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 la información de las fotografías del anuncio
  7. Resultado: Separar los valores de cada fotografía
  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

Esta opción permite obtener una lista de las fotografías de un anuncio. De esta forma, en la página de la inmobiliaria es posible imprimir las fotos cuando el visitante del sitio web selecciona un anuncio.

Vamos a explicar aqui cómo obtener la información de las fotografías de un anuncio accediendo a una URL de InmoDir indicando el código de la inmobiliaria y el código del anuncio (icode, acode).

Conexión remota al servidor de InmoDir

Al igual que sucede cuando se obtiene información de un anuncio, la URL a utilizar para obtener las fotografías del anuncio será la siguiente:
http://es.inmodir.com/lab/tab/adspics/, que deberá llevar los dos parámetros que identificarán a la inmobiliaria y al anuncio. De esta forma aparecerá un listado de las fotos y sus respectivos textos descriptivos.

http://es.inmodir.com/lab/tab/adspics/?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. Esto es exactamente igual a cuando se solicita ver información de un anuncio.

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 mediante la variable acode que 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.

Como resultado se obtendrá una página web con el siguiente contenido:

http://escl1.inmodir.com/annpics/1054136935324733478826.jpg|Cocina|http://escl1.inmodir.com/annpics/1054136935324733478986.jpg|Salón-comedor|http://escl1.inmodir.com/annpics/1054136935324733472448.jpg|Frente de la finca|

Al igual que como ocurre en la lista de anuncios de la inmobiliaria, el resultado obtenido estará dividido en varias líneas, cada línea representará cada fotografía. Si vemos el código fuente de la página obtenida, veremos que el mismo contenido se muestra de manera muy similar, pero mas claramente y separado en líneas:

http://escl1.inmodir.com/annpics/1054136935324733478826.jpg|Cocina|
http://escl1.inmodir.com/annpics/1054136935324733478986.jpg|Salón-comedor|
http://escl1.inmodir.com/annpics/1054136935324733472448.jpg|Frente de la finca|

Una línea de información para cada registro, conteniendo dos valores separados con barras. Y, como se observa a simple vista, el primer valor corresponde a la URL de la imagen y el segundo valor al comentario descriptivo de la misma.

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 obtendremos por cada línea algo como lo siguiente:

Si tomamos como ejemplo el primer registro, lo separamos, obtendremos algo así:

http://escl1.inmodir.com/annpics/1054136935324733478826.jpg| // Posición 0: URL de la fotografía
Cocina| // Posición 1: Comentario de la fotografía

Resultado: Separar la información de las fotografías del anuncio

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 fotografía, pero sí lo notaremos si vemos el código fuente de esa página, la información de cada fotografía aparece separada en renglones. Para ello utilizaremos la función preg_split() y así separar renglón por renglón, fotografía a fotografía.

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 fotografía por fotografía, podremos imprimir su contenido. Ya que no necesariamente sabemos cuántos renglones hay (es decir cuántas fotografía había en la lista), entonces hacemos un ciclo con la función foreach().

<?php
if (isset($inmodata) && $inmodata!="")
{
 $inmodata_array = preg_split("/[\n]+/",$inmodata); // Definimos: cada línea, una fotografía.
 foreach($inmodata_array as $fotos)
 {
  echo"<br />URL fichero y nombre: ".$fotos."\n"; // Sólo para ver la información de las fotografías separadas.
 }//fin foreach
}//fin caso hay valor
?>

Resultado: Separar los valores de cada fotografía

En el primer script hemos obtenido la información del servidor donde se encuentra el motor de InmoDir desde nuestro servidor y hemos guardado la información en la variable $inmodata.

En el segundo script hemos separado el resultado obtenido en la variable $inmodata por cada renglón formando una variable llamada $inmodata_array, donde cada renglón es una fotografía. Y haciendo un ciclo con la función foreach() hemos podido imprimir por separado la información de cada fotografía (sin separar sus valores aún).

Lo que haremos ahora, es ampliar el segundo script separando los dos valores de cada fotografía e imprimiendo los resultados de la lista. El script que aparece a continuación, reemplaza el anterior:

<?php
/* - - - - - - Imprimir lista de fotos (inicio) - - - - - - */
if (isset($inmodata) && $inmodata!="")
{
 $inmodata_array = preg_split("/[\n]+/",$inmodata); // Definimos: cada línea, una fotografía.
 foreach($inmodata_array as $fotos)
 {
  // Los valores de la var 'inmodata_array' los separamos y los almacenamos en la var 'inmodata_arrayinfo'.
  $inmodata_arrayinfo = explode("|", $fotos);
  // Imprimimos la fotografía
  echo"  <div style=\"border:3px solid #ccc;width:300px;height:300px;margin:10px;padding:10px;float:left;\">";
  echo"<img src=\"".$inmodata_arrayinfo[0]."\" style=\"width:250px;\" alt=\"".$inmodata_arrayinfo[1]."\" />";
  echo"<br />".$inmodata_arrayinfo[1];
  echo"</div>\n";
 }//fin foreach
}//fin caso hay valor
else{echo"No se obtuvieron datos. \n";}
/* - - - - - - Imprimir lista de fotos (fin) - - - - - - */
?>

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/adspics/. Con dos parámetros, que serán el código de la inmobiliaria, indicado con el parámetro icode y el código del anuncio, con el parámetro acode. Ahora veremos ejemplos de tres maneras diferentes para que nuestro sitio se conecte de forma remota con la base de datos de InmoDir y almacenar la información requerida en una variable a la que llamaremos $inmodata.

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 al comienzo 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/adspics/?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/adspics/?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/adspics/?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 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 fotos (inicio) - - - - - - */
if (isset($inmodata) && $inmodata!="")
{
 $inmodata_array = preg_split("/[\n]+/",$inmodata); // Definimos: cada línea, una fotografía.
 foreach($inmodata_array as $fotos)
 {
  // Los valores de la var 'inmodata_array' los separamos y los almacenamos en la var 'inmodata_arrayinfo'.
  $inmodata_arrayinfo = explode("|", $fotos);
  // Imprimimos la fotografía
  echo"  <div style=\"border:3px solid #ccc;width:300px;height:300px;margin:10px;padding:10px;float:left;\">";
  echo"<img src=\"".$inmodata_arrayinfo[0]."\" style=\"width:250px;\" alt=\"".$inmodata_arrayinfo[1]."\" />";
  echo"<br />".$inmodata_arrayinfo[1];
  echo"</div>\n";
 }//fin foreach
}//fin caso hay valor
else{echo"No se obtuvieron datos. \n";}
/* - - - - - - Imprimir lista de fotos (fin) - - - - - - */
echo" </body>\n";
echo"</html>\n";
?>