Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/08/2013, 19:08
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: duda con sort de bd

Excelente, la iniciativa deja buenos resultados!

Sólo un comentario, si 'sort' no fue proporcionada en GET seguramente obtendrás un mensaje de error con ese if($_GET['sort'] == NULL) porque no puedes comparar una variable (o índice de array) no definida.

Te sugiero usar asignación ternaria, que es como un if, pero en una sola línea, y realizando la comparación de forma adecuada:

Código PHP:
Ver original
  1. // Con if normal
  2. (if(empty($_GET['sort'])) {
  3.      // Empty devuelve verdadero si la variable (o índice):
  4.      //  No está definida, su valor es null, cero, false o cadena vacía
  5.      $order = 'ID';
  6. } else {
  7.      $order = strtoupper($_GET['sort']);
  8. }
  9.  
  10. // Con asignación ternaria:
  11. $order = (empty($_GET['sort'])) ? 'ID' : strtoupper($_GET['sort']);

Ahora, la cuestión de seguridad es muy fácil de resolver creando un array con los campos disponibles para ordenar, ejemplo:

Código PHP:
Ver original
  1. $campos = array('ID', 'NOMBRE', 'CATEGORIA', 'ETC');
  2.  
  3. // Defines el orden:
  4. $order = (empty($_GET['sort'])) ? 'ID' : strtoupper($_GET['sort']);
  5.  
  6. // Haces una validación
  7. if(!in_array($order, $campos)) {
  8.        // El campo para ordenar no es válido
  9.        // Aquí puedes generar un mensaje de error
  10.        // O simplemente asignar el campo por default
  11.        $order = 'ID';
  12. }

Lo del ASC o DESC es mucho más sencillo si adaptas lo mismo que hagas para el orden.
__________________
- León, Guanajuato
- GV-Foto