Archive for diciembre, 2010

msql siguiente y previo

Un problema muy común es generar una serie de registros y para luego mostrarlos en un front end, estos registros pueden ser una tabla con imagens, usuarios productos, etc. El problema consiste en que una vez que mostramos uno de estos productos queremos agregar dos botones uno para ver el registro siguiente y otro para el anterior. y uno diria bueno todo bien hago una consulta preguntado cual es el id proximo mas grande en el caso de estar buscando el siguiente registro de la siguiente forma:

1
2
3
SELECT field1
FROM tabla
WHERE id = ($idActual + 1)

Y el anterior seria lo mismo

1
2
3
      SELECT campo
      FROM tabla
      WHERE id = ($idActual - 1)

Hasta Acá todo bien , el problema surge cuando eliminamos un registro y nuestros id salta. por ejemplo eliminamos el registro 26 y nuestro registro actual es el 27. mysql no va a encontrar el registro numero 26 ($idActual – 1) y va a devolver una fila vacía.

La solución es bien simple:
En vez de usar el operador = para encontrar el id exacto que estamos buscando y luego sustraerle uno, lo que vamos a hacer es seleccionar todos los registros menores a nuestro registro actual usando el operador < y limitando el resultado a uno. De forma que para encontrar el próximo menor nos quedaría de la siguiente manera:

1
2
3
4
5
SELECT campo
      FROM tabla
      WHERE ID < $idActual
      ORDER BY id DESC
      LIMIT 1

y para el registro mayor:

1
2
3
4
5
SELECT campo
      FROM tabla
      WHERE ID > $idActual
      ORDER BY id ASC
      LIMIT 1

Espero que les sea útil.

formularios en pasos

Muchas veces los formularios de resgitro pueden ser intimidantes con la cantidad de campos que no piden, y como desarolladores y fanacticos de la usabilidad siempre intentamos brindar una mejor experiencia de usuario. Y para evitar esa apabullante sensación a nuestro usuario lo que podemos hacer es un formularios por pasos donde primero le pidamos dos cosas y si estan bien sigamos con otras tres, todas distribuidas coherentemente tipo: datos de usuario email, usuario y contraseña; luego datos de contacto, direccion y telefonos, y luego extras.
Para con HTML y Javascript he econtrado un plugin de JQuery muy bueno llamado stepy pueden bajarlo y ver una demo en: http://www.wbotelhos.com/stepy/