<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NogardTech &#187; PHP</title>
	<atom:link href="http://www.nogardtech.com.ar/portalv2/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nogardtech.com.ar/portalv2</link>
	<description>Tecnologia, Información, Locura y más...</description>
	<lastBuildDate>Sun, 16 Jan 2011 14:50:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Llamar a otra base de datos en una plantilla (WordPress)</title>
		<link>http://www.nogardtech.com.ar/portalv2/2011/01/llamar-a-otra-base-de-datos-en-una-plantilla-wordpress/</link>
		<comments>http://www.nogardtech.com.ar/portalv2/2011/01/llamar-a-otra-base-de-datos-en-una-plantilla-wordpress/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 18:28:22 +0000</pubDate>
		<dc:creator>dragonnegro</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[$wpdb]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[plantilla]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.nogardtech.com.ar/portalv2/?p=900</guid>
		<description><![CDATA[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 &#8230; <a href="http://www.nogardtech.com.ar/portalv2/2011/01/llamar-a-otra-base-de-datos-en-una-plantilla-wordpress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Muchos de nosotros solemos utilizar <strong>WordPress </strong>como una base segura para un sistema de usuarios y administracion de un sitio web. Muchas veces me ha tocado programar por sobre el <strong>WP</strong> 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 <strong>WP</strong>.</p>
<p style="text-align: justify;">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 <strong>$wpdb</strong>.</p>
<p style="text-align: justify;">Aqui les dejo un ejemplo simple, que en este caso estaria dentro de una plantilla de WordPress.</p>
<pre class="brush: php; highlight: [14,15,16,19,20]; title: ; notranslate">
&lt;?php
/**
 * @package WordPress
 * @subpackage Mi Tema de Prueba
 */
/*
Template Name: Probando $wpdb
*/
?&gt;
&lt;table width='600'&gt;
&lt;?php get_header; ?&gt;
&lt;?php
global $wpdb; // declaramos la global
$resultados = $wpdb-&gt;get_results(&quot;SELECT * FROM otrabd.mitabla&quot;);
$cuantos = $wpdb-&gt;num_rows;
foreach ($resultados as $datos)
{
echo '&lt;tr&gt;';
echo '&lt;td&gt;$datos-&gt;nombre&lt;/td&gt;';
echo '&lt;td&gt;$datos-&gt;apellido&lt;/td&gt;';
echo'&lt;/tr&gt;';
}
?&gt;
&lt;/table&gt;
&lt;?php echo 'Se han encontrado: '.$cuantos.' resultados.';
&lt;?php get_footer; ?&gt;
</pre>
<p style="text-align: justify;">Aqui podemos ver que primero llamamos a la global <strong>$wpdb</strong>, luego utilizamos la propiedad <strong>get_results</strong> 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 <strong>prepare </strong>del objeto <strong>$wpdb</strong>.<br />
De la siguiente forma:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
global $wpdb;
$query = $wpdb-&gt;prepare(&quot;SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'&quot;, $_GET[nombre], $_GET[apellido]);
$resultados = $wpdb-&gt;get_results($query);
?&gt;
</pre>
<p style="text-align: justify;">Aqui vemos como la propiedad <strong>prepare </strong>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 <strong>array </strong>con las variables (en caso de que nuestra consulta tuviera muchas variables externas a filtrar con <strong>prepare</strong>).</p>
<p>De este modo:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
global $wpdb;
$filtrar[] = $_GET[nombre];
$filtrar[] = $_GET[apellido];

$query = $wpdb-&gt;prepare(&quot;SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'&quot;, $filtrar);
$resultados = $wpdb-&gt;get_results($query);
?&gt;
</pre>
<p style="text-align: justify;">Otras propiedades que les pueden ser de utilidad son <strong>$wpdb-&gt;query</strong> (para instrucciones de insertar, borrar,etc.) y <strong>$wpdb-&gt;num_rows</strong> (usada en el primer ejemplo, que devuelve la cantidad de filas afectadas en la ultima consulta).</p>
<p style="text-align: justify;">Cabe destacar que tanto <strong>$wpdb-&gt;query</strong> como <strong>$wpdb-&gt;get_results</strong> pueden devolver los resultados como un array asociativo, un array numerico o un objeto (por defecto), llamando su segundo parametro como <strong>ARRAY_A</strong> o <strong>ARRAY_N</strong> respectivamente.</p>
<p>Por ejemplo:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
global $wpdb;
$filtrar[] = $_GET[nombre];
$filtrar[] = $_GET[apellido];

$query = $wpdb-&gt;prepare(&quot;SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'&quot;, $filtrar);
$resultados = $wpdb-&gt;get_results($query, ARRAY_A);
echo $resultados[nombre];
echo $resultados[apellido];
?&gt;
</pre>
<p>Espero les haya servido este articulo, pueden encontrar más información aqui (En ingles):</p>
<p><a href="http://codex.wordpress.org/Function_Reference/wpdb_Class">Function Reference/wpdb Class</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nogardtech.com.ar/portalv2/2011/01/llamar-a-otra-base-de-datos-en-una-plantilla-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP_query y paginación</title>
		<link>http://www.nogardtech.com.ar/portalv2/2009/11/wp_query-y-paginacion/</link>
		<comments>http://www.nogardtech.com.ar/portalv2/2009/11/wp_query-y-paginacion/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 20:42:51 +0000</pubDate>
		<dc:creator>dragonnegro</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp_query()]]></category>

		<guid isPermaLink="false">http://www.nogardtech.com.ar/portalv2/?p=775</guid>
		<description><![CDATA[Trabajando en un proyecto personal me encontre ante una situacion particular: necesitar mostrar solo una categoria en la pagina principal de WordPress. &#8220;Ok.&#8221; , me dije. &#8220;Solamente voy a usar wp_query() y tema solucionado, pero no fue tan facil, ya &#8230; <a href="http://www.nogardtech.com.ar/portalv2/2009/11/wp_query-y-paginacion/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Trabajando en un proyecto personal me encontre ante una situacion particular: necesitar mostrar solo una categoria en la pagina principal de <em>WordPress</em>. &#8220;<em><strong>Ok.</strong></em>&#8221; , me dije. &#8220;Solamente voy a usar <strong>wp_query()</strong> y tema solucionado, pero no fue tan facil, ya que por alguna razón usando <strong>wp_query()</strong> no funcionaba la paginación.</p>
<p style="text-align: justify;">La funcion de paginacion esta definida en el archivo <em>link-template</em> dentro de la carpeta <em>wp-includes</em>. La mayoria de los temas de <em>WordPress </em>tienen incluida una paginacion basada en las funciones <strong>previous_posts_link()</strong> y <strong>next_posts_link()</strong>, estas funciones utilizan una variable global llamada, misteriosamente <img src='http://www.nogardtech.com.ar/portalv2/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , <strong><em>wp_query</em></strong> que no es mas ni menos que una instancia de <strong>WP_query()</strong>. Y he aqui el problema: cuando llamamos a nuestra propia instancia de la funcion <strong>WP_query()</strong>, no contamos con esta variable global lo cual va a hacer que la paginacion de los posts de <em>WordPress </em>no funcione.</p>
<p style="text-align: justify;">Ejemplo: supongamos que queremos mostrar solo la categoria 3.</p>
<p style="text-align: justify;">
<pre class="brush: php; highlight: [4,5,7]; title: ; notranslate">
&amp;lt;h3&amp;gt;Articulos de la Categoria 3&amp;lt;/h3&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query-&amp;gt;query('cat=3'.'&amp;amp;paged='.$paged);
?&amp;gt;
</pre>
<p style="text-align: justify;">Como pueden ver en la linea 4, asignamos la variable global <strong>wp_query</strong> a una variable temporal llamada <em><strong>temp </strong>(para mantener una referencia)</em>. Luego, en la linea 5 podemos ver que asignamos el valor <strong>null </strong>(que no es lo mismo que un cero, que si es un valor), a la variable global <strong>wp_query</strong>. Instanciamos a <strong>WP_query()</strong> y luego hacemos un</p>
<pre class="brush: php; title: ; notranslate">

$wp_query-&amp;gt;query('cat=3'.'&amp;amp;paged='.$paged);
</pre>
<p style="text-align: justify;">Es de destacarse la parte de &#8220;<strong>&#8216;&amp;paged=&#8217;.$paged</strong>&#8221; , luego llamamos a las funciones <strong>previous_posts_link()</strong> y <strong>next_posts_link()</strong> como siempre para finalmente volver la variable <strong>wp_query</strong> a su estado original usando el valor <strong>$temp</strong> que habiamos asignado previamente.</p>
<pre class="brush: php; title: ; notranslate">
&amp;lt;?php $wp_query = null; $wp_query = $temp;?&amp;gt;
</pre>
<p style="text-align: left;">Aqui les dejo un codigo completo:</p>
<pre class="brush: php; highlight: [4,5,7,17]; title: ; notranslate">
&amp;lt;h3&amp;gt;Articulos de la Categoria 3&amp;lt;/h3&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query-&amp;gt;query('cat=3'.'&amp;amp;paged='.$paged);
?&amp;gt;
&amp;lt;?php while ($wp_query-&amp;gt;have_posts()) : $wp_query-&amp;gt;the_post(); ?&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href=&quot;&amp;lt;?php the_permalink() ?&amp;gt;&quot; rel=&quot;bookmark&quot;&amp;gt;&amp;lt;?php the_title(); ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;?php endwhile; ?&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;div&amp;gt;
&amp;lt;div&amp;gt;&amp;lt;?php previous_posts_link('&amp;amp;laquo; Anterior') ?&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div&amp;gt;&amp;lt;?php next_posts_link('Siguiente &amp;amp;raquo;') ?&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;?php $wp_query = null; $wp_query = $temp;?&amp;gt;
</pre>
<p style="text-align: justify;">Espero que este ejemplo les haya servido y hayan podido solucionar este problema que se presenta con la paginacion al usar la funcion <strong>WP_query()</strong> de forma personalizada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nogardtech.com.ar/portalv2/2009/11/wp_query-y-paginacion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery: Actualizar automaticamente un DIV.</title>
		<link>http://www.nogardtech.com.ar/portalv2/2009/10/jquery-actualizar-automaticamente-un-div/</link>
		<comments>http://www.nogardtech.com.ar/portalv2/2009/10/jquery-actualizar-automaticamente-un-div/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 22:31:42 +0000</pubDate>
		<dc:creator>dragonnegro</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.nogardtech.com.ar/portalv2/?p=672</guid>
		<description><![CDATA[Debido a un proyecto personal, me toco resolver como actualizar un div dentro de una pagina. La realidad era que mientras los usuarios se quedaban en una pagina, no veian la actualizacion de ese div hasta que la recargaban. En &#8230; <a href="http://www.nogardtech.com.ar/portalv2/2009/10/jquery-actualizar-automaticamente-un-div/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Debido a un proyecto personal, me toco resolver como actualizar un div dentro de una pagina. La realidad era que mientras los usuarios se quedaban en una pagina, no veian la actualizacion de ese div hasta que la recargaban. En vista de este inconveniente se me ocurrio usar <a href="http://docs.jquery.com/Main_Page" target="_blank">jQuery</a> y un script por demas sencillo para actualizar ese div con el resultado de un archivo PHP.</p>
<p style="text-align: justify;">
<pre class="brush: jscript; highlight: [6,7,9,10]; title: ; notranslate">
&lt;html&gt;
&lt;head&gt;
&lt;!-- Por comodidad uso la libreria de jQuery desde sus servidores. Si lo prefieren pueden usar la libreria alojada localmente. --&gt;
&lt;script src=&quot;http://code.jquery.com/jquery-latest.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
 $(document).ready(function() {
 $(&quot;#reciberespuesta&quot;).load(&quot;respuesta.php&quot;);
 var refreshId = setInterval(function() {
 $(&quot;#reciberespuesta&quot;).load('respuesta.php?valoralazar='+ Math.random());
 }, 60000);
});
&lt;/script&gt;

&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;reciberespuesta&quot;&gt;
&lt;/div&gt;
&lt;/body&gt;
</pre>
<p style="text-align: justify;">Explicacion:</p>
<p style="text-align: justify;">El motivo por el cual se llama dos veces al script PHP es para que se cargue instantaneamente, y luego si empiece a actualizarse cada determinada cantidad de milisegundos. (En este caso, 60000 milisegundos, es decir 1 minuto.)</p>
<p style="text-align: justify;">La forma de actualizar el div, llamado con una variable &#8220;valoralazar&#8221; en la url, es debido a que asi evitamos que la cache de Internet Explorer no permita la actualizacion, agregandole al final de la url un numero generado al azar, y por lo tanto &#8220;obligando&#8221; a Internet Explorer a creer que es una pagina diferente, forzando asi a recargarla.</p>
<p style="text-align: justify;">Actualizar con un efecto de FadeOut/FadeIn.</p>
<p style="text-align: justify;">Modificando las siguientes lineas pueden conseguir que al actualizar se desvanezca el contenido y vuelva a aparecer &#8211; llamando asi la atencion del usuario &#8211; utilizando <a href="http://docs.jquery.com/Effects/fadeOut" target="_blank"><strong>fadeout()</strong></a> y <a href="http://docs.jquery.com/Effects/fadeIn" target="_blank"><strong>fadein()</strong></a></p>
<p style="text-align: justify;">
<pre class="brush: jscript; first-line: 8; highlight: [9]; title: ; notranslate">
 var refreshId = setInterval(function() {
 $(&quot;#reciberespuesta&quot;).fadeOut(&quot;slow&quot;).load('respuesta.php?valoralazar='+ Math.random()).fadeIn(&quot;slow&quot;);
 }, 60000);
</pre>
<p style="text-align: justify;">
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.nogardtech.com.ar/portalv2/2009/10/jquery-actualizar-automaticamente-un-div/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

