Foros del Web » Programando para Internet » PHP »

Problemas con COMBINACIÓN DE ARREGLOS y KSORT

Estas en el tema de Problemas con COMBINACIÓN DE ARREGLOS y KSORT en el foro de PHP en Foros del Web. Hola, Tengo un problemita vean les explico: Estoy elaborando un documento PDF desde php y aclaro que cuando diga TABLA, me refiero a la tabla ...
  #1 (permalink)  
Antiguo 24/12/2007, 13:15
Avatar de joseda_r  
Fecha de Ingreso: diciembre-2007
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 0
Problemas con COMBINACIÓN DE ARREGLOS y KSORT

Hola, Tengo un problemita vean les explico:

Estoy elaborando un documento PDF desde php y aclaro que cuando diga TABLA, me refiero a la tabla donde muestro los datos de la BD en el PDF.

Tengo un arreglo $row que es extraído de la BD y los voy a mostrar en una TABLA de 5 columnas ($numero,$tecnologia,$etapa_proyecto,$descripcion, $estado_actual) y tantas filas como registros hayan.
El tamaño de cada fila se ajusta a la celda que tenga la cadena mas larga en esa fila. Es decir las alturas de las filas de la TABLA son de diferentes tamaños.
Los datos son extraidos de la base de datos a las filas en orden como estaban en las tablas de la BD. Yo deseo que esos registros se muestren en la TABLA en el orden ascendente del tamaño de las filas.

Supongamos que los datos son extraidos en los tamaños: 45, 5,9,3
y yo quiero que los datos los imprima en este orden del tamaño: 3, 5, 9, 45

Yo determino los tamaños de las filas contando los caracteres de la cadena mas larga dentro de esa fila.

El codigo (datos mostrados en el orden que son extraídos de la BD):

$psei=0;
for($c=1;$c<=5;$c++)
while($row = mysql_fetch_array($result))
{
$psei++;
$numero[$psei]=$psei;
$tecnologia[$psei]=str_replace('.','',$row["nb_proyecto"]);
$etapa_proyecto[$psei]=$row["tx_status"]."\n".' ('.str_replace('.',',',$row["pc_avance_proyecto"]).' %)';
$descripcion[$psei]=poner_punto_final($row["tx_alcance"]).' (Participantes: '.poner_punto_final($row["nb_participantes"]).' Responsable: '.$row["nb_nombre"]." ".sin_punto_final($row["nb_apellido"]).')';
$estado_actual[$psei]=poner_punto_final($row["tx_situacion_actual"])."\n".'IMPACTO: '.poner_punto_final($row["tx_impacto"]);

//El tamaño de las filas los tengo en un arreglo $key
$key[$psei]=max(strlen($descripcion[$psei]),strlen($estado_actual[$psei]));
}
//Muestro la tabla completa
for($i=1;$i<=$psei;$i++)
{
$values=array($numero[$i],$tecnologia[$i],$etapa_proyecto[$i],$descripcion[$i],$estado_actual[$i])
$pdf->Row($values);
}
---------Aqui termina---------

He pensado en tener 2 arreglos: $key y $values (los valores son los arreglos de 5 columnas).
Quiero combinarlos de manera que los indices sean los tamaños de filas $key y los valores sean los arreglos de 5 columnas $values:
$filas = array_combine($key,$values);
Y ordeno el arreglo combinado en orden ascendente
ksort($filas);

Se que me falta estructurarlo bien, por eso necesito q me ayuden a hacerlo... Se los agradezco.

Última edición por joseda_r; 24/12/2007 a las 19:06 Razón: modificar el tema
  #2 (permalink)  
Antiguo 24/12/2007, 23:57
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 18 años, 9 meses
Puntos: 3
Re: Problemas con COMBINACIÓN DE ARREGLOS y KSORT

aun no comprendo que deseas, yo hice algo parecido como proyecto de universidad, y por ejemplo emulaba un wordwrap para q' se acomodara automaticamente en las celas y rompiera las filas justo cuando llegara al limite y se acomodara en la sig. linea, eso lo hice con fpdf y una class que genere yo, aun no comprnedo bien tu problema, si lo defines un poco mejor quisas obtengas mas ayudas
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #3 (permalink)  
Antiguo 25/12/2007, 21:35
Avatar de joseda_r  
Fecha de Ingreso: diciembre-2007
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Problemas con COMBINACIÓN DE ARREGLOS y KSORT

Supongamos que los datos son extraidos en mi tabla en estas alturas de filas: 45,60,25,97,5 (5 registros) uno debajo del otro, y la altura de cada hoja nueva PDF es 100. Esto quiere decir que los registros se veran en las siguientes hojas:

1era hoja -> registro # 1 (No pueden ir por ej. 45 y 60 porque 45+60>100)
2da hoja -> registro # 2 y 3
3era hoja -> registro # 4
4ta hoja -> registro # 5

Esto se puede optimizar para que aparezcan en 3 hojas, si ordenamos las alturas en orden ascendente (5,25,45,60,97), los registros se veran así:

1era hoja -> registro # 1, 2 y 3 (Si pueden ir 5, 25 y 45 porque 5+25+45<100 y cabe en una hoja)

2da hoja -> registro # 4
3era hoja -> registro # 5

Otra manera de explicarme es asi:

Mi tabla es esta:
---------------------------------------------------------


---------------------------------------------------------

---------------------------------------------------------
---------------------------------------------------------

y yo la quiero así:
---------------------------------------------------------
---------------------------------------------------------

---------------------------------------------------------


---------------------------------------------------------

La tabla que genero la tome de un script del portal FPDF, pero no me ordena las alturas de las filas en orden ascendente y es lo que quiero como explique ahorita.
Esto se puede hacer de varias formas:
*Modificando la clase FPDF que descargue del portal
*Ordenando el arreglo que me traigo de la consulta haciendo uso del conteo de caracteres de las columnas, combinando 2 arreglos y ordenarlo por Ksort (ascendente) y utilizar este arreglo para q me genere la tabla que quiero (con las alturas de las filas en orden ascendente).

Última edición por joseda_r; 25/12/2007 a las 21:41
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 22:02.