lunes, septiembre 29, 2008

Paginar resultados con Zend_Paginator

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 manera:
  • App

    • application

      • controllers
      • models
      • views
    • library

      • Zend
    • public

      • images
      • scripts
      • styles
Si eres nuevo como yo aquí está una excelente guia para iniciar Desarrolo de aplicaciones con Zend Framework o bien Multimedia: Tutorial Screencasts (éste último videos en inglés).
Primero cargamos las clases que necesitamos en el Bootstrap (archivo de arranque de configuración):
En mi caso hice una tabla llamada productos donde contiene una columna llamada “nombre_producto”, para esto agregamos nuestra tabla productos en la carpeta models/Productos.php con lo siguiente:
<?php 
class Producto extends Zend_Db_Table 
{
 protected $_name = 'productos'; 
}
?>
Creamos nuestro controlador en application/controllers/indexController.php y quedaría de la siguiente manera:
<?php
class IndexController extends Zend_Controller_Action 
{
 public function indexAction()
 {
  Zend_Loader::loadClass('Producto');
  $producto = new Producto();

  // obtenemos la página actual
  $page = $this->_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->fetchAll()->toArray();

  $paginador = Zend_Paginator::factory($productos);
  $paginador->setItemCountPerPage($registros_pagina)
         ->setCurrentPageNumber($page)
         ->setPageRange($rango_paginas);
  
  $this->view->productos = $paginador;
 }
}
?>
Creamos el archivo en el cual se mostrará nuestra información en application/views/index/index.phtml:
<?php
echo $this->paginationControl($this->productos,'Sliding', 
'index/pagination/pagination_control.phtml');
?>
<table>
 <tr>
  <td>Nombre Producto</td>
 </tr>
 <?php foreach($this->productos as $producto): ?>
 <tr>
  <td><?php echo $producto['nombre_producto']; ?></td>
 </tr>
</table>  <?php endforeach; ?>
Por último añadimos el pagination control, yo lo coloqué en application/views/index/pagination/pagination_control.phtml, aquí puedes encontrar otros dos tipos o bien crear el tuyo propio:
<?php
if ($this->pageCount): ?>
 <div class="paginationControl">
  <!-- Previous page link -->
  <?php if (isset($this->previous)): ?>
  <a href="<?php echo $this->url(array('page' => $this->previous)); ?>">< Previous</a> | 
  <?php else: ?> <span class="disabled">< Previous</span> | 
  <?php endif; ?>

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

  
  <!-- Next page link -->
  <?php if (isset($this->next)): ?>
   <a href="<?php echo $this->url(array('page' => $this->next)); ?>">Next ></a>
  <?php else: ?>
   <span class="disabled">Next ></span>
  <?php endif; ?>
 </div>
<?php endif; ?>
Ésta entrada la hice basándome en la documentación oficial de Zend Framework, espero les sea de utilidad :-).

lunes, julio 21, 2008

Respaldos automáticos en MySQL y Windows

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 "Tareas programadas"

El script quedó de la siguiente manera:

domingo, julio 20, 2008

¿Boletazo en celular telcel?

Pues soy uno más que le ha llegado este ya de moda fraude por celular, primeramente me marcaron del siguiente número 553-443-5649 obviamente luego luego colgaron, como verificando si estaba prendido o no el celular. Al poco rato me llegó el tan afanado mensaje, lo adjunto tal cual :)
 *n#BOLETAZO URGENTE:SU. LINEA SALIO GANADORA DE 3 MAGNIFICOS PREMIOS.COMUNIQUESE A SEGOB. AL 0456621041650 CON EL LIC. Oscar Curiel Mora.   S0626-2008..

jueves, junio 05, 2008

Disco Open Solaris 2008.05

Bueno no recuerdo realmente cuándo (no hace mucho) pero pedí mis discos gratis de open solaris, y hoy me han llegado :), aquí les adjunto una imagen de éste, ahora solo falta hacerme un tiempo para instalarlo, o de menos hacer el intento a ver cómo me va ;)

Open Solaris

sábado, mayo 17, 2008

Mi nueva chancla

Bueno con la novedad de que ya casi un mes que vendí mi antiguo auto, el chevy, y después de estar buscando el sustituto de éste, hace ya casi 2 semanas adquirí un ford fiesta trend, me he tardado un poco por cuestiones de trabajo, tiempo etc. Y como tenía que darle un poco de personalización lo polaricé, le recorté la palanca de velocidades ya que la original está muy alta y sentía que estaba manejando un camión.

Adjunto un par de imagenes, y si quieren ver más fotos del auto visiten el ALBUM AQUÍ.



lunes, febrero 25, 2008

Pachuca vs Cruz Azul

Aquí les comparto parte del partido pachuca vs cruz azul, que de paso hay que decir que yo lo vi en vivo xD

[youtube]http://www.youtube.com/watch?v=0M9I3UNFNCo[/youtube]

Mudamos el blog

Pues como lo leen, el blog se muda a http://blog.tolerantx.com :)

miércoles, febrero 06, 2008

PHPEclipse en Ubuntu

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 la instalación, pero la realidad es otra.

Ya teniendo instalada correctamente la máquina virtual de Java (incluso se puede instalar con automatix para los que no se quieran meter en problemas), procedemos a la instalación de eclipse.