<?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>TolerantX&#039;s Blog &#187; Programación</title>
	<atom:link href="http://tolerantx.com/category/internet/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://tolerantx.com</link>
	<description>Y sin embargo se mueve</description>
	<lastBuildDate>Sat, 21 Aug 2010 04:11:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Checkbox: Seleccionar, deseleccionar todos</title>
		<link>http://tolerantx.com/2010/04/06/checkbox-seleccionar-deseleccionar-todos/</link>
		<comments>http://tolerantx.com/2010/04/06/checkbox-seleccionar-deseleccionar-todos/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 04:16:34 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[checkbox]]></category>
		<category><![CDATA[funcion]]></category>
		<category><![CDATA[seleccionar todos]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=332</guid>
		<description><![CDATA[Sé que hay muchos ejemplos, guias etc sobre como seleccionar o deseleccionar checkbox en una página web con javascript, pero pocos hacen referencia a hacer una función un poco más generica donde abarque tanto el nombre del formulario, el nombre de elementos a seleccionar y la casilla &#8220;todos&#8221; también con checkbox. Tenemos 2 funciones javascript, [...]]]></description>
			<content:encoded><![CDATA[<p>Sé que hay muchos ejemplos, guias etc sobre como seleccionar o deseleccionar checkbox en una página web con javascript, pero pocos hacen referencia a hacer una función un poco más generica donde abarque tanto el nombre del formulario, el nombre de elementos a seleccionar y la casilla &#8220;todos&#8221; también con checkbox.</p>
<p>Tenemos 2 funciones javascript, una que se encarga de seleccionar todos los &#8220;checkbox&#8221; y la otra función que se encarga de verificar si permanece seleccionado nuestro checkbox que selecciona &#8220;todos&#8221;:<span id="more-332"></span></p>
<pre  name="code"  class="javascript">function checkElements(form, elementAll, elementToCheck) {
    var form, checkbox = form.elements[elementToCheck];
    totalElements = checkbox.length;
    checkboxAll = form.elements[elementAll];

    for(var n=0; n&lt;totalElements; n++) {
        checkbox[n].checked = checkboxAll.checked;
    }
}

function checkElementAll(form, elementAll, elementCheck) {
    var form, counter=0;
    checkbox = form.elements[elementCheck];
    checkboxAll = form.elements[elementAll];
    totalElements = checkbox.length;

    for(var n=0; n&lt;totalElements; n++) {
        if (checkbox[n].checked == true) counter++;
    }
    if (totalElements &gt; counter)
        checkboxAll.checked = false;
    else
        checkboxAll.checked = true;
}
</pre>
<p>Y un ejemplo de formulario sería algo como lo siguiente:</p>
<pre name="code" class="xml">&lt;form name="nombreFormulario" method="post" action=""&gt;
    &lt;p&gt;&lt;input type="checkbox" name="selecciona_todos" onclick="checkElements(this.form, this.name, 'frutas[]')" /&gt;&lt;label&gt;Todos&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="manzana" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Manzana&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="mango" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Mango&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="pera" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Pera&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="sandia" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Sandia&lt;/label&gt;&lt;/p&gt;
    &lt;p&gt;&lt;input type="checkbox" name="frutas[]" value="naranja" onclick="checkElementAll(this.form, 'selecciona_todos', this.name)" /&gt;&lt;label&gt;Naranja&lt;/label&gt;&lt;/p&gt;
&lt;/form&gt;</pre>
<p> <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/04/06/checkbox-seleccionar-deseleccionar-todos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Enviar formulario sin recargar la página con Zend Framework y JQuery.</title>
		<link>http://tolerantx.com/2010/03/02/enviar-formulario-sin-recargar-la-pagina-con-zend-framework-y-jquery/</link>
		<comments>http://tolerantx.com/2010/03/02/enviar-formulario-sin-recargar-la-pagina-con-zend-framework-y-jquery/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 21:57:33 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Guardar]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=163</guid>
		<description><![CDATA[Cuando se están manejando formularios con PHP guardando los datos en algún gestor de base de datos como MySQL llega a surgir la duda de cómo guardar dichos datos utilizando Ajax (JQuery en éste caso) para evitarnos el refresco de pantalla y poder seguir haciendo uso del sistema sin este pequeño (o grande) retraso. Primero [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando se están manejando formularios con PHP guardando los datos en algún gestor de base de datos como MySQL llega a surgir la duda de cómo guardar dichos datos utilizando Ajax (JQuery en éste caso) para evitarnos el refresco de pantalla y poder seguir haciendo uso del sistema sin este pequeño (o grande) retraso.</p>
<p>Primero que nada utilizaré Zend Framework, JQuery y MySQL como gestor de base de datos. Para éste ejemplo empezaremos creando una base de datos sencilla llamada clientes donde única y exclusivamente guardaremos el nombre (para no hacer tan extenso ésto).<span id="more-163"></span></p>
<p>Muy bien para crear nuestra tabla primeramente debemos tener creada la base de datos, puedes utilizar phpmyadmin o la línea de comandos, como más te agrade, de todas maneras adjunto el código de la creación de la base de datos como también de la tabla.</p>
<pre name="code" class="sql">CREATE DATABASE `prueba`;

CREATE TABLE `prueba`.`clientes` (
  `id_cliente` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  `cliente` VARCHAR( 100 ) NOT NULL
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_unicode_ci;
</pre>
<p>Si te fijas la base de datos la llamé prueba y la tabla la llamé cliente con dos campos, id_cliente y cliente.<br />
No entraré en detalles en creación de controladores, modulos, vistas, en nuestro árbol de directorios de Zend Framework.</p>
<p>Creo el módulo (application/models/Clientes.php) con un método llamado getClientes, éste método nos devolverá posteriormente los clientes guardados en la base de datos:</p>
<pre name="code" class="php">&lt;?php

class Clientes extends Zend_Db_Table
{
    protected $_name = 'clientes';

    public function getClientes()
    {
        $c = new Clientes();
        $c_select = $c-&gt;select()-&gt;order('cliente');

        return $c-&gt;fetchAll($c_select);
    } // end getClientes

}
</pre>
<p>El controlador lo llamaré Clientes así que queda de la siguiente manera (application/controllers/ClientesController.php):</p>
<pre name="code" class="php">&lt;?php

class ClientesController extends Zend_Controller_Action
{

    public function init()
    {
        $this-&gt;initView();
        $this-&gt;view-&gt;baseUrl = $this-&gt;_request-&gt;getBaseUrl();
    }

    public function indexAction()
    {
        Zend_Loader::loadClass('Clientes');
        $c = new Clientes();
        $this-&gt;view-&gt;clientes = $c-&gt;getClientes();

    } // end indexAction()

}

?&gt;
</pre>
<p>El método init nos arroja la variable baseUrl, la cual utilizaremos para la llamada de archivos en nuestra vista, como también tiene la acción index y hace una consulta a nuestra base de datos clientes (getClientes) como lo mencionamos anteriormente y dicha consulta la podremos ver en nuestra vista.</p>
<p>Aquí quedaría nuestra vista (application/views/scripts/clientes/index.phtml):</p>
<pre name="code" class="xhtml">&lt;script type="text/javascript" language="javascript" src="&lt;?php echo $this-&gt;baseUrl;?&gt;/public/scripts/jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" language="javascript" src="&lt;?php echo $this-&gt;baseUrl;?&gt;/public/scripts/guardarCliente.js"&gt;&lt;/script&gt;
&lt;form action="" name="form1" id="form1" method="post"&gt;
    &lt;label&gt;Cliente: &lt;/label&gt;&lt;div id="div_cliente"&gt;
        &lt;select name="cliente" id="cliente"&gt;
            &lt;?php foreach ($this-&gt;clientes as $cliente) : ?&gt;
            &lt;option value="&lt;?php echo $cliente-&gt;id_cliente; ?&gt;"&gt;&lt;?php echo $cliente-&gt;cliente; ?&gt;&lt;/option&gt;
            &lt;?php endforeach; ?&gt;
        &lt;/select&gt;
    &lt;/div&gt;
&lt;/form&gt;

&lt;div id="form_ajax"&gt;
    &lt;form name="guardar_cliente"&gt;
        &lt;p&gt;Cliente:&lt;/p&gt;
        &lt;input type="text" name="nombre_cliente" id="nombre_cliente" value="" /&gt;
        &lt;input type="submit" name="submit" value="Guardar" id="guardarCliente" /&gt;
    &lt;/form&gt;
&lt;/div&gt;
</pre>
<p>En el código anterior hemos agregado la libreria de JQuery que la puedes descargar de Aquí y además el archivo agregarCliente que se encargará de hacer la petición AJAX del guardado del cliente. Este archivo quedaría como lo siguiente (public/scripts/agregarCliente.js):</p>
<pre name="code" class="javascript">$(function() {

    // bloqueamos la tecla enter para que no recargue la página
    $('#form_ajax').bind('keypress', function(e) {
        if (e.keyCode == 13) return false;
    });

    $('#guardarCliente').click(function() {

        var nombre_cliente = $('#nombre_cliente').val();
        var baseUrl = '/prueba';
        var dataString = 'nombre_cliente=' + nombre_cliente;

        $.ajax(
        {
            async: true,
            dataType: 'html',
            type: 'POST',
            contentType: 'application/x-www-form-urlencoded',
            url: baseUrl + '/clientes/guardar-cliente/',
            data: dataString,
            beforeSend: function(data){
                    $('#div_cliente').html('&lt;label&gt;Cargando...&lt;/label&gt;');
            },
            success: function(requestData){
                    $('#div_cliente').html(requestData);
            },
            error: function(requestData, strError, strTipoError){
                    alert('Error ' + strTipoError +': ' + strError);
            },
            complete: function(requestData, exito){
            }
        });

        $('#nombre_cliente').val('');
        return false;
    });
});
</pre>
<p>Ten en cuenta el atributo url de $.ajax ( url: baseUrl + &#8216;/clientes/guardar-cliente/&#8217;) ya que es en donde se ejecuta el script del lado del servidor (PHP) que guardará finalmente nuestro cliente.<br />
La variable baseUrl de nuestro archivo javascript igualmente hace referencia al directorio en el que se encuentra nuestro sistema dentro de nuestro servidor web.</p>
<p>Por último volvemos a modificar nuestro controlador, agregando la acción guardar-cliente y nuestro archivo application/controllers/ClientesController.php será el siguiente:</p>
<pre name="code" class="php">&lt;?php

class ClientesController extends Zend_Controller_Action
{

    public function init()
    {
        $this-&gt;initView();
        $this-&gt;view-&gt;baseUrl = $this-&gt;_request-&gt;getBaseUrl();
    }

    public function indexAction()
    {
        Zend_Loader::loadClass('Clientes');
        $c = new Clientes();
        $this-&gt;view-&gt;clientes = $c-&gt;getClientes();

    } // end indexAction()

    public function guardarClienteAction()
    {
    if ($this-&gt;getRequest()-&gt;isXmlHttpRequest()) { //Detectamos si es una llamada AJAX

        $this-&gt;_helper-&gt;viewRenderer-&gt;setNoRender();
        Zend_Loader::loadClass('Clientes');
        $c = new Clientes();

        // agregamos el estado
        $cliente = $this-&gt;_request-&gt;getPost('nombre_cliente');

        $cliente_data = array ('cliente' =&gt; $cliente);
        $c-&gt;insert($cliente_data);

        // consulta de la nueva lista de clientes
        $clientes = $c-&gt;getClientes();
        if (count($clientes) &gt; 0) {

            echo '&lt;select name="cliente" id="clienteo"&gt;';
            foreach($clientes as $cl):
                $selected = '';
                if ($cl-&gt;cliente == $cliente) { $selected = 'selected="selected"'; }
                echo '&lt;option value="'.$cl-&gt;id_cliente.'" '.$selected.'&gt;'.$cl-&gt;cliente.'&lt;/option&gt;';
            endforeach;
            echo '&lt;/select&gt;';

        } // end if (count($clientes) &gt; 0)

     } // end if ($this-&gt;getRequest()-&gt;isXmlHttpRequest())

    } // end guardarClienteAction

}

?&gt;
</pre>
<p>Y listo ya tienes tu modulo clientes el cual te lista los clientes ya existentes y desde la misma página podrás agregar más sin necesidad de recargar la página como lo hace un formulario normal.</p>
<p>Cabe destacar que yo lo realicé con el Zend Framework, pero si se analiza el código es bastante simple y puede aplicarse sin éste, pero eso ya les toca a ustedes hacerlo.</p>
<p>Cualquier aportación o comentario serán bien recibidos <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/03/02/enviar-formulario-sin-recargar-la-pagina-con-zend-framework-y-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Editar enlaces/links del Widget Meta en WordPress 2.9.1</title>
		<link>http://tolerantx.com/2010/01/26/editar-enlaceslinks-del-widget-meta-en-wordpress-2-9-1/</link>
		<comments>http://tolerantx.com/2010/01/26/editar-enlaceslinks-del-widget-meta-en-wordpress-2-9-1/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 02:00:55 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[widget meta]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://tolerantx.com/?p=180</guid>
		<description><![CDATA[Primero que nada la versión del wordpress no necesariamente tiene que ser la mencionada, puede que funcione en versiones anteriores, para ésta fecha la versión más actual es la 2.9.1. Pues bien empecemos, para modificar el widget meta porque por default maneja enlaces que en lo particular no los quiero, vease la siguiente imagen: Primero [...]]]></description>
			<content:encoded><![CDATA[<p>Primero que nada la versión del wordpress no necesariamente tiene que ser la mencionada, puede que funcione en versiones anteriores, para ésta fecha la versión más actual es la 2.9.1.</p>
<p>Pues bien empecemos, para modificar el widget meta porque por default maneja enlaces que en lo particular no los quiero, vease la siguiente imagen:<a href="http://tolerantx.files.wordpress.com/2010/01/11.jpg"><img class="aligncenter size-medium wp-image-196" title="Blog" src="http://tolerantx.files.wordpress.com/2010/01/11.jpg?w=300" alt="" width="300" height="193" /></a></p>
<p><span id="more-180"></span>Primero que nada tendremos que editar el archivo que se encuentra en la ruta wp-includes/default-widgets.php y nos ubicamos por ahí de la línea 295 lo cual verían algo como ésto.<a href="http://tolerantx.files.wordpress.com/2010/01/3.jpg"><img class="aligncenter size-medium wp-image-185" title="Codigo a quitar" src="http://tolerantx.files.wordpress.com/2010/01/3.jpg?w=300" alt="" width="300" height="57" /></a></p>
<p><a href="http://tolerantx.files.wordpress.com/2010/01/4.jpg"><img class="aligncenter size-medium wp-image-186" title="Codigo eliminado" src="http://tolerantx.files.wordpress.com/2010/01/4.jpg?w=300" alt="" width="300" height="40" /></a></p>
<p>Simplemente borramos/editamos los enlaces que no nos gusten y en mi caso quito los tres que marco a continuación para quedar de la siguiente manera.<a href="http://tolerantx.files.wordpress.com/2010/01/5.jpg"><img class="aligncenter size-medium wp-image-187" title="Blog final" src="http://tolerantx.files.wordpress.com/2010/01/5.jpg?w=300" alt="" width="300" height="194" /></a></p>
<p>Y listo, para ello si agregamos el widget a nuestro blog ya no aparecerán esas ligas <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , por cierto también en algunos temas ponen dicho widget por default, si aún haciendo lo anterior no funciona necesitan editar el archivo sidebar.php que se encuentra en la ruta &#8220;wp-content/themes/tu_tema/&#8221; pero eso ya te toca a tí modificarlo <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.roxoroxo.com/wp/2010/01/27/bienvenido/">Roxoroxo</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 366px; width: 1px; height: 1px;">Simplemente</div>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2010/01/26/editar-enlaceslinks-del-widget-meta-en-wordpress-2-9-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paginar resultados con Zend_Paginator</title>
		<link>http://tolerantx.com/2008/09/29/paginar-resultados-con-zend_paginator/</link>
		<comments>http://tolerantx.com/2008/09/29/paginar-resultados-con-zend_paginator/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 04:51:10 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Paginación]]></category>
		<category><![CDATA[Zend Frame]]></category>

		<guid isPermaLink="false">http://blog.tolerantx.com/?p=88</guid>
		<description><![CDATA[Tengo poco incursionando en el Zend Framework y tuve la necesidad, como casi siempre, de paginar las consultas de la base de datos, investigando me di cuenta de que ZF ya cuenta con ésta característica y me puse manos a la obra. Primero que nada el árbol de mi sistema lo tengo de la siguiente [...]]]></description>
			<content:encoded><![CDATA[<p>Tengo poco incursionando en el Zend Framework y tuve la necesidad, como casi siempre, de paginar las consultas de la base de datos, investigando me di cuenta de que ZF ya cuenta con ésta característica y me puse manos a la obra.</p>
<p>Primero que nada el árbol de mi sistema lo tengo de la siguiente manera:<span id="more-111"></span></p>
<ul>
<li>App
<ul>
<li>application
<ul>
<li>controllers</li>
<li>models</li>
<li>views</li>
</ul>
</li>
<li>library
<ul>
<li>Zend</li>
</ul>
</li>
<li>public
<ul>
<li>images</li>
<li>scripts</li>
<li>styles</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Si eres nuevo como yo aquí está una excelente guia para iniciar <a href="http://ajaxcode.net/descargas/Desarrollo_Aplicaciones_ZendFramework.pdf" target="_blank">Desarrolo de aplicaciones con Zend Framework</a> o bien <a href="http://framework.zend.com/docs/screencasts" target="_blank">Multimedia: Tutorial Screencasts</a> (éste último videos en inglés).</p>
<p>Primero cargamos las clases que necesitamos en el Bootstrap (archivo de arranque de configuración):</p>
<p>En mi caso hice una tabla llamada productos donde contiene una columna llamada &#8220;nombre_producto&#8221;, para esto agregamos nuestra tabla productos en la carpeta models/Productos.php con lo siguiente:</p>
<pre name="code" class="php">&lt;?php
class Producto extends Zend_Db_Table
{
	protected $_name = 'productos';
}
?&gt;</pre>
<p>Creamos nuestro controlador en application/controllers/indexController.php y quedaría de la siguiente manera:</p>
<pre name="code" class="php">&lt;?php
class IndexController extends Zend_Controller_Action
{
	public function indexAction()
	{
	Zend_Loader::loadClass('Producto');
	$producto = new Producto();

	// obtenemos la página actual
	$page = $this-&gt;_getParam('page', 1);
	// número de registros a mostrar por página
	$registros_pagina = 20;
	// número máximo de páginas a mostrar en el paginador
	$rango_paginas = 10;

	$productos = $producto-&gt;fetchAll()-&gt;toArray();

	$paginador = Zend_Paginator::factory($productos);
	$paginador-&gt;setItemCountPerPage($registros_pagina)
			  -&gt;setCurrentPageNumber($page)
			  -&gt;setPageRange($rango_paginas);

	$this-&gt;view-&gt;productos = $paginador;
	}
}
?&gt;</pre>
<p>Creamos el archivo en el cual se mostrará nuestra información en application/views/index/index.phtml:</p>
<pre name="code" class="php">&lt;?php
echo $this-&gt;paginationControl($this-&gt;productos,
	'Sliding',
	'index/pagination/pagination_control.phtml');
?&gt;
&lt;table&gt;
&lt;tr&gt;
	&lt;td&gt;Nombre Producto&lt;/td&gt;
&lt;/tr&gt;
&lt;?php foreach($this-&gt;productos as $producto): ?&gt;
&lt;tr&gt;
	&lt;td&gt;&lt;?php echo $producto['nombre_producto']; ?&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;?php endforeach; ?&gt;</pre>
<p>Por último añadimos el pagination control, yo lo coloqué en application/views/index/pagination/pagination_control.phtml, <a href="http://framework.zend.com/manual/en/zend.paginator.usage.html#zend.paginator.usage.rendering.example-controls" target="_blank">aquí</a> puedes encontrar otros dos tipos o bien crear el tuyo propio:</p>
<pre name="code" class="php">&lt;?php
if ($this-&gt;pageCount): ?&gt;
&lt;div class="paginationControl"&gt;
&lt;!-- Previous page link --&gt;
&lt;?php if (isset($this-&gt;previous)): ?&gt;
  &lt;a href="&lt;?php echo $this-&gt;url(array('page'
  	=&gt; $this-&gt;previous)); ?&gt;"&gt;&lt; Previous&lt;/a&gt; | &lt;?php else: ?&gt;
  &lt;span class="disabled"&gt;&lt; Previous&lt;/span&gt; |
&lt;?php endif; ?&gt;

&lt;!-- Numbered page links --&gt;
&lt;?php foreach ($this-&gt;pagesInRange as $page): ?&gt;
  &lt;?php if ($page != $this-&gt;current): ?&gt;
    &lt;a href="&lt;?php echo $this-&gt;url(array('page'
      =&gt; $page)); ?&gt;"&gt;&lt;?php echo $page; ?&gt;&lt;/a&gt; |
  &lt;?php else: ?&gt;
    &lt;?php echo $page; ?&gt; |
  &lt;?php endif; ?&gt;
&lt;?php endforeach; ?&gt;

&lt;!-- Next page link --&gt;
&lt;?php if (isset($this-&gt;next)): ?&gt;
  &lt;a href="&lt;?php echo $this-&gt;url(array('page'
  =&gt; $this-&gt;next)); ?&gt;"&gt;Next &gt;&lt;/a&gt;
&lt;?php else: ?&gt;
  &lt;span class="disabled"&gt;Next &gt;&lt;/span&gt;
&lt;?php endif; ?&gt;
&lt;/div&gt;
&lt;?php endif; ?&gt;</pre>
<p>Ésta entrada la hice basándome en la documentación oficial de <a href="http://framework.zend.com/manual/en/zend.paginator.html" target="_blank">Zend Framework</a>, espero les sea de utilidad <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2008/09/29/paginar-resultados-con-zend_paginator/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Respaldos automáticos en MySQL y Windows</title>
		<link>http://tolerantx.com/2008/07/21/respaldos-automaticos-en-mysql-y-windows/</link>
		<comments>http://tolerantx.com/2008/07/21/respaldos-automaticos-en-mysql-y-windows/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 20:25:44 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[automático]]></category>
		<category><![CDATA[Respaldo]]></category>

		<guid isPermaLink="false">http://blog.tolerantx.com/2008/07/21/respaldos-automaticos-en-mysql-y-windows/</guid>
		<description><![CDATA[Tuve la necesidad de hacer respaldos de forma automática en un servidor web montado en Windows la solución fue hacer un script .bat y éste mandarlo ejecutar con la herramienta de &#8220;Tareas programadas&#8221; El script quedó de la siguiente manera: for /f &#8220;tokens=1-4 delims=/ &#8221; %%a in (&#8216;date/t&#8217;) do ( set dia=%%a set mes=%%b set [...]]]></description>
			<content:encoded><![CDATA[<p>Tuve la necesidad de hacer respaldos de forma automática en un servidor web montado en Windows la solución fue hacer un script .bat y éste mandarlo ejecutar con la herramienta de &#8220;Tareas programadas&#8221;</p>
<p>El script quedó de la siguiente manera: <span id="more-97"></span></p>
<blockquote><p> for /f &#8220;tokens=1-4 delims=/ &#8221; %%a in (&#8216;date/t&#8217;) do (<br />
set dia=%%a<br />
set mes=%%b<br />
set anio=%%c<br />
)<br />
mysqldump -u user -p<em><strong>password</strong> <strong>database_name</strong></em> &gt; respaldo-%dia%-%mes%-%anio%.sql</p></blockquote>
<p>Esto generará un archivo .sql con el nombre &#8220;respaldo-fecha.sql&#8221;.</p>
<p>Este código lo guardas con extensión .bat y lo mandas llamar como decía con las Tareas Programada, esto en <em>Inicio &#8211; Programas &#8211; Accesorios &#8211; Herramientas de Sistema &#8211; Tareas programada. </em></p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2008/07/21/respaldos-automaticos-en-mysql-y-windows/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>PHPEclipse en Ubuntu</title>
		<link>http://tolerantx.com/2008/02/06/phpeclipse-en-ubuntu/</link>
		<comments>http://tolerantx.com/2008/02/06/phpeclipse-en-ubuntu/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 16:16:52 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://tolerantx.wordpress.com/?p=89</guid>
		<description><![CDATA[Como comentaba en el post anterior uso ubuntu en mi lap por lo cual me dispuse a instalar diferentes editores php, como gPHPEdit, Quanta Plus, JEdit, Screem entre muchos otros, pero no más no me terminaban de convencer, al final me he quedado con PHPEclipse, un plugin para eclipse. Al principio puede parecer media turbia [...]]]></description>
			<content:encoded><![CDATA[<p>Como comentaba en el post anterior uso ubuntu en mi lap por lo cual me dispuse a instalar diferentes editores php, como gPHPEdit, Quanta Plus, JEdit, Screem entre muchos otros, pero no más no me terminaban de convencer, al final me he quedado con <a href="http://www.phpeclipse.de/" title="PHPEclipse" target="_blank">PHPEclipse</a>, un plugin para <a href="http://www.eclipse.org" title="Eclipse" target="_blank">eclipse</a>.</p>
<p>Al principio puede parecer media turbia la instalación, pero la realidad es otra.</p>
<p>Ya teniendo instalada correctamente la máquina virtual de Java (incluso se puede instalar con <a href="http://www.getautomatix.com/" target="_blank">automatix</a> para los que no se quieran meter en problemas), procedemos a la instalación de eclipse.<span id="more-89"></span></p>
<ul>
<li>Descargamos el eclipse de <a href="http://www.eclipse.org/downloads/" target="_blank">http://www.eclipse.org/downloads/</a> en nuestro caso el llamado Eclipse IDE for Java Developers<b>.</b></li>
<li>Descomprimimos el archivo, si lo haces desde el Nautilus, click derecho extraer y listo <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Coloca la carpeta descomprimida donde quieras alojar el programa, yo la he puesto en /opt/ (necesitas permisos de root para poder mover la carpeta). Si lo haces en la consola #sudo mv /ruta/del/eclipse /opt/</li>
<li>Descargas el plugin PHPEclipse <a href="http://sourceforge.net/project/showfiles.php?group_id=57621" target="_blank">AQUÍ</a> en mi caso el  phpeclipse-1.1.8</li>
<li>De igual manera que con el eclipse, lo descomprimimos, pero ahora la carpeta que obtenemos al descomprimir el archivo la colocamos en la ruta de plugins de nuestro eclipse, en mi caso en /opt/eclipse/plugins/</li>
<li>Ejecutamos eclipse (doble click) al archivo llamado &#8220;eclipse&#8221; que se encuentra en nuestra ruta de instalación (/opt/eclipse/)</li>
</ul>
<p>Si todo va bien ya tenemos ejecutándose nuestro eclipse, lo siguiente sería terminar de instalar el PHPEclipse, para ello hacemos lo siguiente.</p>
<ul>
<li>Nos dirigimos a menú Help -&gt; Software Updates -&gt; Find and Install &#8230;</li>
<li>Aparecerá una ventana con dos opciones, escogemos &#8220;Search for new feactures to install&#8221; y damos click en Next</li>
<li> Damos click al botón &#8220;New Remote Site &#8230;&#8221;</li>
<li>En la ventana que nos aparece hay dos campos, uno llamado Name y el otro URL. En name ponemos &#8220;PHPEclipse Nightly&#8221; y en URL &#8220;http://update.phpeclipse.net/update/nightly&#8221; (ambos campos sin las comillas)</li>
<li>Click en Next.</li>
<li>Asegurate que esté seleccionada la opción PHPEclipse Nightly y damos click en Finish.</li>
</ul>
<p>Después de instalar nuestro plugin necesitamos activar la perspectiva, para eso hacemos lo siguiente</p>
<ul>
<li>Menu Window -&gt; Open Perspective -&gt; Other -&gt; Select PHP -&gt; Ok.</li>
</ul>
<p>Y listo a disfrutar de nuestro PHPEclipse y a programar <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Por cierto para Windows es prácticamente el mismo procedimiento, no creo que tengas problemas con ello.</p>
<p>Se me olvidaba si tienes instalado un servidor <a href="http://www.apachefriends.org/en/index.html" target="_blank">xampp</a>, PHPEclipse lo integra y así puedes testear tus scripts desde el mismo eclipse sin necesidad de un navegador web <img src='http://tolerantx.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> .</p>
<p>Salu2</p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2008/02/06/phpeclipse-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>De regreso?</title>
		<link>http://tolerantx.com/2007/05/03/de-regreso-2/</link>
		<comments>http://tolerantx.com/2007/05/03/de-regreso-2/#comments</comments>
		<pubDate>Thu, 03 May 2007 15:30:46 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://tolerantx.wordpress.com/2007/05/03/de-regreso-2/</guid>
		<description><![CDATA[He estado algo ausente del blog, bastante diría yo, ya sea por trabajo, hueva o lo que sea. En estos, dias, semanas, aparte de vivir la rutina recibí con gran coraje mi primer robo (ya soy parte de las estadísticas criminales), tuve mi toma de protesta, hasta la instalación del nuevo Ubuntu Feasty Fawn 7.04 [...]]]></description>
			<content:encoded><![CDATA[<p>He estado algo ausente del blog, bastante diría yo, ya sea por trabajo, hueva o lo que sea. En estos, dias, semanas, aparte de vivir la rutina recibí con gran coraje mi primer robo (ya soy parte de las estadísticas criminales), tuve mi toma de protesta, hasta la instalación del nuevo Ubuntu Feasty Fawn 7.04 etc.</p>
<p>Sobre el robo fue el colmo de los colmos, se robaron el stereo de mi auto y mochila, quebraron el cristal del copiloto del auto y se llevaron estos objetos, lo peor de todo es que fue afuera de mi casa, ya no tienen respeto de nada, son unos hijos de la chingada, pero ya ni enojarse es bueno, ojala y les sirva mucho y que les quepa en el culo (perdón por la palabra xD).<span id="more-84"></span></p>
<p>De la toma de protesta la verdad ni quería ir, pero son cosas que se deben de hacer, todo aburrido como era de espararse y la cereza del pastel fue que estuvimos esparando a un fulano que llegó como 40 minutos tarde.</p>
<p>La instalación de Ubuntu no tuvo mayores inconvenientes, como todo buen sistema basado en debian la instalación de paquetes bastante rápida y fácil, el único programa que me dio problemas y no de instalación sino post instalación fue el &#8220;eclipse&#8221; ya que mis programas en Java me arrojaba que necesitaba un paquete extra, en éste caso el paquete libgcj7-awt, todo sea como eso verdad?. <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <font size="-1"> </font></p>
<p>En estos dias subiré las fotos de mi auto todo violado xD <img src='http://tolerantx.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2007/05/03/de-regreso-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Code Search.</title>
		<link>http://tolerantx.com/2006/10/05/google-code-search/</link>
		<comments>http://tolerantx.com/2006/10/05/google-code-search/#comments</comments>
		<pubDate>Thu, 05 Oct 2006 15:16:36 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://tolerantx.wordpress.com/2006/10/05/google-code-search/</guid>
		<description><![CDATA[Google no deja de sorprender a sus usuarios, hoy me he topado con el siguiente servicio que se enfoca en localizar códigos. Algo así como los sitios koders, codefetch, Krugle. Si eres desarrollador de software te servirá. Google Code Search Salu2.]]></description>
			<content:encoded><![CDATA[<p>Google no deja de sorprender a sus usuarios, hoy me he topado con el siguiente servicio que se enfoca en localizar códigos. Algo así como los sitios <a href="http://www.koders.com/" title="Koders" target="_blank">koders</a>, <a href="http://www.codefetch.com/" target="_blank">codefetch</a>, <a href="http://www.krugle.com/" title="Krugle" target="_blank">Krugle</a>.</p>
<p>Si eres desarrollador de software te servirá.  <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p align="center"><a href="http://google.com/codesearch" title="Google Code Search" target="_blank">Google Code Search</a></p>
<p>Salu2.</p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2006/10/05/google-code-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
