Foros del Web » Programando para Internet » PHP »

Paginacion SQL

Estas en el tema de Paginacion SQL en el foro de PHP en Foros del Web. Buenas tarde, colegas.. mi necesidad es la siguiente existe alguna funcion en sql server que me permita hacer algo como el LIMIT en mysql, necesito ...
  #1 (permalink)  
Antiguo 27/09/2005, 16:09
Avatar de jmqc  
Fecha de Ingreso: noviembre-2004
Ubicación: Venezuela
Mensajes: 353
Antigüedad: 13 años
Puntos: 1
Paginacion SQL

Buenas tarde, colegas.. mi necesidad es la siguiente existe alguna funcion en sql server que me permita hacer algo como el LIMIT en mysql, necesito hacer una paginacion y no encuentro dicha funcion he intentado con el TOP de sql pero me trae siempre los primero que ponga no los segundos. Desde ya muchas gracias por sus colaboraciones.. Saludos
__________________
Ante el desconocimiento ni entendimiento de las cosas decimos que los demás estan locos.

José Quintero. Saludos.
:adios:
  #2 (permalink)  
Antiguo 27/09/2005, 18:51
 
Fecha de Ingreso: febrero-2005
Mensajes: 8
Antigüedad: 12 años, 10 meses
Puntos: 0
Paginacion sql server

Hola

Estoy en el mismo dilema que tu, pero creo que tengo una nocion o idea para la solucion espero que te sirva bastante, este codigo esta sacado del phpbb por si te funciona, me avisas ok?

Código PHP:
<? //para indicar donde esta la pagina inicial de la paginacion
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
$start 1;
// arreglo para guardar los datos requeridos en la consulta 
$topic_rowset = array();
//parametro para saber cuantos registros debemos mostrar en cada pagina
$topics_per_page=10;
// la consulta debe ser similar a mysql
$query "SELECT idforo, nombreforo, tipoforo, descripcionforo FROM  foro WHERE estado = 'A' AND tipoforo = 2 ORDER BY idforo asc LIMIT ".$start.", ".$topics_per_page;
// de esta condicion sacamos los valores de limit por medio de expresiones regulares
    
if( preg_match('#^SELECT(.*?)(LIMIT ([0-9]+)[, ]*([0-9]+)*)?$#s'$query$limits) )
            {
                
//oobtenemos la primera parte del query hasta el Limit
                
$query $limits[1];
//preguntamo sobre la existencia de la cadena LIMIT
                
if( !empty($limits[2]) )
                {
                
// sacamos el numero inicial de fila
                    
$row_offset = ( $limits[4] ) ? $limits[3] : "";
                    
//numero de filas a mostrar
                    
$num_rows = ( $limits[4] ) ? $limits[4] : $limits[3];
                
// adicionamos el Select top para que nos saque los n primeros registros
                    
$query "SELECT TOP " . ( $row_offset $num_rows ) . $query;
                }
            }
//ejecutamos la consulta
                
$result1 mssql_query($query);

            if( 
$row_offset )
                    {
                        
//nos posesionamos sobre la fila que empezaremos a mostrar
                        
mssql_data_seek($result1$row_offset);
                        
                    }        
/// indica el numero total de los registros que mostraremos 
$total_topics 0;
//cargamos el arreglo envase a las consulta, aqui siempre toma a partir del $row_offset hacia adelante
while( $row1 mssql_fetch_array($result1))
{

    
$topic_rowset[] = $row1;
    
$total_topics++;

    
}
//desplegamos de la siguiente manera en nuestra pagina
echo     echo " <table>";
    for(
$i 0$i $total_topics$i++)
    {
        echo 
"<tr><td>";
        echo 
$topic_rowset[$i]['idforo'];
        echo 
"</tr></td>";
    }
echo 
"</table>";



//funcion para generar la barra de navegacion 
function generate_pagination($base_url$num_items$per_page$start_item$add_prevnext_text TRUE)
{
    global 
$lang;

    
$total_pages ceil($num_items/$per_page);

    if ( 
$total_pages == )
    {
        return 
'';
    }

    
$on_page floor($start_item $per_page) + 1;

    
$page_string '';
    if ( 
$total_pages 10 )
    {
        
$init_page_max = ( $total_pages ) ? $total_pages;

        for(
$i 1$i $init_page_max 1$i++)
        {
            
$page_string .= ( $i == $on_page ) ? '<b>' $i '</b>' '<a href="' append_sid($base_url "&amp;start=" . ( ( $i ) * $per_page ) ) . '">' $i '</a>';
            if ( 
$i <  $init_page_max )
            {
                
$page_string .= ", ";
            }
        }

        if ( 
$total_pages )
        {
            if ( 
$on_page 1  && $on_page $total_pages )
            {
                
$page_string .= ( $on_page ) ? ' ... ' ', ';

                
$init_page_min = ( $on_page ) ? $on_page 5;
                
$init_page_max = ( $on_page $total_pages ) ? $on_page $total_pages 4;

                for(
$i $init_page_min 1$i $init_page_max 2$i++)
                {
                    
$page_string .= ($i == $on_page) ? '<b>' $i '</b>' '<a href="' append_sid($base_url "&amp;start=" . ( ( $i ) * $per_page ) ) . '">' $i '</a>';
                    if ( 
$i <  $init_page_max )
                    {
                        
$page_string .= ', ';
                    }
                }

                
$page_string .= ( $on_page $total_pages ) ? ' ... ' ', ';
            }
            else
            {
                
$page_string .= ' ... ';
            }

            for(
$i $total_pages 2$i $total_pages 1$i++)
            {
                
$page_string .= ( $i == $on_page ) ? '<b>' $i '</b>'  '<a href="' append_sid($base_url "&amp;start=" . ( ( $i ) * $per_page ) ) . '">' $i '</a>';
                if( 
$i <  $total_pages )
                {
                    
$page_string .= ", ";
                }
            }
        }
    }
    else
    {
        for(
$i 1$i $total_pages 1$i++)
        {
            
$page_string .= ( $i == $on_page ) ? '<b>' $i '</b>' '<a href="' append_sid($base_url "&amp;start=" . ( ( $i ) * $per_page ) ) . '">' $i '</a>';
            if ( 
$i <  $total_pages )
            {
                
$page_string .= ', ';
            }
        }
    }

    if ( 
$add_prevnext_text )
    {
        if ( 
$on_page )
        {
            
$page_string ' <a href="' append_sid($base_url "&amp;start=" . ( ( $on_page ) * $per_page ) ) . '">' $lang['Previous'] . '</a>&nbsp;&nbsp;' $page_string;
        }

        if ( 
$on_page $total_pages )
        {
            
$page_string .= '&nbsp;&nbsp;<a href="' append_sid($base_url "&amp;start=" . ( $on_page $per_page ) ) . '">' $lang['Next'] . '</a>';
        }

    }

    
$page_string $lang['Goto_page'] . ' ' $page_string;

    return 
$page_string;
}

?>

atte JULIO
  #3 (permalink)  
Antiguo 27/09/2005, 21:05
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 15 años, 9 meses
Puntos: 2
http://jpinedo.webcindario.com/scripts/paginator/


Sera un programa asi el que necesitas?
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 16:01.