Trabajar con más de una base de datos
Nosotros generalmente usamos una clase propia encargada de gestionar las operaciones con la base de datos (conexión, ejecutar consultas, desconexion...).
Instanciamos el objeto para la gestión de la base de datos al principio de las páginas que necesitan conexión con la misma (es decir realizamos la conexión con la bbdd), y al final de la página cerramos la conexión de la misma.
Hay en ocasiones que un proyecto trabaja con más de una base de datos, por lo que será necesario hacer conexiones a esas bases de datos para la manipulación de la información. Pues bien, en las páginas que se necesite manipular información de las distintas bases de datos, instanciamos tantos objetos como base de datos se necesiten, y al final de la página cerramos todas las conexiones.
Yo pensaba que al tener objetos distintos para cada conexón sólo tenía que usar el objeto correspondiente para hacer las peticiones.
Pero no, es necesario que cada vez que se vaya a usar una base de datos distinta a la que estabas manipulando deberás actualizar la base de datos (@mysql_select_db). Yo lo hago mediante un método de la clase.
Un ejemplo
-
require("my_class.php");
-
/* En esta clase está el método refrescarTabla() que hace lo siguiente:*/
-
-
-
/* Inicio la conexion con la BBDD con la base de datos 1*/
-
$conexion_1 = new ConsultaMySql();
-
$conexion_1->conectar();
-
$conexion_1->actualizarDatos(IPSERVER_1,USERBBDD_1, PASSBBDD_1,NAMEBBDD_1);
-
-
/* Inicio la conexion con la base de datos 2*/
-
$conexion_2 = new ConsultaMySql();
-
$conexion_2->actualizarDatos(IPSERVER_2,USERBBDD_2, PASSBBDD_2,NAMEBBDD_2);
-
$conexion_2->conectar();
-
/* **********************************/
-
-
/* Una operacion con bbdd 1*/
-
$conexion_1->refrescarTabla();
-
$conexion_1->consulta = "SELECT * FROM tabla";
-
$conexion_1->ejecutar_consulta();
-
$resultado_1_bbdd1 = $conexion_1->result_array_asoc();
-
-
/* Una operacion con bbdd 2*/
-
$conexion_2->refrescarTabla();
-
$conexion_2->consulta = "SELECT * FROM tabla";
-
$conexion_2->ejecutar_consulta();
-
$resultado_1_bbdd2 = $conexion_2->result_array_asoc();
-
-
/* Otra operacion con bbdd 1*/
-
$conexion_1->refrescarTabla();
-
$conexion_1->consulta = "SELECT * FROM tabla";
-
$conexion_1->ejecutar_consulta();
-
$resultado_2_bbdd1 = $conexion_1->result_array_asoc();
-
/* Codigo para visualizar los resultados*/
-
-
-
/* Fin codigo*/
-
-
/* Cierro las conexiones*/
-
$conexion_1->cerrar_conexion();
-
$conexion_2->cerrar_conexion();
Pues nada más, espero que os sirva.
BUG en MySQL
Muy buenas a todos,
estando desarrollando un proyecto necesitaba insertar un registro en la base de datos, o en caso de que ya existiera, actualizar un campo de dicho registro.
Pues bien, a partir de la versión 4.1 se puede hacer en MySQL todo esto en una sóla sentencia:
INSERT ... ON DUPLICATE KEY UPDATE.
La verdad que no era la primera vez que utilizaba esta sentencia, es mucho más cómodo que hacer primero una consulta a la base de datos para comprobar de la existencia del registro, para que en caso de existir actualizarlo o en caso contrario realizar una inserción.
Pues bien, en este proyecto no me funcionaba.
Tras verificar que todo estaba bien implementado y seguía sin funcionar, opté por hacer el ejemplo más simple para ver si me funcionaba esta sentencia o no. Y no me funcionó. Entonces me preguntaba: ¿Qué diferencia puede haber con proyectos anteriores para que en éste no me funcionara?.
pues estaba en el tipo de tabla en la base de datos que estaba usando. En este caso tenía una tabla del tipo InnoDB y en los anteriores MyISAM.
Tras indagar obtuve la respuesta a mi problema:
"A partir de la versión 5.0.36 de MySQL INSERT ... ON DUPLICATE KEY UPDATE no funciona en tablas InnoDB (no da ningún error pero no hace el UPDATE, sólo el INSERT). Es un bug que tiene MySQL!!."
Os pongo el link por si quereis echarle un vistazo.
BUG INSERT ... ON DUPLICATE KEY UPDATE
Espero que a alguien le sirva!!!
Flash en Facebook, desarrollo de juegos casuales

