Foros del Web » Programando para Internet » PHP »

Problema con tipos de datos traidos de la bd

Estas en el tema de Problema con tipos de datos traidos de la bd en el foro de PHP en Foros del Web. Hola gente, mi problema es el siguiente: En una tabla estoy gurdando valores, estos pueden ser números o texto, aunque sean número o textos, al ...
  #1 (permalink)  
Antiguo 10/10/2005, 08:53
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 19 años, 5 meses
Puntos: 0
Problema con tipos de datos traidos de la bd

Hola gente, mi problema es el siguiente:
En una tabla estoy gurdando valores, estos pueden ser números o texto, aunque sean número o textos, al final de cuantas son insertados en la bd como VARCHAR.

Mi problema se genera cuando quiero tomar esos datos de la bd, y darles un orden por ejemplo ascendente

Entonces, por ejemplo, cuando muestro por orden los valores 2, 15, 25, Me los muestra en este orden: 15, 2, 25, y eso no es lo que quiero.

Esta es mi query:

Código PHP:
$sqlVls="SELECT * FROM characvls WHERE characvls.CharacId=".$row['CharacId'];
$resultVls=mysql_query($sqlVls) or die("º2º ".mysql_error());
While(
$rowVls=mysql_fetch_array($resultVls)) {
print 
"\n<optionvalue=\"".$row['CharacId'].",".$rowVls['CharacVlsId']."\">".$rowVls['Vls']."</option>\n";

Un simple ORDER BY no me sirve, porque me toma los valores numericos como strings (que lo son).

Alguien me podría decir como arreglar esto sin cambiar el tipo de dato de la tabla?
__________________
ratamaster
  #2 (permalink)  
Antiguo 10/10/2005, 09:41
Avatar de yo12345  
Fecha de Ingreso: mayo-2005
Mensajes: 11
Antigüedad: 18 años, 11 meses
Puntos: 1
Y si loq ue te devuelve la query la guardas en un vector y despues lo vas ordenando ?
  #3 (permalink)  
Antiguo 10/10/2005, 10:04
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
intenta algo con mysql y su funcion de cast

ejemplo:

select cast(tu_campo as SIGNED) as algun_alias, tus_otros_campos from tu_tabla order by el_alias desc
  #4 (permalink)  
Antiguo 10/10/2005, 10:27
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 19 años, 5 meses
Puntos: 0
Vaalegk, eso me funciona parcialmente, porque como escribí, en la tabla tengo también texto (letras), entonces cuando un valor es "blanco" o "negro", la query me lanza 0 como valor.
Existe alguna manera de que en la query me de cuanta cuando aplicarle lo que me dijiste y cuendo no??
__________________
ratamaster
  #5 (permalink)  
Antiguo 10/10/2005, 10:48
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
una pregunta mas, en tu query solo quieres traer los valores que evaluen en este campo como numerico o quieres traerlos todos?.
si los deseas traer todos, los valores que no son numeros, tambien los ordenarias?
  #6 (permalink)  
Antiguo 10/10/2005, 10:53
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 19 años, 5 meses
Puntos: 0
quiero traer todo, sean número o palabras, que ordene de menor a menor ejemplo: 1, 2, 25, 30 o amarillo, azul,naranja, negro
__________________
ratamaster
  #7 (permalink)  
Antiguo 10/10/2005, 11:39
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
bueno, el comportamiento estandard es que en el ordenamiento de strings los numeros van primero, ejemplo si tienes las siguientes vals en la db:
campo:
1
papa
25
rojo
amarillo
verde

un simplie "select campo from table order by camp asc" traeria:
1
25
amarillo
papa
rojo
verde

un "select campo from table order by camp desc"

seria al contrario:
verde
rojo
papa
amarillo
25
1

si lo que quieres es que se ordenen independientemente, es decir que los numeros se ordenen descendente, y las palabras ascendentes, tendras que hacer algo como lo que te sugirio yo12345:
almacenas los resultados en arrays, uno para tus numeros y otro para tus palabras y los sorteas como quieras.
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 23:41.