Foros del Web » Programando para Internet » PHP »

Orden de valores...

Estas en el tema de Orden de valores... en el foro de PHP en Foros del Web. Intentaré explicarme lo mejor posible para recibir vuestra ayuda... Tengo una consulta a una base de datos en la que extraigo una serie de valores ...
  #1 (permalink)  
Antiguo 10/08/2010, 08:38
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 7 meses
Puntos: 5
Pregunta Orden de valores...

Intentaré explicarme lo mejor posible para recibir vuestra ayuda...

Tengo una consulta a una base de datos en la que extraigo una serie de valores sumados y agrupados por un campo específico:

Código PHP:
$sql "SELECT id, COUNT(id), SUM(visitas), SUM(compras), SUM(ventas) FROM mitabla WHERE tienda='$tienda' GROUP BY id; 
Esa consulta me trae una tabla más o menos igual a la siguiente:

Código HTML:
|  id  |  R  |  T  |  C  |  A  |
--------------------------
|  12 |  9  |  2  |  5  |  4  |
|  13 |  5  |  0  |  7  |  1  |
|  18 |  4  |  8  |  6  |  0  |
|  20 |  3  |  7  |  5  |  8  |
|  19 |  0  |  3  |  5  |  0  |
--------------------------
Dicha tabla está ordenada básicamente por la columna 'R' de mayor a menor.

Ahora bien, a través de un jQuery (tablesorted), estoy aplicando un orden de la tabla por cada una de las columnas, dependiendo de la que el usuario quiera visualizar.

Todo está bien, la salida de los datos, el jQuery aplicado, etc... Sin embargo, para las columnas T, C y A la salida me falla al dar el orden deseado. He hecho un 'var_dump' de cada salida que provoca el 'SUM(campo)' y veo lo siguiente:

Código PHP:
string(1"2" string(2"0" string(3"8" string(4"7" string(5"3" 
Así, cada vez que quiero ordenar esta columna, me toma el criterio del paréntesis de la 'string' y no el valor entre comillas.

Cómo puedo decirle al código que lea las comillas del array y no el paréntesis del 'string'?

Gracias por vuestra ayuda.
__________________
Andrew :P
  #2 (permalink)  
Antiguo 10/08/2010, 09:02
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Orden de valores...

mmm pero el código para ordenar la tabla lo haces con jquery ?
yo tengo algo parecido y la mejor opción que encontré es usar ajax.. así usas sql para ordenar la tabla y no los order de javascript (que a mi parecer les falta bastante)
saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 11/08/2010, 01:48
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 7 meses
Puntos: 5
Respuesta: Orden de valores...

Si, el orden de la tabla los hago con jQuery (plugin tablesorter). Ahora bien... Si uso SQL para ordenarlos, perdería el sentido cada vez que use la salida del plugin, pues volvería a la jQuery por defecto.

Hay otra manera de listar el contenido por sus valores "rasos", es decir, sin que se anteponga la función 'string()'?

Saludos y gracias.
__________________
Andrew :P
  #4 (permalink)  
Antiguo 11/08/2010, 07:09
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Orden de valores...

depende de que manera escupas el código en el html!.. si lo procesas fácilmente con un parseInt desde javascript o desde php con ctype_digit
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 11/08/2010, 07:49
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 7 meses
Puntos: 5
Respuesta: Orden de valores...

Y otra cosa que realmente no entiendo...

De la misma base de datos traigo un campo con una serie de información que al imprimirla en pantalla a través de un var_dump(), me muestra lo siguiente:

Código PHP:
string(6"450000" string(6"890000" string(6"112000" string(4"2000" string(4"1400" string(3"672" string(3"600" string(3"500" string(3"500" string(3"367" 
Al incluirla en mi jQuery, los datos se me muestran de la siguiente manera:

Cita:
450000
890000
112000
2000
1400
672
600
500
500
367
Si ejecuto la salida a través de la herramienta jQuery, todo funciona de maravilla, pero si le cambio el formato de salida al tipo inglés (450,000 890,000 112,000 ...), el orden no funciona y prima el famoso 'string(n)'.

Acaso, no hay otra manera de poder traer esos datos sin que el 'string()' le preceda?

Saludos...
__________________
Andrew :P
  #6 (permalink)  
Antiguo 11/08/2010, 07:56
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 19 años, 7 meses
Puntos: 13
Respuesta: Orden de valores...

Me parece que te estás haciendo la picha un lio.

Te pongo un ejemplo.
Código PHP:
$Pene "450000"
Ahora $Pene es igual a 450000

Si usas
Código PHP:
var_dump($Pene); 
Obtienes string(6) "450000"
Por qué var_dump hace lo que su propio nombre indica, dumpear el valor de una variable, y en esta incluye el type casting.
Si conoces C o C++ o algun lenguaje de ese tipo, sabrás que las variables se tienen que declarar con el tipo de dato, por ejemplo.
Código PHP:
int Pene 450000 
Es variable es un numero entero.
En PHP, aun que no declares los tipos de datos estas variables SI tienen un tipo de dato, y var_dump te muestra cual es, puedes forzar una conversion del tipo de dato usando el nombre del tipo de dato, asi:
Código PHP:
$Pene "450000";
$Pene = (int)$Pene
Eso te lo convierte de string a numero entero.
Puedes leer más sobre esto aquí:

http://php.net/manual/en/language.ty...e-juggling.php

Resumiendo, que no sé cual es tu problema
  #7 (permalink)  
Antiguo 11/08/2010, 08:25
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 7 meses
Puntos: 5
Respuesta: Orden de valores...

Ok... Gracis por ayudarme a despejar un poco más la duda acerca de lon inputs y outputs en PHP.

Creo que he encontrado el problema y este radica en cómo jQuery maneja los valores.

Para la siguiente cadena:
Cita:
"1,458", "911", "2,850", "459", "2,750", "4,590"
lo más lógico es que 'tablesorted' de jQuery los ordenase de la siguiente manera:
Cita:
459
911
1,458
2,850
2,750
4,590
Sin embargo, la manera de ordenarlos con 'Tablesorted' se basa en las primeras cifras (y no tengo la más mínima idea del por qué?):
Cita:
1,458
2,750
2,850
4,590
459
911
En fin... gracias de cualquier manera... siempre se aprende algo nuevo.

A PREGUNTAR EN OTRO FORO!
__________________
Andrew :P
  #8 (permalink)  
Antiguo 11/08/2010, 08:37
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 7 meses
Puntos: 5
De acuerdo AUTO-Respuesta: Orden de valores...

Vale... Lo he conseguido, gracias a este blog.

Pues para todos los que uséis 'Tablesorter' en vuestros proyectos y tengáis que ordenar valores con un formato específico, deberíais echarle un vistazo a las extensiones que el jQuery dispone. En otras palabras... el formato se debe efectuar modificando los parámetros en el JS y no en PHP....

Saludos y ahora si:
POST RESUELTO!
__________________
Andrew :P
  #9 (permalink)  
Antiguo 11/08/2010, 08:42
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Respuesta: Orden de valores...

yo creo que te lo ordena de esa manera porque es una cadena de texto, si fuese valor numérico lo debería de ordenar como piensas.

saludos.

Editado: llegué tarde
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Etiquetas: orden
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 03:29.