Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema ORDER BY

Estas en el tema de Problema ORDER BY en el foro de Mysql en Foros del Web. Buenas tengo un problema que no puedo resolver. La cuestion es que tengo una página la cual muestra el listado de unos productos determinados de ...
  #1 (permalink)  
Antiguo 05/10/2011, 16:02
 
Fecha de Ingreso: octubre-2010
Mensajes: 11
Antigüedad: 13 años, 5 meses
Puntos: 0
Problema ORDER BY

Buenas tengo un problema que no puedo resolver. La cuestion es que tengo una página la cual muestra el listado de unos productos determinados de una tabla. El usuario a traves de un formulario de lista selecciona por que opcion quiere ordenadar la tabla, si por nombre , por precio etc.. y a esa selección le asigno una variable llamada orden, la cual la la coloco en la sentencia orden tal que asi.

SELECT *
FROM productos
WHERE claseProducto = colname
ORDER BY orden ASC


el resultado es que no lo ordena, no hace caso a la variable que le asigno, sabeis la forma de hacer una ordenación de una tabla segun la selección del usuario?.

Gracias
  #2 (permalink)  
Antiguo 05/10/2011, 16:10
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: Problema ORDER BY

Que lenguaje estás utilizando y como le haces llegar esa variable?
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #3 (permalink)  
Antiguo 05/10/2011, 16:25
 
Fecha de Ingreso: octubre-2010
Mensajes: 11
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Problema ORDER BY

En php.

Y la variable se la hago llegar

$colname_listadoproductos = "-1";
if (isset($_GET['clase'])) {
$colname_listadoproductos = $_GET['clase'];
}
$orden_listadoproductos = "nombreProducto";
if (isset($_GET['orden'])) {
$orden_listadoproductos = $_GET['orden'];
}
mysql_select_db($database_WebDerbent, $WebDerbent);
$query_listadoproductos = sprintf("SELECT * FROM productos WHERE claseProducto = %s ORDER BY %s ASC", GetSQLValueString($colname_listadoproductos, "text"),GetSQLValueString("%" . $orden_listadoproductos, "text"));
$listadoproductos = mysql_query($query_listadoproductos, $WebDerbent) or die(mysql_error());
$row_listadoproductos = mysql_fetch_assoc($listadoproductos);
$totalRows_listadoproductos = mysql_num_rows($listadoproductos);$colname_listado productos = "-1";



...
..
..
<body>
<option value="ListadoProductos.php?clase=<?php echo $row_listadoproductos['claseProducto']; ?>?orden=nombreFabricante">fabricante</option>

Última edición por picpoc; 05/10/2011 a las 16:48
  #4 (permalink)  
Antiguo 06/10/2011, 15:01
 
Fecha de Ingreso: octubre-2010
Mensajes: 11
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Problema ORDER BY

Alguien sabe como solucionar esto.
  #5 (permalink)  
Antiguo 06/10/2011, 17:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema ORDER BY

Partamos de la base que el ORDER BY debe estar indicando el nombre de una columna, su posición en el SELECT, o el nombre de un alias dado a una columna.
No puede usarse nada que no sea alguna de esas tres cosas.

¿Qué es lo que le estás poniendo en la variable?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 06/10/2011, 18:18
 
Fecha de Ingreso: octubre-2010
Mensajes: 11
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Problema ORDER BY

Pues le estoy pasando el nombre de la columna por la cual la quiero ordenar, pero no hace caso a esa variable.
  #7 (permalink)  
Antiguo 06/10/2011, 20:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema ORDER BY

Entonces haz un echo con la sentencia antes de enviarla y posteanos lo que te contiene esa consulta realmente.
No se puede analizar el problema de lógica de ordenamiento sobre la base de un código que depende de variables. Hay que revisar la consulta real que MySQL recibe.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 07/10/2011, 06:19
 
Fecha de Ingreso: octubre-2010
Mensajes: 11
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Problema ORDER BY

A ver , lo he resuelto poniendo en vez de a la variable enviarle el nombre de la columna, le envio la posición de la columna en la tabla y de esta forma si que funciona pero con el nombre de la columna no me funciona.
  #9 (permalink)  
Antiguo 07/10/2011, 07:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema ORDER BY

Es posible que estuvieses enviando incorrectamente el nombre, sea por la forma de escribirlo o sea porque lo envías en mayusculas o minusiculas, y la base está en un servidor Linux. Por eso te decía que postearas un echo, para ver qué estaba llegandole realmente a MySQL.
Como sea, la opción elegida es buena.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: order, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:14.