El día 24 de septiembre se celebrará una nueva edición de las Reuniones FMValencia.
En esta ocasión veremos una solución realizada para iPhone con FileMaker GO y el 2º tema de la reunión serán las búsquedas. Los ponentes serán:
- Javier Durá, que nos mostrará su aplicación médica Chop para el iPhone.
- Jesús Sánchez, técnicas de busquedas con ScriptMaker y filtrados de información con relaciones dinámicas y relaciones combinadas
- Paco Lozano, interfaz de búsqueda guiada.
Para mas información visitad la web de FMValencia
Técnicas de desarrollo basadas en FileMaker. Los eventos y reuniones FileMaker.
lunes, 12 de septiembre de 2011
viernes, 8 de abril de 2011
Visualización en la web de documentos almacenados en un campo contenedor
No es la mejor práctica servir los documentos almacenados en un campo contenedor para ser visualizados en la web. Siempre es mejor que esos documentos estén físicamente en el disco duro de nuestro servidor y guardar en un campo de texto la ruta del documento. Pero es posible visualizar directamente el contenido de un campo contenedor en la web y aquí vamos a explicar cómo.
Se suele usar esta técnica para mostrar imágenes de tipo JPEG, GIF o PNG. Pero también es posible hacerlo para cualquier tipo de archivo como pueden ser PDF o MOV (vídeo quicktime).
Vamos a usar de ejemplo una base de datos llamada documentos.fp7 con dos únicos campos. Un campo contenedor llamado documento y otro de cálculo llamado tipo que extraerá la extensión del documento almacenado en documento.
El ejemplo nos mostrará una lista de los archivos guardados y un enlace que abrirá una ventana nueva donde se visualizará el contenido ya sea una imagen, un PDF o una película.
El código PHP que nos muestra el listado de documentos es este:
El código PHP que nos permite ver el contenido del campo contenedor es este:
El secreto de visualizar correctamente el documento guardado en el campo contenedor está en decirle a navegador que tipo de documento es. Esto se hace especificándoselo en la cabecera del documento a servir mediante la función header()
Para más información sobre la función header() consultar aquí
Lista de Mime-types disponnibles
Se suele usar esta técnica para mostrar imágenes de tipo JPEG, GIF o PNG. Pero también es posible hacerlo para cualquier tipo de archivo como pueden ser PDF o MOV (vídeo quicktime).
Vamos a usar de ejemplo una base de datos llamada documentos.fp7 con dos únicos campos. Un campo contenedor llamado documento y otro de cálculo llamado tipo que extraerá la extensión del documento almacenado en documento.
El ejemplo nos mostrará una lista de los archivos guardados y un enlace que abrirá una ventana nueva donde se visualizará el contenido ya sea una imagen, un PDF o una película.
El código PHP que nos muestra el listado de documentos es este:
// Incluimos la librearia FileMaker.
require_once ('FileMaker.php');
// Establecemos la conexion con la base de datos indicando:
// base de datos (documentos.fp7)
// servidor donde esta alojada (127.0.0.1)
// usuario y password
$fm =& new FileMaker('documentos.fp7', '127.0.0.1');
$fm->setProperty('username', 'Admin');
$fm->setProperty('password', '');
// Buscamos todos los registros.
$request = $fm->newFindAllCommand('documentos');
$result = $request->execute();
// Comprobamos que no ha ocurrido ningun error
if ( FileMaker::isError($result) ) {
echo 'Error: '. $result->code .': '. $result->getMessage .'
';
die();
}
// Obtenemos los registros encontrados
$records = $result->getRecords();
// Recorremos en un bucle cada uno de los registros
foreach ($records as $record) {
// Guardamos el tipo de documento (segun la extension del archivo)
$tipo = $record->getField( 'tipo' );
// Al tratarse de un campo contendor lo que nos devuelve
// es una url al contenido del archivo
$documento = $record->getField( 'documento' );
// Mostramos el tipo de archivo y la url que lo muestra.
echo ''. $tipo .' '. $documento .'
';
// Cuando se trata de archivos GIF o JPG la url que obtenemos
// nos muestra esa extension pero con caulaquier otro tipo de
// archivo la extension que muestra es: .cnt
// ahora vamos a reemplazar .cnt por la extension propia del
// del tipo de archivo que queresmo visualizar
$doc = str_replace(".cnt", ".". $tipo, $documento);
// Mostramos el enlace que nos permitira visualizar el documento
echo 'Visualizar documento '. $tipo .'';
echo '
';
}
El código PHP que nos permite ver el contenido del campo contenedor es este:
// Incluimos la librearia FileMaker.
require_once ('FileMaker.php');
// Establecemos la conexion con la base de datos indicando:
// base de datos (documentos.fp7)
// servidor donde esta alojada (127.0.0.1)
// usuario y password
$fm =& new FileMaker('documentos.fp7', '127.0.0.1');
$fm->setProperty('username', 'Admin');
$fm->setProperty('password', '');
// Comprobamos si se ha pasado la variable -url
if (isset($_GET['-url'])){
$url = $_GET['-url'];
// Extraemos la extension del fichero
$url = substr($url, 0, strpos($url, "?"));
$url = substr($url, strrpos($url, ".") + 1);
// Segun la extension se estable el Content-type adecuado
// para su correcta visualizacion
switch ($url) {
case "jpg":
header('Content-type: image/jpeg');
break;
case "gif":
header('Content-type: image/gif');
break;
case "pdf":
header('Content-type: application/pdf');
break;
case "mov":
header('Content-type: video/quicktime');
break;
default:
header('Content-type: application/octet-stream');
}
// Mostramos el contenido del campo contenedor
echo $fm->getContainerData($_GET['-url']);
}
El secreto de visualizar correctamente el documento guardado en el campo contenedor está en decirle a navegador que tipo de documento es. Esto se hace especificándoselo en la cabecera del documento a servir mediante la función header()
Para más información sobre la función header() consultar aquí
Lista de Mime-types disponnibles
miércoles, 30 de marzo de 2011
Mosaico de imágenes en modo visualizar
En el foro de FM-Club.org se ha planteado el tema de mostrar un grupo de imágenes formando una cuadrícula. Una de las técnicas que pueden resolver esta cuestión es el uso de campos calculados repetidos. Este video muestra como se puede aplicar y también está disponible para descarga la aplicación de ejemplo.
Descargar ejemplo
domingo, 20 de febrero de 2011
Error 7: running out of memory
En fm-club.org Javier Durá ha reportado un error que ha surgido tras actualizar Mac OS X Server a la versión 10.6.6. En concreto el error que le aparecía era "Error 7: running out of memory".
Francesc Sans le ha dado la solución final: "Redespliega el servicio de publicacion web enterito (no reinstalar, sino "edit server deployment", desde la consola de administarcion)".
Si has llegado hasta aquí buscando información sobre este error te aconsejamos visitar el post en el cual Francesc ha dado esta y otras posibles soluciones: FM-Club · Error 7: running out of memory
Francesc Sans le ha dado la solución final: "Redespliega el servicio de publicacion web enterito (no reinstalar, sino "edit server deployment", desde la consola de administarcion)".
Si has llegado hasta aquí buscando información sobre este error te aconsejamos visitar el post en el cual Francesc ha dado esta y otras posibles soluciones: FM-Club · Error 7: running out of memory
Conférence FileMaker La Rochelle 2011
En nuestro país vecino ya están preparando su Conferencia FileMaker 2011. Se trata de la 7ª edición de la conferencia de habla francesa. Tendrá lugar en el Hotel Mercure Océanide de Vieux Port de La Rochelle, del 19 al 21 de mayo. Organiza La Source multimédia con la colaboración de FileMaker Francia.
Para más información visitar: http://www.fmconf.com/
viernes, 28 de enero de 2011
Guiones: Paso de parámetros
Cuando necesitamos pasar parámetros a un guión o script podemos hacerlo de varias formas.
Imaginemos que necesitamos añadir lineas de factura y lo queremos hacer mediante un guión. Para ello deberemos pasar el idProducto, la cantidad y el precio. Si lo hacemos partiendo de una tabla llamada albaran los campos podrían ser estos: albaran::idProducto, albaran::cantidad y albaran::precio.
Una de las formas de hacerlo sería:
Esto lo que haría sería pasar todos los parámetros concatenados en una única cadena de texto y separados por un retorno de carro (el "¶"). Le estamos pasando una lista de valores que podremos tratar gracias la función de texto GetValue ( listaDeValores ; NúmeroValor ). Con esta función podemos obtener un valor determinado por NúmeroValor dentro de una lista de valores que en este caso será Get ( ScriptParameter ).
Como estamos pasando una lista de valores podemos usar la función List de esta manera:
Otra forma de hacerlo sería "declarando" las variables que han de recibir los parámetros en la misma definición de parámetros.
De esta manera se pasa una cadena de texto que al usar la función Evaluate() hace que se declaren las variables a usar en el guión.
Imaginemos que necesitamos añadir lineas de factura y lo queremos hacer mediante un guión. Para ello deberemos pasar el idProducto, la cantidad y el precio. Si lo hacemos partiendo de una tabla llamada albaran los campos podrían ser estos: albaran::idProducto, albaran::cantidad y albaran::precio.
Una de las formas de hacerlo sería:
albaran::idProducto & "¶" & albaran::cantidad & "¶" & albaran::precio
Esto lo que haría sería pasar todos los parámetros concatenados en una única cadena de texto y separados por un retorno de carro (el "¶"). Le estamos pasando una lista de valores que podremos tratar gracias la función de texto GetValue ( listaDeValores ; NúmeroValor ). Con esta función podemos obtener un valor determinado por NúmeroValor dentro de una lista de valores que en este caso será Get ( ScriptParameter ).
Establecer variable [ $idProducto; Valor:GetValue ( Get ( ScriptParameter ) ; 1 ) ] Establecer variable [ $cantidad; Valor:GetValue ( Get ( ScriptParameter ) ; 2 ) ] Establecer variable [ $precio; Valor:GetValue ( Get ( ScriptParameter ) ; 3 ) ]
Como estamos pasando una lista de valores podemos usar la función List de esta manera:
List ( albaran::idProducto; albaran::cantidad; albaran::precio )Sin duda el código queda mas elegante. Pero hay que tener cuidado en hacer uso de List para pasar parámetros de esta manera. La razón es que puede generarnos errores si cualquiera de los campos está vacío. Imaginemos que el campo cantidad estuviera vacío la lista de valores que pasaríamos tendría sólo dos elementos y la variable $cantidad no tomaría un valor vacío sino que cogería el valor del precio y la variable $precio no tendría valor al no existir un tercer elemento en la lista.
Otra forma de hacerlo sería "declarando" las variables que han de recibir los parámetros en la misma definición de parámetros.
"$idProducto = " & Quote ( albaran::idProducto ) & ";$cantidad = " & Quote ( albaran::cantidad ) & ";$precio = " & Quote ( albaran::precio )
De esta manera se pasa una cadena de texto que al usar la función Evaluate() hace que se declaren las variables a usar en el guión.
Establecer variable [ $ok; Valor:Evaluate ("Let ( " & Get ( ScriptParameter ) & "; 1 )" ) ]
Suscribirse a:
Entradas (Atom)
