Foros del Web » Programando para Internet » PHP »

Urgente como puedo ordenar esta tabla

Estas en el tema de Urgente como puedo ordenar esta tabla en el foro de PHP en Foros del Web. Buenas Les explico tengo esta tabla id nombre codigo 1 Activo 1.0.0.0.0 2 Activo Corriente 1.1.0.0.0 3 caja 1.11.0.0.0 4 Caja Chica 1.9.0.0.0 5 Banco ...
  #1 (permalink)  
Antiguo 09/04/2008, 19:26
 
Fecha de Ingreso: abril-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Urgente como puedo ordenar esta tabla

Buenas
Les explico tengo esta tabla

id nombre codigo
1 Activo 1.0.0.0.0
2 Activo Corriente 1.1.0.0.0
3 caja 1.11.0.0.0
4 Caja Chica 1.9.0.0.0
5 Banco 1.10.0.0.0
6 Banco de Credito 1.12.0.0.0

y quiro ordernalos por el campo codigo quedando asi

id nombre codigo
1 Activo 1.0.0.0.0
2 Activo Corriente 1.1.0.0.0
4 Caja Chica 1.9.0.0.0
5 Banco 1.10.0.0.0
3 caja 1.11.0.0.0
6 Banco de Credito 1.12.0.0.0

e intentado ordenarlo pero no me ordena como yo quiero por favor
si pudieran ayudarme les estare muy agradecido
gracias....
  #2 (permalink)  
Antiguo 09/04/2008, 21:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Urgente como puedo ordenar esta tabla

de donde proviene la tabla, un arreglo o consulta?
ya que los datos por si solos no me dicen mucho...

puedes poner tu codigo!!
  #3 (permalink)  
Antiguo 09/04/2008, 21:47
 
Fecha de Ingreso: abril-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Re: Urgente como puedo ordenar esta tabla

ok esta es la consulta que hago
*******************************
$link=mysql_connect("127.0.0.1","root","");
mysql_select_db("prueba",$link);
id=autonumerico;
nombre=varchar;
codigo=varchar;

tengo estos registros en mi tabla

id nombre codigo
1 Activo 1.0.0.0.0
2 Activo Corriente 1.1.0.0.0
3 caja 1.11.0.0.0
4 Caja Chica 1.9.0.0.0
5 Banco 1.10.0.0.0
6 Banco de Credito 1.12.0.0.0

$sql=mysql_query("select id,nombre,codigo from cuenta order by codigo");
echo "<table border=1>";
while($fila=mysql_fetch_array($sql))
{
echo "<tr>";
echo "<td>".$fila["id"]."</td>";
echo "<td>".$fila["nombre"]."</td>";
echo "<td>".$fila["codigo"]."</td>";
echo "</tr>";
}
echo "</table>";

pero con esta consulta condigo este resultado

id nombre codigo
1 Activo 1.0.0.0.0
2 Activo Corriente 1.1.0.0.0
5 Banco 1.10.0.0.0
3 caja 1.11.0.0.0
6 Banco de Credito 1.12.0.0.0
4 Caja Chica 1.9.0.0.0

y lo que quiero mostrar es asi:

id nombre codigo
1 Activo 1.0.0.0.0
2 Activo Corriente 1.1.0.0.0
4 Caja Chica 1.9.0.0.0
5 Banco 1.10.0.0.0
3 caja 1.11.0.0.0
6 Banco de Credito 1.12.0.0.0

no se si me deje entender cualquier sugerencia te estare agradecido
  #4 (permalink)  
Antiguo 09/04/2008, 21:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Urgente como puedo ordenar esta tabla

tiene sentido... solo quedaria como tu quieres si el 1.9 fuese 1.09 ((asi kedaria en orden)) ya que es regla de los decimales... matematicas, algunos sistemas de ordenamiento si manejan punto decimal.... pero pon mucha atencion en tus cifras, es imposible ordenar 1.9 antes que un 1.12 ¿¿se entiende??
  #5 (permalink)  
Antiguo 09/04/2008, 22:19
 
Fecha de Ingreso: abril-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Re: Urgente como puedo ordenar esta tabla

ok, pero entonces como lo ordenaria, o no hay forma de ordenar este campo, si la consulta la capturo en un array()
ejemplo:
$a=array();
function mostrar(&$a)
{
$link=mysql_connect("127.0.0.1","root","");
mysql_select_db("prueba",$link);
$sql=mysql_query("select codigo from cuenta");
while($row=mysql_fetch_array($sql))
{
$a[]=$row;
}
}
mostrar($a);
natsort($a);
echo "<table border=1>";
for ($i=0;$i<count($a);$i++){
$fila=$a[$i];
echo "<tr>";
echo "<td>".$fila["codigo"]."</td>";
echo "</tr>";
}
echo "</table";

