Tengo un problema con un script y les pido su ayuda.
Resulta que hago 4 consultas como esta, una para cada $piz_id
Código PHP:
$sql="
SELECT
ir.soporte_pizarron_id AS piz_id,
ir.interaccion_mensaje_oportunidad_id AS op_id,
op.oportunidad_pizarron_producto AS producto,
ir.num_mensajes_p AS men_p,
ir.num_mensajes_a AS men_a,
ir.num_mensajes_i AS men_i,
(ir.num_mensajes_a + ir.num_mensajes_p + ir.num_mensajes_i) AS total
FROM inter_res AS ir
LEFT JOIN opor_piz AS op
ON op.oportunidad_pizarron_id=ir.interaccion_mensaje_oportunidad_id
WHERE
ir.soporte_pizarron_id=".$piz_id." AND
ir.num_mensajes_p >0
ORDER BY ir.num_mensajes_p DESC
";
el número de filas es variable, y hay consultas que generan más de 4000 resultados, así que debo de paginar el array ya ordenado.
estaba probando con la función array_chunk() para dividir el array entre el número de páginas.
En este caso, el total de los registros en mi array $filas es 30. el número de registros que debo mostrar por página es de 10, así que el array_chunk() me devuelve 3 arrays...uno para cada página.
Código PHP:
foreach ($filas as $llave => $fila) //preparo el array para el multisort
{
$pizarron[$llave] = $fila['pizarron'];
$oportunidad[$llave] = $fila['oportunidad'];
$producto[$llave] = $fila['producto'];
$men_p[$llave] = $fila['men_p'];
$men_a[$llave] = $fila['men_a'];
$men_i[$llave] = $fila['men_i'];
$total[$llave] = $fila['total'];
}
array_multisort($men_p,SORT_DESC,$men_a,SORT_DESC,$men_i,SORT_DESC,$producto,SORT_DESC,$pizarron,SORT_DESC,$oportunidad,SORT_DESC,$total,SORT_DESC, $filas); //ordeno el array
$por_pagina = 10; // resultados por página
$num_filas = count($filas);// total de resultados ( 30 )
$total_pag = ceil(($num_filas/$por_pagina));//número de páginas ( 3 )
$filas_chunked = array_chunk($filas,$por_pagina); //3 arrays devueltos
if($_GET['pagina']>=2) /*con esto trato de determinar el array a mostrar (de entre los que resulten de array_chunk() ) de acuerdo al número de página solicitado por el usuario */
{
$num_pagina = $_GET['pagina'] -1; /* si el num de pág. es 2, muestro $filas_chunked[1], etc; */
}
else
{
$num_pagina = 0; /*si el num de pág. vale 1 o nada, muestro el primer trozo */
}
//hago el bucle para mostrar los resultados
for ($i = 0; $i < count($filas_chunked[$num_pagina]); $i++ )
{
echo $pizarron[$i] . " " . $oportunidad[$i]; //etc
}
Necesito poder 'paginar' mi array $filas una vez que lo ordene con array_multisort()...
Alguien puede ayudarme ???
![Golpeado](http://static.forosdelweb.com/fdwtheme/images/smilies/pelea.png)
De antemano se los agradezco.
Hasta pronto.