A raíz de un proyecto que estamos terminando en el estudio, y del que lamentablemente no os podemos comentar nada por cuestiones de privacidad, hemos experimentado el "infernal" mundo de Flash en Facebook, siempre que tengas que hacer una integración un poco curiosa entre tu aplicación y la red social.
Desde la elección de la técnica que vas a emplear para la inclusión del archivo a los mecanismos básicos para integrarlo con la herramienta (invitar amigos, tomar imágenes e información del usuario, gestionar permisos para publicar en el muro, etc.) existen una gran cantidad de aspectos a tener en cuenta. No nos hemos convertido ni mucho menos en expertos, pero tras una primera experiencia de test suave y ahora la experiencia real de una aplicación con bastante más complejidad, podemos decir que iniciarse NO es tarea fácil ni directa.
Analizando nuestro proceso, tenemos claro que el principal motivo por el que esto no es sencillo es que Adobe no ha dotado de una documentación a su API en AS3, y que el material que encuentras por la red es confuso y muy poco organizado. Si bien la wiki de facebook es de obligada lectura, aunque hable de la API en PHP principalmente, hay muchos términos, nociones y situaciones que es el único lugar en el que se recogen.
Nos hemos propuesto solucionar esto, así que poco a poco iremos publicando una serie de tutoriales sobre cómo crear una aplicación en Flash para Facebook desde cero, no solo en cuanto a la parte flash, sino servidor, integración (la parte más conflictiva cuando usas flash), llamadas a javascript propio o de Facebook, comunicación con el servidor remoto... No nos cabe ninguna duda de que será un recurso de mucha utilidad, pero te lo preguntamos a ti antes de pegarnos la currada: ¿te interesaría?
AdobeEnVivo, grabación de eSeminars disponibles
![[Q] interactiva ha participado en el Adobe En Vivo Online, organizado por GarageFlash, con el eSeminar: Juegos en Flash Lite [Q] interactiva ha participado en el Adobe En Vivo Online, organizado por GarageFlash, con el eSeminar: Juegos en Flash Lite](http://www.q-interactiva.com/blog/imagenes/adobeenvivo_preso.jpg)
Pues AdobeEnVivo online ya ha finalizado, y la gente de GarageFlash no ha tardado mucho en publicar los enlaces a todas las grabaciones de Adobe Acrobat Connect, es decir video de lujo de las conferencias, con audio, posibilidad de moverte por la charla a tu antojo, etc.
Desde [Q] colaboramos en el evento mediante la charla que impartió Marcos González titulada "Juegos en Flash Lite", y que hemos de decir que tuvo una magnífica respuesta por parte de los hasta más de 70 asistentes que hubo en determinados momentos de la misma. Esta colaboración se hizo a través del Grupo de Usuarios de Móviles y Dispositivos de Adobe España, Blocketpc, junto con otra charla impartida por Raúl Jiménez.
El evento se cierra como un rotundo éxito (al menos desde nuestro punto de vista) ya que ha contado con una participación espectacular, ya no solo en asistencia, sino en cantidad y calidad de ponentes y de la variedad de países que se han unido al evento, siendo claramente un referente en coordinación y participación de diferentes Grupos de Usuarios de Adobe de forma conjunta ya no solo en nuestra lengua, sino como ejemplo para toda la comunidad. Nuestra enhorabuena desde aqui al Grupo de Usuarios de Perú GarageFlash por la iniciativa.
Os recordamos que este evento también se lleva a cabo en "real", y que el año anterior también contó con un importantísimo programa de talleres y conferencias. Esperamos poder estar allí personalmente en alguna de las futuras ediciones, que seguro serán igual o mejores a la anterior.
Arranca Subflash 2009!

Pues si, tras un año que ha pasado volando, desde Subflash ya se están iniciando los preparativos para esta nueva edición, de la que solamente se saben de momento los días, aunque en el mismo post se indica que se darán a conocer todos los detalles de forma INMINENTE!
Además Subflash ha renovado la cara, con un nuevo blog donde se mantendrán actualizadas todas las informaciones relativas a los talleres y a las actividades complementarias que se quieren llevar a cabo durante el año.

Además en el nuevo formato de blog, se encuentra una página muy agradable para los que conocemos subflash desde sus inicios, que es la historia de la comunidad a lo largo de todos estos años.
Desde [Q] interactiva, y como siempre venimos haciendo estamos trabajando en la Organización del evento y en la puesta en marcha del site que permitirá darse de alta en los talleres, por eso sabemos que cuando se dice INMINENTE.... ¡es cuestión de horas!

¡Comienza Subflash Talleres de Verano 2009!
Synctur Finalista en el Flash Lite Developer Challenge!!

Synctur es una aplicación desarrollada por Infocket, que resulta ser una empresa creada conjuntamente por [Q] interactiva y Quadricula, con el objetivo específico de generar aplicaciones y contenidos móviles novedosos empleando como tecnología base Flash Lite.
Infocket vió la luz en 2005, tras los Talleres de Verano de Subflash, que tuvieron lugar en Barcelona en aquella ocasión. A raíz de la conferencia de Raúl Jiménez (que es parte muy implicada en el desarrollo de Synctur), decidimos crear una empresa para poder centrarla en el desarrollo de contenidos para móvil, y la primera aplicación que ha fructificado de dicha idea es Synctur.
Synctur es una plataforma para la creación de espacios y contenidos turísticos para ayuntamientos y Gobiernos locales. En su arquitectura existen 2 partes bien diferenciadas: CMS (ayuntamiento), Cliente Flash Lite (usuario). La idea que hay detrás de Synctur es que los usuarios puedan gozar de contenidos turísticos de calidad, actualizados por el propio ayuntameinto o entidad correspondiente, y que lo hagan de manera gratuita. Es decir la aplicación para el usuario no tiene ningún coste, salvo el que se pueda desprender de su uso al consultar datos desde un servidor central en internet.
El CMS es realmente potente, y la plataforma admite un numero indefinido de entidades suscritas al sistema, con lo que el usuario finalmente lo que tiene en su móvil es una red completa de contenidos turísticos, sobre los que puede navegar de una forma bastante diferente a la habitual, ya que los contenidos que se le ofertan son texto, imagen, locuciones y video (3GP, 3GPP o incluso FLV dependiendo de la versión de su terminal). El CMS permite crear los contenidos en los idiomas que cada entidad desee, y la propia aplicación también soporta diferentes idiomas para la interfaz, con lo que se potencia el carácter turístico e internacional de la misma. Además cada localización podrá gestionar solamente los módulos que le correspondan o desee, de tal manera que se evita el problema de contenidos vacíos, lo cual es posible por una modularización extrama en cada configuración de cada CMS de la plataforma.
Ahora que ya sabes lo que es, te diré que estamos de enhorabuena porque la aplicación ha sido nominada como finalista en uno de los premios más importantes a nivel mundial relacionado con flash lite: el Flash Lite Developer Challege, en la categoría de Infotainment, junto con otras 2 aplicaciones. Es la única aplicación creada por una empresa de habla hispana y tenemos mucha ilusión por ello! Este concurso reparte un total de $100,000 dolares en premios ($15,000 por categoría), y la aplicación ganadora absoluta se llevará $30,000!
Puedes votarnos previo registro (pero un registro muuuuuy sencillo) y eso nos ayudará a optar por el People Chice Award! Si quieres ver si merece la pena más allá de las palabras que yo pueda decir, aquí te dejamos un video mejor que el que se encuentra en la web del concurso.
Más información:
en blocketpc
en criterion
en actionscript.org
en quadricula
snipt.net ya tiene un nuevo fan

Pues estos son los tipos de webs que me ponen cuando hablamos de utilidad para el programador, que mas quiero que ir a mirar y encontrarme perlitas como un PHP que ya me da los resultados de Yahoo Weather en un objeto usable, o unos cuantos patrones de diseño... ya montaditos...
Queréis lenguajes? Pues tomad: PHP, javascript, Python, MySQL, CSS, HTML, Drupal, WordPress, jQuery, Flash, Perl, Rails, Java, Plesk... y me dejo unos cuantos!
Algunos códigos que podemos encontrar la verdad que no aportan demasiado, pero hay otros realmente útiles, patrones de diseño, o incluso clases para tomar datos de webservices disponibles y que sea aun más facil usar los datos, como este que me ha gustado y hasta puede que lo use en breve...
P.D. Si tenéis otros recursos del estilo localizados, compartir.... no seáis tacañ@s!
Redirección 301
En ocasiones, en el desarrollo de un proyecto web se necesita hacer una redirección a otra página ubicada en el servidor. Para ello es conveniente hacer una redirección 301.
Esta redirección se puede hacer con PHP de la siguiente manera:
Se introduce el siguiente código PHP en la página que se desea redirigir:
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.mipagina.com" );
Espero que os sirva en alguna ocasión...
Evitar el bloqueo de imágenes en Outlook
Imagino que habrás recibido infinidad de spam, o no spam sino correos de promociones a las que efectivamente te has suscrito (bueno, cof cof, de esto seguro que menos...). Es probable, aunque no seguro, que en estos correos se haya bloqueado las imágenes por motivos de seguridad, pero tengo casi la certeza de que alguna vez te habrá llegado alguno en los que las imágenes aparecen ante ti sin haber dado tu consentimiento, sobre todo si empleas como gestor de correo Outlook.
La técnica que voy a explicar no la recomiendo como solución óptima ya que personalmente no veo el bloqueo de imágenes como algo negativo, aunque puede ser muy interesante frente a algunos clientes que o bien tienen muy claro que su target es el Outlook o derivados, o bien NO tienen una visión muy amplia o clara de la cantidad de sistemas de gestión de correo que se manejan hoy en día.
Read more
Simple no es lo mismo que doble, por PHP

Pues llevaba yo varios días dando vueltas a en qué se diferenciaba un código que me permitía escribir saltos de línea en un fichero, con otro que no lo hacía. El tema estaba enfocado en el caracter (\n) que es el que se emplea para tal tarea.
La cuestión era que en dos lugares diferentes pero aparentemente iguales, el resultado era distinto... y no hay nada como buscar en inglés por google (qué lastima que sea así la cruda realidad) para dar con resultados mucho más prácticos.
Me entero que las comillas simples no son igual que las dobles (yo casi siempre usaba las simples para no tener conflictos con los atributos HTML, que en principio suelen escribirse con dobles), y que tienen diferencias que pueden afectar a los resultados, como ha sucedido en este caso.
La comilla simple (') lo que hace es mostrar LITERALMENTE lo que hay entre su apertura y cierre como caracteres de texto. La comilla doble (") no hace lo mismo, sino que lanza su interior como una cadena que puede contener caracteres que se transforman en otra cosa, es decir, no saca LITERALMENTE lo que hay en su interior.
La prueba, que un '\n' no es un salto de línea, pero un "\n" sí lo es dentro de un fichero de texto.
El resultado a mi consulta aqui:
No es lo mismo simple que doble [EN]
Y de regalo un gran recurso que me acabo de encontrar para aprender PHP:
Practica PHP Programming Wiki [EN]