Función: Actualizar automaticamente un DIV (jQuery)

Posteado en jQuery, Programacion el Domingo, 16 de enero de 2011 a las 11:47 3 Comentarios

Actualizando un poco mi articulo anterior: “jQuery – Actualizar automaticamente un DIV”, que escribiera hace más de un año, les traigo una funcion que puede servir para no escribir tantas veces el mismo código.


CargarDiv = function (objetivo, url)
 {$(document).ready(function() {$(objetivo).load(url+"?" + (new Date()).getTime());});}

Como podran ver, es una función muy simple la cual nos permite reutilizar el codigo para diversos usos. Añade luego de la url un  “?+numero_al_azar” para evitar la cache de los resultados. [Linea 2]

El mismo podemos utilizarlo asi:

<html>
<head>
<!-- Por comodidad uso la libreria de jQuery desde Google. Si lo prefieren pueden usar la libreria alojada localmente. -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
//Definimos la funcion
CargarDiv = function (objetivo, url)
 {$(document).ready(function() {$(objetivo).load(url+"?" + (new Date()).getTime());});}

//La llamamos pasando parametros. Primero el ID del DIV a actualizar, y luego la URL desde la cual actualizamos.
CargarDiv("#reciberespuesta", "http://www.dominio.com/resultados.php");

// Si es necesario que recargue cada cierto tiempo podemos usar setInterval
setInterval('CargarDiv("#reciberespuesta", "http://www.dominio.com/resultados.php")', 10000);
</script>
</head>

<body>
<div id="reciberespuesta"></div>
</body>
</html>

En este caso primero cargamos el div apenas la página esta lista, y luego definimos un tiempo de recarga con setInterval en milisegundos, en mi caso use el valor 10000 (10 segundos). ¿Por qué hacemos dos llamadas? Porque si solo usaramos setInterval y no lo llamaramos primero nosotros, luego de cargar la página deberiamos esperar – en este caso – 10 segundos para verlo “por primera vez” en nuestra página.

Llamar a otra base de datos en una plantilla (WordPress)

Posteado en PHP, Programacion el Sábado, 15 de enero de 2011 a las 15:28 Sin comentarios

Muchos de nosotros solemos utilizar WordPress como una base segura para un sistema de usuarios y administracion de un sitio web. Muchas veces me ha tocado programar por sobre el WP base y modificarlo a gusto de mis clientes, pero al utilizar instrucciones o llamadas SQL independientes me he llegado a encontrar que interrumpen la correcta ejecucion de las llamadas de WP.

Es asi como investigando descubri que mientras se tuviera el mismo par usuario/clave que la base de datos de WP para acceder a la otra base de datos, era posible utilizar la notacion completa basededatos.tabla con el objeto global $wpdb.

Aqui les dejo un ejemplo simple, que en este caso estaria dentro de una plantilla de WordPress.

<?php
/**
 * @package WordPress
 * @subpackage Mi Tema de Prueba
 */
/*
Template Name: Probando $wpdb
*/
?>
<table width='600'>
<?php get_header; ?>
<?php
global $wpdb; // declaramos la global
$resultados = $wpdb->get_results("SELECT * FROM otrabd.mitabla");
$cuantos = $wpdb->num_rows;
foreach ($resultados as $datos)
{
echo '<tr>';
echo '<td>$datos->nombre</td>';
echo '<td>$datos->apellido</td>';
echo'</tr>';
}
?>
</table>
<?php echo 'Se han encontrado: '.$cuantos.' resultados.';
<?php get_footer; ?>

Aqui podemos ver que primero llamamos a la global $wpdb, luego utilizamos la propiedad get_results del objeto para obtener los resultados de nuestra consulta. En caso de que fuera necesario incluir variables externas  (POST o GET) en nuestra consulta, es recomendable utilizar la propiedad prepare del objeto $wpdb.
De la siguiente forma:

<?php
global $wpdb;
$query = $wpdb->prepare("SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'", $_GET[nombre], $_GET[apellido]);
$resultados = $wpdb->get_results($query);
?>

Aqui vemos como la propiedad prepare recibe dos argumentos, el primero es la consulta que deseamos realizar, con las variables identificadas como %s y %d, y luego un segundo y tercer parametro que son (en orden) las variables que luego seran reemplazadas en %s y %d respectivamente. Como metodo opcional se puede pasar como segundo argumento un array con las variables (en caso de que nuestra consulta tuviera muchas variables externas a filtrar con prepare).

De este modo:

<?php
global $wpdb;
$filtrar[] = $_GET[nombre];
$filtrar[] = $_GET[apellido];

$query = $wpdb->prepare("SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'", $filtrar);
$resultados = $wpdb->get_results($query);
?>

Otras propiedades que les pueden ser de utilidad son $wpdb->query (para instrucciones de insertar, borrar,etc.) y $wpdb->num_rows (usada en el primer ejemplo, que devuelve la cantidad de filas afectadas en la ultima consulta).

Cabe destacar que tanto $wpdb->query como $wpdb->get_results pueden devolver los resultados como un array asociativo, un array numerico o un objeto (por defecto), llamando su segundo parametro como ARRAY_A o ARRAY_N respectivamente.

Por ejemplo:

<?php
global $wpdb;
$filtrar[] = $_GET[nombre];
$filtrar[] = $_GET[apellido];

$query = $wpdb->prepare("SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'", $filtrar);
$resultados = $wpdb->get_results($query, ARRAY_A);
echo $resultados[nombre];
echo $resultados[apellido];
?>

Espero les haya servido este articulo, pueden encontrar más información aqui (En ingles):

Function Reference/wpdb Class

Microsoft desactiva enlaces en Live Messenger

Posteado en Internet, Redes y Seguridad el Lunes, 15 de noviembre de 2010 a las 11:49 Sin comentarios

Microsoft ha desactivado los enlaces en su Windows Live Messenger y MSN Messenger, los afectados serian los usuarios de la version 2009 y versiones anteriores.

Con motivo de la aparicion de un gusano de – supuestamente – de alta peligrosidad, el gigante de Redmond ha decidido desactivar la funcionalidad, dejandola solo para su nueva version 2011.

Es de esperarse alguna solución temporal en las proximas horas, asi como muchisimas maquinas infectadas.

La solución – si esta limitación nos afecta – estaria en usar otro cliente (Como Pidgin o aMSN, por ejemplo) o pasarnos a la version 2011 del mencionado mensajero.

Según la compañia una PC que no este bien protegida podria sufrir bastante, de acuerdo a lo publicado en su blog.

Por el momento solo puedo recomendarles dos opciones:

1) Instalar la nueva versión de Live Messenger 2011 (con todas las complicaciones que trae el nuevo formato “social” del mensajero)

2) Esperar, y mantener protegida la PC con una buena combinacion de antivirus, lógica y prevención.

Es de mi preferencia la segunda opción.

Dejo una pregunta: ¿alguien cree que tal vez esa una movida para forzarnos a pasarnos al Windows Live Messenger 2011?