esto si me ordena como yo quiero, el problema es como hago para mostrar los demas campos, o si hay alguna forma que pueda hacer lo mismo mediante una consulta, o definitivamente no voy a poder ardenarlo y cambiarlo el 1.9 por el 1.09 para que me pueda ordenarlo
  #6 (permalink)  
Antiguo 09/04/2008, 22:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Urgente como puedo ordenar esta tabla

no es que tengas ke cambiarlo... es ke es LOGICO, ya que son interpretados como floats o algo asa...

y si claro que si existe una manera de ordenar los numeros, siempre y cuandos tus rangos sean validos... osea, seguro que no es un 1.90 ya que sigues siendo superior a 1.12 ... vaya, me explico...

Ahora si quieres un algoritmo que ordene agregando el padding tipo 1.00009 para que funciones con un 1.00012 se puede... claro, no son comparaciones del todo buenas... pues es como tratar con cadenas... vaya, si me permites elaborar algun algoritmo te puedo ayudar... solo ke indikes algunos detalles mas de lo que kieres ke haga tu codigo...
  #7 (permalink)  
Antiguo 09/04/2008, 23:30
 
Fecha de Ingreso: abril-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Re: Urgente como puedo ordenar esta tabla

Gracias paketetrueke, me explico lo que en realidad quiero hacer es un plan de cuentas de contabilidad.
por ejemplo.

Moneda 1=Bolivianos
Moneda 2=Dolares

Codigo | Nombre_cuenta |nivel|Moneda
1.0.0.0.0 | Activo |1 |1
1.1.0.0.0 | Activo Corriente |2 |1
1.1.1.0.0 | Cajas |3 |1
1.1.1.1.0 | Caja Moneda Nacional |4 |1
1.1.1.2.0 | Caja Moneda Extranjera|4 |2
1.1.1.3.0 | Caja Chica |4
............... |
1.1.1.9.0 | nombre9 |4
1.1.1.10.0| nombre10 |4
1.2.0.0.0 | Activo No Corrinte |2
1.2.1.0.0 | nombre_cualquiera |3
1.3.0.0.0 |otro nombre |2
2.0.0.0.0 | Pasivo |1


es esto lo que intento hacer pero no logro poder hacerlo
asi susesivamente
esta es en realidad la tabla cuenta

DROP TABLE IF EXISTS `contasym`.`cuenta`;
CREATE TABLE `contasym`.`cuenta` (
`id_cuenta` int(10) unsigned NOT NULL auto_increment,
`cod_empresa` int(10) unsigned NOT NULL,
`id_moneda` int(10) unsigned NOT NULL,
`id_padre` int(10) unsigned default NULL,
`id_hija` int(10) unsigned default NULL,
`nombre_cuenta` varchar(40) default NULL,
`nivel` tinyint(3) unsigned default NULL,
`tipo` char(1) default NULL,
`codigo` char(10) default NULL,
PRIMARY KEY (`id_cuenta`),
KEY `cuenta_FKIndex1` (`id_moneda`),
KEY `cuenta_FKIndex3` (`cod_empresa`),
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;

No se si tienes alguna idea al respecto a como poder hacerlo, el campo codigo es generado con respecto al campo id_padre
por ejemplo id_padre=1

el codigo a generar seria:
1.0.0.0.0
el hijo de ese codigo seria:
1.1.0.0.0

claro pero como me dijiste hace un rato se tendria que generar con dos cifras para que no haya problema con el ordenamiento a la hora de mostrarlo

1.00.00.00.00
1.10.00.00.00
1.20.00.00.00

no se si logre hacerme entender cualquier consulta me lo haces saber y de verdad muchas gracias por tu interes en querer ayudarme..
  #8 (permalink)  
Antiguo 09/04/2008, 23:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Urgente como puedo ordenar esta tabla

lo siento... no alcanzo la lucides para tal magnitud, sin duda... el ordenamiento hecho por PHP se basa en el primer caracter como si fuese una cadena de modo ke con .. 33.41, 44.12, 7.12 quedan en este orden... 3, 4, 7 ((sin importar si son decenas o unidades, etc... )) ahora, si bien es un tratamiento complejo ya que supone

a.b.c.d.e.f
b.c.d.e.f.g
h.i.j.k.l.m.n

es una matriz multidimensional, sin importar el tipo de contenido... podria aconsejar ((en forma de reto)) transformar este patron en dicha tabla, pero es muuuyy inconcebible para mi... ayuda?

por lo mientras, disculpa... fue mucho interes de parte mio ((abri la boca y me cupo el codo)) gracias!
  #9 (permalink)  
Antiguo 10/04/2008, 00:15
 
Fecha de Ingreso: abril-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Re: Urgente como puedo ordenar esta tabla

OK muchisimas gracias por tomar interes al tema, voy a tener en cuenta tu consejo hasta una proxima oportunida

saludos.....

bye
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 18:16.